Meenemen waarde opsgeslagen in variabele naar viariabel formulier

Status
Niet open voor verdere reacties.

Bergsma1

Gebruiker
Lid geworden
7 feb 2012
Berichten
40
Code:
Option Compare Database

Private Sub Command119_Click()


DoCmd.OpenForm "TekeningenFrm"

a = TekeningnummerIdHoofdindelingen
d = Tekeningnummer

b = DLookup("Hoofdindeling", "HoofdindelingenTabel", "IdHoofdindelingen=" & a)

C = b & "Frm"

    DoCmd.OpenForm C
   
' Set C.Tekeningnummer = d



End Sub

Wens is nu om in Formulier C, veld "tekeningnummer" met variabele d alvast te vullen
 
Idioot lange veldnamen, maar dit terzijde :). Het is vrij simpel om variabele gegevens mee te nemen naar een te openen formulier met de parameter OpenArgs.
Code:
 DoCmd.OpenForm C OpenArgs:= d

Op het geopende formulier moet je de OpenArgs dan weer in het juiste veld zetten, bij de gebeurtenis Bij Openen bijvoorbeeld.
 
Of je kan, via eigenschap procedures, voor die variabelen formuliereigenschappen aanmaken en die eigenschappen dan in de procedure waarin je het formulier opent, onmiddellijk na het openen gelijk zetten aan de variabelen. Dan kan je die waarden opvragen als elke andere formulier eigenschap via me.[naam eigenschap]. Sommigen vinden dit een idioot ingewikkelde methode, maar ik vind dat je daar eenmaal wat moeite insteekt om de eigenschappen te definieren, maar achteraf veel gemakkelijker werken en duidelijker ;-) .
 
Bedankt voor jullie antwoorden! Ik kom er nog niet helemaal uit, hoe plaats ik openargs in het veld met veldnaam "Tekeningnummer"?
 
Op het geopende formulier zet je dan iets als:
Code:
Private Sub Form_Load()
    If Me.OpenArgs <> "" Then
        Me.Tekeningnummer= Me.OpenArgs
    End If
End Sub

Hiermee vul je het veld alleen als er een waarde is ingevuld in de OpenArgs. Als je het formulier rechtstreeks opent (zonder OpenArgs dus) krijg je het normale formulier te zien.
 
Een andere methode is nog om TempVars te gebruiken. Deze kun je vullen op je formulier op dezelfde manier door hem te declareren. Je gebruikt hem ongeveer op dezelfde wijze.

Beide voorbeelden gecombineerd, krijg je dit:
Code:
Private Sub Command119_Click()
Dim frm As Document
    a = TekeningnummerIdHoofdindelingen
    d = Tekeningnummer
    ' Tempvar aanmaken en vullen
    Application.TempVars.Add ("varTekening"), d
    b = DLookup("Hoofdindeling", "HoofdindelingenTabel", "IdHoofdindelingen=" & a)
    C = b & "Frm"
    DoCmd.OpenForm C, OpenArgs:=d
End Sub

Private Sub Form_Load()
    If Me.OpenArgs <> "" Then
        'OpenArgs gebruiken op veld
        Me.Tekening = Me.OpenArgs
        'TempVar gebruiken op veld
        Me.Tekening = TempVars("varTekening")
    End If
End Sub

Uiteraard heb je maar één versie nodig :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan