Access vindt relatie tussen tabellen niet

Status
Niet open voor verdere reacties.

so10070

Gebruiker
Lid geworden
4 feb 2014
Berichten
424
Ik leg een relatie (één op veel) tussen twee tabellen (tblAandachtspunten - parent en tblDagenMaandEntiteit - child). Als ik de parenttabel open kan ik zonder één probleem de childtabel ook openen door op het plus-teken naast elk record in de parent te klikken. Wijzigingen in de child worden zonder problemen opgeslagen. Als ik, echter, vanuit één formulier met een knop het formulier van de gerelateerde tabel open, staat steeds het gerelateerde veld met de parent op 0 en krijg ik, bij afsluiten, de foutmelding dat "U kan geen record toevoegen of wijzigen omdat voor de tabel tblAandachtspunten een gerelateerd record vereist is". Maar dat is er volgens mij, want vanuit de tabellen zelf lukt dit wel. Nu weet ik het even niet meer! :( Hierbij de db.
Bekijk bijlage HelpmijRelaties.zip
 
waarom maak je er geen subform van.
gekoppeld met AandachtspuntenID
 
Juist. Na wat verder zoeken en vloeken lijkt me dit het beste.
 
Het kan heel simpel op de manier die je nu hebt gebouwd met het OpenArgs object. Dat geef je mee vanuit het startformulier, en lees je weer uit op het ontvangende formulier.
Het formulier op je dan zo:
Code:
Private Sub Knop4_Click()
    DoCmd.OpenForm "003DagenPerMaand", WindowMode:=acDialog, OpenArgs:=Me.AandachtspuntenID
End Sub

En "003DagenPerMaand" open je dan met deze code:
Code:
Private Sub Form_Load()
    If Not Me.OpenArgs = vbNullString Then
        Me.AandachtspuntenID = Me.OpenArgs
    End If
End Sub
 
Toch nog een vraagje: kan ik twee argumenten met OpenArgs meegeven? Bijvoorbeeld:
Code:
OpenArgs:=Me.AandachtspuntenID & " AND 'Basisonderwijs'"
en hoe roep ik deze dan terug op in het andere formulier:
Code:
Me.AandachtspuntenID , Me.txtDPMEntiteit = Me.OpenArgs
 
Het technische antwoord is: nee. OpenArgs is altijd één string. Maar laat dat je niet ontmoedigen, want daar is makkelijk een mouw aan te passen! Je kunt die string namelijk vullen zoals je wilt, dus wat let je om meerdere waarden achter elkaar te zetten? Enige is: je moet ze wel weer uit elkaar zien te krijgen dus er moet wel een duidelijk scheidingsteken bij. Ik gebruik zelf meestal het pipe symbool.
Code:
Code:
OpenArgs:=Me.AandachtspuntenID & "|Basisonderwijs|" & Me.KlantID
Bijvoorbeeld.

Op het formulier zie je de variabele dus als één string, met je scheidingsteken(s). Ik kom wel eens voorbeelden tegen waar de waarden met MID worden gesplitst, maar ik vind dat nodeloos gecompliceerd; ik haal ze uit elkaar met SPLIT en een matrix variabele. Uiteraard met het pipe symbool als splitsteken.
Waar je op moet letten: je krijgt net zoveel dimensies als je elementen meegeeft. Het toewijzen aan formulierobjecten kun je dus het beste met een lus doen, gebaseerd op de LBOUND en UBOUND van je matrix.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan