Steekproef in Access

Status
Niet open voor verdere reacties.

cello249

Gebruiker
Lid geworden
1 jul 2009
Berichten
14
Ik heb een vraag:
Ik maak gebruik van een database waarin meerdere collega werken. Zij werken aan verschillende producten. Zij geven in de database aan of een product is afgehandeld.

Nu willen wij, per maand, als kwaliteitscontrole een steekproef van 20% van een vooraf vastgesteld aantal (maximaal 5) soorten product van de afgehandelde items per medewerker uitvoeren.
De kwaliteitscontrole moet de steekproef middels een formulier zichtbaar krijgen en de resultaten moeten ook weer in de database komen te staan.
Mijn idee is dus om eerst de steekproef te selecteren. Vervolgens in een nieuw veld in de oorspronkelijke data base aan te geven dat er een steekproef moet plaatsvinden op dat betreffende item. Het nieuwe formulier selecteert de items op basis van dit nieuwe veld en de resultaten worden vervolgens ook weggeschreven bij het item.

Ik ben dus gestart met een stuk code, waarbij ik op basis:
* van een maandnummer dat ik aangeef.
* van betreffende producten.
* van alle medewerkers selecteer wie aan het product heeft gewerkt.
Dit doe ik met de volgende sql code:

Code:
SELECT [database].Id, [database].product, [database].Afgehandeld, [database].user2, Month([Afgehandeld])
FROM [database], [signalen MOK controle tabel]
WHERE ((([database].product)=[controle_product]) AND ((Month([Afgehandeld]))=[geef de controle maand]))
ORDER BY [datase].user2 DESC;

Ik krijg het echter niet voor elkaar om de steekproef van 20% per medewerker (user2 in de tabel) hieruit te laten selecteren en om het nieuwe veld in de database dat aangeeft dat er een steekproef moet plaatsvinden te vullen met bijvoorbeeld "ja".
Als ik top 20 percent meegeef in de code, krijg ik de top 20% van het totaal en niet de top 20% per medewerker

Kunnen jullie mij helpen? Bijgaand het resultaat van de code.
 

Bijlagen

Ik heb liever (een representatief deel van) de database, want hier kunnen we niks mee. Het is op zich best mogelijk om een steekproef te maken uit een tabel. Ik vraag me overigens af of je opzet wel handig is; je wilt de resultaten van de steekproef opslaan in de producten tabel, maar hoe ga je dat dan doen met een volgende steekproef? Ofwel de nieuwe steekproef overschrijft de oude, en dan ben je de historie kwijt (jouw werkwijze), ofwel je gebruikt een aparte tabel voor de steekproeven en schrijft daar alle data naar toe (met uiteraard een datumveld) zodat je de historie bewaart. Die kan je dan later altijd nog wel een keer opschonen als je ze niet ellenlang wilt bewaren. Maar eerst maar eens de db erbij doen, zodat we écht naar je vraag kunnen kijken.
 
Hoi Octafish,

Allereerst bedankt voor je snelle reactie.
Bijgaand een representatief deel van de database (een klein deel over juni en juli).
Je gaat ervan uit dat het een producten database is, maar dat is niet zo (ik heb de veldnamen aangepast naar product).

De oorspronkelijke database is een "archief" vanuit de "actuele" database worden items weggeschreven op het moment dat het veld Afgehandeld is gevuld. Dus het probleem met het behouden van de historie is niet aan de orde. Je hebt wel gelijk in die zin dat ik de code moet aanpassen dat de items waarbij reeds een steekproef is uitgevoerd, niet meer meegaan in de nieuwe steekproef. Aan de andere kant zullen wij maar 1x per maand een steekproef maken over de items die een datum afgehandeld hebben van een bepaalde maand. Bij deze items wordt dan gevuld dat ze in de steekproef vallen ("Ja"). Daarna wordt de selectie uit de database gemaakt. Deze gevraagde query is dus 1x per maand nodig om de gegevens te selecteren.

Alvast bedankt voor je reactie.
 

Bijlagen

Ik maak gebruik van een database waarin meerdere collega werken. Zij werken aan verschillende producten. Zij geven in de database aan of een product is afgehandeld.
Uit het eerste bericht...
Je gaat ervan uit dat het een producten database is, maar dat is niet zo (ik heb de veldnamen aangepast naar product).
En uit je laatste berichtje... You could have fooled me :).
Er is mij iets niet helemaal duidelijk:
Nu willen wij, per maand, als kwaliteitscontrole een steekproef van 20% van een vooraf vastgesteld aantal (maximaal 5) soorten product van de afgehandelde items per medewerker uitvoeren.
Wat wil je precies zien? van 5 producten (dat zijn zo te zien aan je Excel MOK 5 vaste groepen?) van elke groep 20%, of van de selectie van 5 groepen 20%, waarbij het niet uitmaakt of er uit de ene groep 4 % zit en uit de andere groep 45? Zolang het totaal maar 20% blijft?
 
Hoi OctaFish,

Een steekproef van 20% per functionaris over alle door hem in de betreffende maand afgewerkte producten (uit de 5 groepen).
Dus ik haal uit het gehele bestand eerst alle producten van een maand.
Daarna haal ik uit de producten van die maand 5 gespecificeerde producten waar ik de controle op wil laten uitvoeren.
Tot slot laat ik per functionaris een steekproef van 20% uitvoeren (ongeacht welk van de 5 producten is gemaakt).

Ik hoop dat het duidelijk is verwoord. Wat je in je hoofd hebt, kun je niet zo gemakkelijk op papier krijgen.

Groetjes.
 
Dus het gaat je om 20% per medewerker, en niet 20% per product? In dat geval heb ik mijn voorbeeldje (dat uiteraard thuis ligt) verkeerd gemaakt :). Maar dat maakt niet zoveel uit, hoop ik. Ik heb namelijk eerst een top 20% gemaakt per product
Volgens mij kom je met deze query een heel eind....
PHP:
SELECT Database.Functionaris, Database.Naam, Database.Id, Database.Product
FROM [Database]
WHERE (((Database.Id) In (SELECT TOP 20 PERCENT Id FROM [Database] As Dupe WHERE Dupe.Functionaris = Database.Functionaris 
AND Database.Product In (237,737,748,775,776) ORDER BY Rnd(Int(Now()*[Dupe].[ID])-Now()*[Dupe].[ID]))))
ORDER BY Database.Functionaris;

Het is niet de snelste query vanwege de subquery, maar hij werkt :).
 
Hoi,

alvast bedankt. ik ga ermee aan de slag. als het is gelukt laat ik het weten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan