Hallo allemaal. Er is een Historie-formulier met oa. een knop Status om een bijbehorend Status-formulier te openen. Historie is afgeleid van de tabel Opdrachten met de Key [
pdrachten ID] en Status van de tabel Status_Werkorder met het gerelateerde c.q. gekoppelde veld [s_Status_ID].
Als de knop Status wordt geactiveerd, dan moet op basis van [
pdracht ID] het juiste Status-formulier worden geopend met de gegevens uit de tabel Status_Werkorder (zie onderstaande code). Ik heb de code geschreven in een ander formulier met een knop voor dezelfde functie en die werkte. In dit formulier wordt de index [
pdracht ID] om een andere reden, in een andere fase bepaald en weergegeven door [sOpdracht1].
De waarde van [sOpdracht1] en [
pdracht ID] moeten hetzelfde zijn. In de code bevat de variabele sOpdracht1 de waarde van de key [
pdracht ID] en dus van het actuele formulier. Dus [
pdracht ID] moet de waarde van sOpdracht1 krijgen, maar hoe?
Het blijkt nu dat bij het activeren van de knop de waarde van de index [sOpdracht1} correct is, bv. 24. MIjn idee is om de index [
pdracht ID] de waarde van [sOpdracht1] over te laten nemen en daarmee het juiste formulier te openen. Maar [
pdracht ID] is altijd bv. 89 (een eerste keer door een andere toepassing geopend formulier?) en opent daarmee een verkeerd Status-formulier. Krijg deze index [
pdracht ID] niet naar de juiste waarde (24) aangepast. Ik heb nog geprobeerd met de variabele FilterOpdrachtID nog een verbinding te leggen. Ik kom na lang zoeken er niet uit waarom [
pdracht ID] altijd 89 blijft terwijl de tekst van de MsgBox [
pdracht ID]=24 aangeeft.

Als de knop Status wordt geactiveerd, dan moet op basis van [


De waarde van [sOpdracht1] en [



Het blijkt nu dat bij het activeren van de knop de waarde van de index [sOpdracht1} correct is, bv. 24. MIjn idee is om de index [





Code:
Private Sub Knop376_Click() 'Formulier Historie
Dim FilterOpdrachtID As String
MsgBox "sOpdracht1" & "=" & sOpdracht1 'sOpdracht1=24
On Error Resume Next
FilterOpdrachtID = "[o_Opdracht ID] = " & sOpdracht1
MsgBox FilterOpdrachtID '[o_Opdracht ID]=24
MsgBox [o_Opdracht ID] '89
If Nz(DLookup("s_Status_ID", "Status_Werkorders", "[s_Status_ID] = " & Me.[o_Opdracht ID]), 0) = 0 Then
'DoCmd.OpenForm "Status_Werk", Windowmode:=acDialog, OpenArgs:=Me.[s_Status_ID]
DoCmd.OpenForm "Status_Werk", , "[s_Status_ID] = " & Me.[o_Opdracht ID], , acFormAdd, acDialog, OpenArgs:=Me.[s_Status_ID]
Else
'DoCmd.OpenForm "Status_Werk", Windowmode:=acDialog, OpenArgs:=Me.[s_Status_ID]
DoCmd.OpenForm "Status_Werk", , , "[s_Status_ID] = " & Me.[o_Opdracht ID], , acDialog, OpenArgs:=Me.[s_Status_ID]
End If
End Sub
Code:
Option Compare Database
Private Sub Form_Load() 'Formulier Status_Werk
If Not Me.OpenArgs = vbNullString Then Me.[s_Status_ID] = Me.OpenArgs
End Sub
Laatst bewerkt: