Nieuwe tabellen, gegevens uit oude tabel gebruiken en aanvullen met nieuwe gegevens

Status
Niet open voor verdere reacties.
Oke gaan we doen.
Zit ik nog mert het "probleem" dat ik dus meerdere plasma / sera / etc / etc samples kan hebben van 1 patient

Het mooiste zou zijn als ik de patientID hebt ingevoerd, er gezocht wordt in de tbl_materials hoeveel samples er zijn en dat die velden dan op het formulier te voor schijn komen.

Idee hiervoor
 
Lijkt mij een kwestie van een subformulier. En daarin heb je dan die keuzelijst die de lege plaatsen laat zien, zodat je ze in dat subformulier kunt vullen.
 
Oke nu ben ik heel even de weg kwijt. Enige toelichting op hoe je dit ziet please?
 
Je wilt samples op basis van PatientID wegzetten; daarbij heb je voor elke patiënt één of meer samples. Dat riekt naar een koppeltabel tussen Patiënt en Opslag, bijvoorbeeld [Sample_Opslag]. Hierin koppel je PatientID met OpslagID. En daar maak je een doorlopend subformulier van op een hoofdformulier. In dat subformulier zoek je de lege plekken op m.b.v. de keuzelijstinrichting die ik eerder gaf. Die tabel Opslag bevat dan voor alle 81 vakjes een eigen record. Die tabel kun je makkelijk op voorhand met een procedure vullen met 81 records.
 
Dus even alles op een rijtje te zetten

1. ik moet een tabel maken met de opslag
2. Ik moet een tabel maken met de positie nummers (1 tot 81)
3. ik moet een koppeltabel maken tussen patient en opslag

4. Ik maak een formulier gebaseerd de tabel opslag
5. ik maak een subformulier gebaseerd op de query waarbij de lege positie nummers wordt opgezocht
 
Klinkt als een goed plan! Ik zou de tabel Opslag dus wel vullen met 81 records zodat je eenvoudig kunt filteren op de lege. En als je meer opslagcontainers hebt, zeg 4 containers met 81 plekken, dan wil je natuurlijk ook de container opslaan, en dan is die koppeltabel weer nodig.
 
Oke dat klinkt anders dan ik had bedacht. Welke gegevens zet ik neer in de tabel opslag? Want ik denk dat ik daar een ander idee over hebt dan dat jij voor ogen hebt namelijk
 
Wat ik even dus niet helemaal zie is die containers waar je het over hebt (neem aan dat je daarmee bedoeld box numbers). We hebben namelijk continue nieuwe containers en niet slechts "4". Iedere keer dat we samples doorvoeren hebben we een andere container nummer namelijk
 
Ik gaf een voorbeeldje; ik weet natuurlijk niet hoeveel je er tegelijk vult, of ze eenmalig zijn etc. Zodra je er meer dan 1 in gebruik hebt, zou ik dat dus met een aparte tabel (met 81 records per box) vullen. Vervolgens ga je de koppeltabel vullen met gegevens van de box, het Rasternummer en de patientID en, neem ik aan, nog wel wat meer, zoals misschien wat er in zit, en de datum.
Komt een box weer leeg terug, dan kun je hem uiteraard hergebruiken voor een volgende keer. Dan gooi je de records uit de koppeltabel van die betreffende koppeltabel weer weg. Al kan ik mij voorstellen dat je die gegevens wel bewaart, want daarmee weet je immers later nog wanneer een monster is verstuurd hebt. Bewaar je alles, dan kun je d.m.v. een Ja/Nee veldje in de tabel Opslag aangeven of een vak vol is of niet. Bij retour van een lege box (kun je weer opnieuw beginnen) zet je met een bijwerkquery alle veldjes weer op Leeg, en kun je de volgende batch vullen in de koppeltabel.
 
Goed nu ben ik nog meer in de war.

Even terug naar het begin;

1. Ik maak een tabel opslag (Tabel StoragePlasmaSera) waarin moet komen te staan; opslagID (sleutel), patientID (gekoppeld door een een op veel relatie), nummer van de doos (box number), datum van opwerken en nu wordt het wat vaag voor mij .... de positie nummers (rasternummers) van de doos waarin plasma, sera, edta plasma en of sf plasma staat (4 verschillende mogelijke materialen),

2. Ik krijg de query die je eerder hebt omschreven niet werkend, hij pakt het Not In niet + ik ben nu ondertussen zo in de war dat ik niet zeker meer weet of die nu wel goed is.
 
Bedoel je dat ik een tabel moet maken waarin de box nummers komen te staan, dus bv box nummer 1 en daarachter 81 posities?

Dan moet ik nog altijd een tabel maken waarin ik de gegevens op sla (dus de tabel StoragePlasmaSera)
 
Die tabel [StoragePlasmaSera] is inderdaad nodig; of je een extra tabel nodig hebt voor de bron van de tabel [StoragePlasmaSera] kan ik zo niet zeggen; als je boxen hebt die terugkomen, en dus hergebruikt worden, dan wel. Anders kan het zonder. Het voordeel van een tabel met daarin de nummers 1-81 is dat je die simpel kunt koppelen aan de tabel [StoragePlasmaSera], zodat je vrij makkelijk kunt zien welke plaatsen er vrij zijn (met de Not In clausule in het criterium). Als je geen tabel hebt met nummers, zul je op een andere manier de niet-gebruikte nummers moeten genereren. Probleem voor Access is dan, dat je wel kunt zien wat je gebruikt hebt, maar niet wat niet is gebruikt. Dat bestaat namelijk niet in de database. Vandaar de tabel met nummers.
 
Oke ik heb die tabel met de nummers gemaakt (Tabel Position). Hoe gebruik ik dan nu die Not In in de query? Die loopt bij mij namelijk niet
 
Ik heb tot nu toe deze SQL weten te bouwen die niet per directe een fout aangeeft, waarschijnlijk omdat mijn tabellen nog leeg zijn dat ik hem nog niet kan checken;

Code:
SELECT Tbl_Position.PositionID
FROM Tbl_Position INNER JOIN Tbl_StoragePlasmaSera ON (Tbl_Position.PositionID = Tbl_StoragePlasmaSera.[SF Plasma]) AND (Tbl_Position.PositionID = Tbl_StoragePlasmaSera.[EDTA Plasma]) AND (Tbl_Position.PositionID = Tbl_StoragePlasmaSera.Sera) AND (Tbl_Position.PositionID = Tbl_StoragePlasmaSera.Plasma)
WHERE (((Tbl_Position.PositionID) Not In (Select PositionID From [Tbl_Position] Where PositionID =[ 'Plasma', 'Sera', 'EDTA Plasma', 'SF Plasma'].[PositionID])));
 
Je hebt alleen de tabel Tbl_StoragePlasmaSera nodig. Je draait de query zo ongeveer om; het zou zoiets moeten zijn:

Code:
SELECT PositionID
FROM Tbl_Position 
WHERE (PositionID Not In (Select PositionID From [Tbl_StoragePlasmaSera] Where [SF Plasma] = 'Plasma'))

In dit voorbeeldje zit één criterium; dat kunnen er uiteraard meer zijn, want je wilt meer records wegfilteren. Als je de tabellen al wilt koppelen, wat ook kan (dan heb je de subquery niet nodig) dan moet je een Outer Join maken. Daarbij neem je van de tabel [Tbl_Position] alle records, en van [Tbl_StoragePlasmaSera] de gerelateerde records. Je ziet dan een query van 81 records, met een aantal rijen van [Tbl_StoragePlasmaSera]. Door op zo'n veld op Null te filteren, haal je de gebruikte velden er uit, en hou je dus de ongebruikte records over.
 
Ik zie overigens een behoorlijke beer op de weg liggen: ik ging er vanuit dat je voor elk monster een apart record zou maken. Dat lijkt een illusie, want in je tabel zie ik voor één record 4 verschillende sample posities. En dan wordt het een behoorlijk onbeheersbare query.... Ik zou 'm ombouwen, en elk sample zijn eigen record geven. Dan is de Not In query wel te maken.
 
oke, deze doet inderdaad iets. Ik heb nu een outer join gecreeerd om te voorkomen dat ik de subquery moet maken. Ik moet mijn query dan ook aanpassen of niet?
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan