Relatie gerelateerde problemen?

Status
Niet open voor verdere reacties.

kruimeltjes

Gebruiker
Lid geworden
30 sep 2009
Berichten
222
Beste allemaal,

Een tijd geleden was ik bezig om een 2tal tabellen in mijn bestaande database erbij te maken en liep tegen een aantal problemen aan. Het grootste deel van de problemen is opgelost.

Ik heb echter nog wel een aantal andere dingen dat niet helemaal lekker loopt;

1. Als je via het formulier (Material_StoragePlasma) gegegevens invoert krijg je een extra regel te zien in de tb StoragePlasmaSera
2. Als je via het formulier (Material_StoragePBMC) gegevens invoert krijg je in de tb StoragePBMC 2 regels te zien; 1tje met patienID en 1tje met de ingevoerde gegevens
3. Als je op het formulier (Material_StoragePBMC) klikt op de knop next patient blijven de gegevens van de vorige patient staan
4. In de tb_StoragePlasmaSera wordt er geen goeie koppeling gemaakt met de tb Patient waardoor je het + uittrekt alle patienten te zien krijgt in de tb Patient ipv de gegevens van die ene patient.

Iemand een idee hoe ik dit moet oplossen?

Bekijk bijlage Patientendatabase.part01.rar
Bekijk bijlage Patientendatabase.part02.rar
Bekijk bijlage Patientendatabase.part03.rar
 
Ik heb 'm gisteren uitgepakt.... Dus het begin is er ;)

Maar hoe gebruik je het formulier eigenlijk? Hij staat op Gegevensinvoer, dus je ziet helemaal niks...
 
Laatst bewerkt:
Raar dat die op gegevens invoer staat. Foutje van mijn kant. Hij moet gewoon op formulierweergaven staan eigenlijk.

Het kan trouwens zijn dat er geen gegevens staan in de tabel Patient en Materials maar als dat wel het geval is dan is het de bedoeling dat je het formulier StoragePlasma of PBMC opent aan de hand van, tja wij doen dat met de buisjes letterlijk in onze hand, de PatientID invoeren en dan de boxnumber, position nummer en het type intikken.

Dat is hoe het zou moeten gaan gebeuren in de praktijk
 
Bij mij doet het formulier StoragePlasma precies wat-ie moet doen, al maakt hij soms een extra record aan in de tabel [Tbl_StoragePlasmaSera]. Dat komt omdat formulier en subformulier aan elkaar gekoppeld zijn op basis van PatientID, dus zodra je een nieuw record aanmaakt in het hoofdformulier, krijg je automatisch een record in het subformulier, en dus ook in de tabel. En als je die dan vervolgens niet invult, heb je een verder leeg record.Dat zou je kunnen ondervangen door de optie Record toevoegen aan- en uit te zetten met een knop, zodat je als je een record toevoegt dat eerst af moet maken en opslaan. Elk nieuw record moet dan via die knop lopen.
 
Sorry,

heb het meerdere manieren geprobeerd maar krijg het niet voor elkaar. Stomme is dat ik snap wat je bedoelt (is eigenlijk harstikke logisch) maar de praktijk is een ander geval.
 
Bekijk deze variant anders eens. Ik heb alleen Plasma gedaan; de techniek werkt uiteraard ook op het andere formulier.
 

Bijlagen

Oke dit is het wel en dit is het niet.

Wat er anders zou moeten zijn eigenlijk 3 dingetjes;

1. de gegevens van de tabel mogen niet te zien zijn (als ik bij eigenschappen de gegevens invoer op ja zet is mij formulier leeg en kan ik geen nieuwe toevoegen)
2. Als ik een patientID wil intoetsen geeft die de foutmelding;

De opgegeven wijzingen aan de tabel zijn niet aangebracht omdat zij dubbele waarden zouden opleveren voor de index, primaire sleutel of relatie. Wijzig de gegevens in het veld of de velden die dubbele gegevens zouden bevatten of defineer de index opnieuw.
Dit is fout 3022

3. In het formulier kan ik heel mooi de patientengegevens zien achter het patientID maar daar hoef ik die niet te zien, die wil ik graag in de tabel en enkel en alleen in de tabel kunnen bekijken.

Ik heb nu punt 3 gedeeltelijk opgelost, namelijk het gedeelte dat ik in de tabel de patientengegevens gekoppeld heb aan het patientID en dus eigenlijk heb ik heel punt 3 opgelost zit ik te bedenken want op het formulier kan ik de query weg halen.

Ik kom er ook net achter dat de knop Next een fout melding geeft namelijk;

Kan niet naar de opgegeven record gaan
 
Laatst bewerkt:
Oke punt 1 van mijn vorige stukje (
1. de gegevens van de tabel mogen niet te zien zijn (als ik bij eigenschappen de gegevens invoer op ja zet is mij formulier leeg en kan ik geen nieuwe toevoegen)
) heb ik opgelost.

Heel stom maar moest nog iets op ja zetten, had ik kunnen weten.

Punt 2 blijft nog bestaan maar ik ben er al wel achter dat hij nu met de huidige aanpassingen een andere fout geeft.

Het blijkt namelijk dat ik geen records kan opslaan/toevoegen omdat er in de tabel Patient een aantal velden required staan. Nu kan ik natuurlijk deze velden op niet required zetten maar dan kom ik helaas in de problemen met de regels.

Iemand een idee hoe ik dit moet aanpakken?

Bekijk bijlage Patientendatabase.part01.rar
Bekijk bijlage Patientendatabase.part02.rar
Bekijk bijlage Patientendatabase.part03.rar
 
Het rare is dat het formulier gebaseerd is opbasis van de tabel Patient, klopt dit Octafish?
 
Je gebruikt het formulier m.i. verkeerd; om samples te kunnen opslaan moet je een patientID kiezen. Dat doe je op de formulieren [Frm_Materials_StoragePlasma] en [Frm_Materials_StoragePBMC]. In de bijbehorende subformulieren zie je dan welke samples er zijn voor die patiënt, en bij welke batch ze horen. Je moet (lijkt mij) geen buisjes kunnen invoeren voor niet-bestaande patienten, dus mag het formulier nooit gebruikt worden met <Gegevensinvoer> op <Ja>.
 
Oke ik merk dat ik niet duidelijk ben geweest over hoe ik het formulier wil gaan gebruiken, sorry daarvoor.

Het klopt inderdaad dat we met het formulier Patient en het bijbehorende formulier Materials a. patienten gegevens opslaan (frm_patient) en b. het aantal opgeslagen buisjes invoeren (frm_materials).

Even over de praktische gang van zaken zoals we het nu doen; de buisjes met materiaal van de patienten wordt gestickerd (met daarop PatientID en welk materiaal) dit gaat in een bakje met 81 vakjes in een tijdelijke vriezer (-80).

Als zo'n bakje vol is moeten de buisjes overgezet worden in een andere vriezer (-150). De codering is in deze vriezer anders dan de patientID, namelijk een box nummer en dan een positie nummer.

Dat is de reden dat ik het formulier (en de tabel) Storage Plasma Sera moet maken.

Ik moet dus in het formulier gaan invullen;

1. het PatientID
2. en een box nummer en posite nummer

Nu doet punt 2 het al, namelijk via de query Position. Maar punt 1 is dus nu het probleem en ik begrijp uit je bovenstaand bericht dat ik hier inderdaad niet duidelijk genoeg over geweest ben, geheel mijn fout.

Wat ik graag zou willen is dat ik handmatig het PatientID in kan vullen en dat die alle gegevens opslaat in de tabel Storage Plasma Sera.

Is dit duidelijker uitgelegd?
 
Dan is het eigenlijk simpel, want dan heb je helemaal geen subformulier nodig, alleen alle velden uit [Frm_StoragePlasmaSera] (ik heb het subformulier hernoemd). Dan is PatienID een gewoon tekstveld, en blijft de rest ongeveer gelijk, alleen de select query voor het positievak moet je dan aanpassen, omdat daar nu naar een subformulier wordt verwezen. In mijn voorbeeld is dat nu:
Code:
SELECT PositionID FROM Tbl_Position WHERE (PositionID Not In (SELECT Nummer FROM Tbl_StoragePlasmaSera WHERE ([Box number]= Forms![Frm_StoragePlasmaSera].Form![BoxNumber] );));
In dit formulier kun je inderdaad de eigenschap <Gegevensinvoer> op Ja zetten, zodat je alleen nieuwe records kunt toevoegen.
 
Jaaaaa, dat is het super!

Nog 1 klein dingetje;

Op jouw formulier kon je zo mooi meerdere gegevens van een zelfde patient invoeren op 1 formulier, dat kan ik nu niet meer/

Formulier is nu een doorlopend formulier dat werkt niet.
 
Dan moet je weer terug naar een formulier+subformulier.... Of een code toepassen die de ingevoerde patientID kopieert naar het volgende record.
 
Om de code erbij te zetten:

Code:
Public Patient As String

Code:
Private Sub PatientID_AfterUpdate()
    Patient = Me.PatientID
End Sub

Code:
Private Sub Form_Current()
    If Me.NewRecord = True And Not Patient & "" = "" Then Me.PatientID = Patient
End Sub
 
En is dat veel werk? Nee dus valt mee. Alleen die laatste code hoe moet ik die bij mijn huidige form current plakken?
 
Laatst bewerkt:
't Is één regeltje; ik heb de rest weggehaald voor het overzicht, maar bij mij staat de rest van de code er nog onder.
 
Oke het werkt inderdaad maar maakt het invoeren voor ons niet handiger eigenlijk. Dank je wel voor alle hulp, deze draad is voor mij opgelost!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan