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

Status
Niet open voor verdere reacties.

kruimeltjes

Gebruiker
Lid geworden
30 sep 2009
Berichten
222
Beste Allemaal,

In de database die ik opgebouwd heb moet ik 2 nieuwe tabellen maken (Tbl_StoragePBMC & Tbl_StoragePlasmaSera) met 2 bijbehorende formulieren (nog te maken).

Nu moeten in deze 2 tabellen alle gegevens komen te staan van de Tbl_Patient (muv Intials) + er moeten nieuwe gegevens worden ingevoerd (vandaar de fomulieren).

Die nieuwe gegevens die ingevoerd moeten worden zijn;
Canister (nummeriek)
Box Number (Tekst) [Alleen in Tbl_StoragePBMC]
Position number(s) (nummeriek; getal van 1 tot 81)

Deze laatste (Position number(s)) is dan weer afhankelijk hoeveel vials er zijn, dit staat dan weer opgeslagen in de Tbl_Materials.

Op de formulieren moet ik dadelijk kunnen invullen het patientID (eigenlijk zoeken daarop) waarna ik de nieuwe gegevens moet kunnen invullen, zonder dat ik de rest van gegevens uit de Tbl_Patient te zien krijg.

Nu zitten er natuurlijk een aantal valkuilen in (stel je voor dat ze je het makkelijk gaan maken);

1. De gegevens van Tbl_Patient mag niet zichtbaar zijn op het formulier muv PatientID
2. In de Tbl_StoragePBMC moeten de gegevens van de PBMCs en de SFMCs worden opgeslagen
3. In de Tbl_StoragePlasmaSera moeten de gegevens van de plasma, sera, EDTA plasma, SF plasma, lysate en evt urine worden opgeslagen.
4. Hoe moet ik de relaties leggen in de tabellen onderling
5. Is dit uberhaupt haalbaar?

Hopelijk weet iemand in elk geval een deel van mijn vragen te beantwoorden!?

Bekijk bijlage Patientendatabase 19_10_2011.part02.rar
Bekijk bijlage Patientendatabase 19_10_2011.part01.rar
 
Om te beginnen: waarom alle patientgegevens kopieëren? Niet alleen is dat overbodige data (weet je het patientID, dan weet je ook de patientgegevens), je loopt de kans dat de gegevens verkeerd worden ingevuld, en dat dezelfde patient ineens twee verschillende geboortedatums krijgt, om maar eens wat te noemen. Erg onverstandig dus! Met een keuzelijst op de nieuwe formulieren kies je een patiënt, en dan ben je er al. Je koppelt ze via een één-op-één relatie, of als er meer records per patiënt moeten kunnen komen in de nieuwe tabel (maar je hebt patientID een sleutelveld gemaakt, dus dat zal wel niet) een één-op-veel relatie.
 
Waarom alle patienten gegevens kopieren; tja dat was mijn reactie dus ook. De reden die ik kreeg was dat ze het dan later makkelijker konden opzoeken.

Nu doen we het nog in een excel file opslaan en de patienten gegevens ernaast kopieren zodat later opzoeken makkelijker is.

De andere reden is dat ik hier dadelijk niet meer werk en niemand anders ervaring heeft met een database a la deze, dus moeten ze op een simpele en overzichtelijke manier de gegevens terug kunnen zoeken.

Ik ga je opties eens proberen en het hun voorleggen, dank je wel alvast voor nu.
 
Ik zou zeker niet beginnen aan het dubbel invoeren van gegevens, en al helemaal niet als iemand anders het moet gaan overnemen. Je zadelt die persoon dan op voorhand al met problemen op waar hij/zij denk ik niet op zit te wachten. Bovendien: als je de db en de formulieren goed inricht, heb je er alleen maar voordeel bij, en geen nadelen.
 
oke duidelijk.

Misschien heb je dan ook een idee hoe ik de verschillende soorten gegevens (Tbl_Materials) goed en overzichtelijk kan opslaan?

Voorlopig heb ik namelijk wel een formulier maar begint die al te miepen dat ik geen gegevens heb ingevoerd in het veld PatientID
 
Oke noem me dom maar misschien komt het ook gewoon door de vermoeidheid maar ik zie het even niet meer.

Dit is wat ik tot nu heb, zou moeten werken (denk ik) maar niet dus.

Zit ik ook nog met het probleem dat;

1. PatientID blijft staan in beeld en dat wil ik niet
2. Ik niet meerdere nummers per materiaal kan invoeren, dus als ik bijvoorbeeld 2 sera heb dat ik dan 2 nummers kan invoeren en die kan terug lezen in de db

Nu heb ik dat laatstse al een keer eerder moeten doen maar toen had ik "vast" rijtje met keuze mogelijkheden en die heb ik nu niet. Hoe op te lossen?

Dit bovenstaande geld voor de Tbl_storageplasmasera en bijbehorende formulier. Voor tabel Storagepbmc kwam ik net tot de ontdekking dat het materiaal hiervan nog wel eens verspreid opgeslagen wordt (ruimte gebrek in de vriezers en dus alle mogelijke plaatsen opvullen) en dus dat van 1 patient samples in verschillende canisters, box numbers kunnen staan. Idee om dat op te lossen (behalve vriezers opruimen?)

Bekijk bijlage Patientendatabase 19_10_2011.part02.rar
Bekijk bijlage Patientendatabase 19_10_2011.part01.rar
 
Probleem 1: logisch, want je hebt het formulier gekoppeld aan een tabel. Hij slaat de gevens dus op in de onderliggende tabel, en bij openen zie je het eerste record. Je hebt geen bladerknoppen gemaakt, maar met <PgUp> en <PgDown> kun je gewoon door de records bladeren, en nieuwe toevoegen. En bekijken.
Probleem 1: ook logisch, want je hebt van PatientID een sleutelveld gemaakt. Als dat een normaal veld is, kun je een één-op-veel relatie maken, en dus ook meerdere records per patient aanmaken.
 
Oke probleem 1; gegevens die ik zie als ik het formulier open; opgelost

probleem 2 nog niet, ik krijg namelijk niet voor elkaar dat die een een op veel relatie maakt

Wil ik nog een probleempje toevoegen;

een box heeft maximaal 81 plaatsen, genummerd 1 tot en met 81. Het kan voorkomen dat er meerder plasma samples zijn. Ik weet dat mensen dit liever niet zien maar voor het overzicht is het makkelijker om alle posities waar deze plasma's staan in 1 veld te hebben. Dus meerdere locatie nummers toekennen.

Ander probleempje wat er indirect mee te maken heeft;

omdat een box maar 81 plaatsen heeft kunnen er geen 2 verschillende samples op 1 positie nummer staan. Kan ik daar iets op verzinnen om te voorkomen dat dit gebeurd?
 
Ik moest in je tabel een veldeigenschap aanpassen om de relatie te kunnen leggen; de index moet nu naar Ja, Duplicaten OK. Misschien is dat de oorzaak.
Wat je andere vraag betreft: die snap ik niet helemaal; als een box maar één sample mag bevatten, dan krijg je toch voor elk sample een eigen record? Wil je meerdere boxen toe kunnen wijzen, dan krijg je dus voor elke box een eigen record. In de keuzelijst kun je dan filteren op lege boxen, zodat er geen verkeerde box wordt gekozen.
 
Een box is niet eens anders dan een doosje met daarin een raster waardoor er 81 plaatsen zijn om een buisje in te zetten hieronder een plaatje van hoe zo'n doos eruit ziet;

HTML:
https://nl.vwr.com/app/catalog/Product?article_number=391-7642

In 1 box (doosje) kunnen dus 81 samples opgeslagen worden (position 1 tot 81)
 
Het maakt niet zoveel uit of het een eigen doos is of een plek in cryobbox. Of, om het met Geert te zeggen: vol is vol :) Dus het principe blijft hetzelfde: een vakje kan maar één keer gebruikt worden. De vraag is natuurlijk hoe je dat gaat registreren; heeft elk vakje een eigen nummer, of gebruik je een rasterindicatie zoals je dat in Excel zou doen?
 
Op het moment dat je een sample aan een vakje wilt toekennen, zou ik dat met een keuzelijst doen, die alle vrije vakken laat zien. Je hebt dus in de keuzelijst een criterium nodig dat alle gevulde nummers uitfiltert.
 
Oke, maar we voeren per volle doos in, dus dan is een keuzelijst niet echt nodig. We voeren namelijk een doos pas door als het doosjes vol zit.

Wat we nu met excel doen is de patientID, het materiaal soort (dus plasma, sera, etc) en de locatie intikken (lekker ouwerwets).

Eigenlijk willen ze dit zo houden, werkt ook gewoon het snelst zover ik nu natuurlijk kan beoordelen. Wat ik dus wil voorkomen dat 2 verschillende samples ingevoerd kunnen worden op dezelfde plek maar dan dat je het handmatig kan invoeren ipv met een keuzelijst. Is dat mogelijk?

Groetjes,

Simone
 
Ik snap het niet helemaal; je wilt de gegevens wèl handmatig invoeren, maar niet met een keuzelijst? Wat is daar volgens jou het voordeel van? Want je wilt wèl een check op het dubbel invoeren op hetzelfde vaknummer; dat is met een keuzelijst behoorlijk veel simpeler dan met een tekstvak, waar je immers alles kunt invoeren wat je wilt, dus je hebt een veel grotere check nodig.
 
De termen <keuzelijst> of <keuzelijst met invoervak> zijn voor mij ongeveer gelijk; beide kun je op dezelfde manier inrichten, alleen het uiteindelijk gebruik kan verschillen: met een keuzelijst met invoervak kun je altijd maar één keuze maken. Daarom gebruik ik vaak de term <keuzelijst> terwijl ik dan in de praktijk doorgaans een <keuzelijst met invoervak> bedoel.
 
Oke dus dat is een goed werkende optie voor mij.

Je zegt eerder
Je hebt dus in de keuzelijst een criterium nodig dat alle gevulde nummers uitfiltert.
Simpel gedacht; criterium is nummers 1 tot en met 81 maar dan het filteren die zie ik nog even niet voor me (snap wat je bedoeld hoor maar zie nog niet voor me hoe te filteren)
 
Als je een query maakt op basis van een tabel met nummers (da's dan dus een tabel met 91 records) en je koppelt die tabel aan de tabel met de [storageplasmasera] dan heb je een lijst met de gebruikte nummers. De records uit de tabel met nummers die niet in die query zitten, zijn dus vrij. Het criterium van de keuzelijst wordt dus iets als:
Code:
Not In(Select Nummer From [Nummers] WHERE Nummer=[storageplasmasera].[Nummer])
Deze Select query geeft de lijst met gebruikte nummers, en door daar NOT aan toe te voegen, keer je de selectie om: de vrije nummers.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan