Vanuit een formulier een tweede formulier openen en relevante gegevens vinden

Status
Niet open voor verdere reacties.

gebo51

Gebruiker
Lid geworden
30 mei 2007
Berichten
100
Beste forumleden,

Ik zit met het volgende probleem.
De situatie:

In een formulier ‘Orders’ laat ik de gegevens in uit een tabel ‘Klanten’.
In deze tabel bevindt zich een keuzeveld ‘Klantcategorie’ , met daarin 3 mogelijkheden: ‘prospect’, ‘relatie’ en ‘klant’

In het formulier ‘Orders’ mogen alleen de gegevens ingeladen worden van een ‘klant’.
Indien de keuzelijstgegevens staan op ‘relatie’ of ‘prospect’ volgt er vanuit het formulier ‘Orders’ een msgbox en wordt via > DoCmd.OpenForm "klanten" < het formulier ‘klanten’ geopend.
Het keuzeveld kan dan worden aangepast aan de positie ‘klant’ en de gegevens kunnen daarna worden ingeladen in het formulier ‘Orders’.
Bij het openen van het formulier ‘Klanten’ wordt standaard de eerste record weergegeven.

Wat ik wil is dat de betreffende ‘prospect’ cg ‘relatie’ in het formulier ‘Klanten” wordt getoond (gevonden) die overeenkomt met de gegevens die zijn ingeladen in het formulier ‘Orders’.
Het overeenkomstige id-veld is ‘klantid’

Hieronder het vba wat in het formulier ‘Orders’ bij het event ‘voor bijwerken’ is opgenomen en wat dus het formulier ‘Klanten’ opent

If [Klantcategorie_id] < 3 Then
msgbox "De opdrachtgever staat genoteerd als 'Relatie' of 'Prospect' ipv 'Klant'" _
& vbCrLf & "Pas in formulier klanten de klantcategorie aan naar >Klant< ", vbCritical, "bedrijfsnaam"
DoCmd.CancelEvent
DoCmd.OpenForm "klanten"
End If
Exit Sub

Ik hoop dat het een beetje duidelijk is.
Bedankt maar weer….
 
Aangezien ik nog geen reactie heb ontvangen, post ik hierbij een voorbeeld van de db.
Inmiddels heb ik het vba in het formulier 'orders' iets aangepast; toch werkt het niet.

Nog even de situatie.
In formulier "orders' staat achter het veld 'klantid' - voor bijwerken- het volgende vba:

Private Sub Keuzelijst_met_invoervak81_BeforeUpdate(Cancel As Integer)
Dim rst As Object
If [Klantcategorie_id] < 3 Then
msgbox "De opdrachtgever staat genoteerd als 'Relatie' of 'Prospect' ipv 'Klant'" _
& vbCrLf & "Pas in formulier klanten de klantcategorie aan naar >Klant< en sluit het formulier 'Klanten' af", vbCritical, "GO! Evenementen & Communicatie"
DoCmd.CancelEvent
'juiste record tonen
DoCmd.OpenForm "klanten"
Set rst = Me.Recordset.Clone
rst.FindFirst "[klantnummer]='" & Me![klantid]
If rst.NoMatch Then
msgbox "Record niet gevonden"
Else
Me.Bookmark = rst.Bookmark
End If
End If
rst.Close
Exit Sub
End Sub

Hierin staat dus aangegeven dat als een klant wordt geselecteerd in 'orders' en de klant staat niet als 'klant' in de 'klantcategorie' vermeld, er vanuit het form. "orders' naar het form. 'Klanten' moet worden geschakeld.

Als ik het formulier 'orders' open en ik maak een nieuwe record en ik selecteer daarvoor klantB, die in het formulier 'Klanten" als 'relatie' staat aangemerkt, opent zich het formulier 'klanten'
Tot zover goed.
Standaard wordt echter de eerste record getoond en niet de klantrecord die hoort bij klantB

Weet iemand wat ik in de vba code verkeerd heb?
Ik hoop dat het met de db erbij een beetje duidelijker is

Bedankt maar weer....
 

Bijlagen

Ik heb het inmiddels zelf opgelost :). Hieronder de juiste vba:

Dim stDocName As String
Dim stLinkCriteria As String

If [Klantcategorie_id] < 3 Then
stDocName = "klanten"
stLinkCriteria = "[klantnummer]= '" & Me.Keuzelijst_met_invoervak81 & "'"
msgbox "De opdrachtgever staat genoteerd als 'Relatie' of 'Prospect' ipv 'Klant'" _
& vbCrLf & "Pas in formulier klanten de klantcategorie aan naar >Klant< en sluit het formulier 'Klanten' af", vbCritical, "GO! Evenementen & Communicatie"
DoCmd.CancelEvent
DoCmd.OpenForm stDocName, acNormal, , stLinkCriteria, , acDialog
End If
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan