Veld waarde overnemen in een ander formulier

Status
Niet open voor verdere reacties.

Marcotica

Gebruiker
Lid geworden
20 sep 2007
Berichten
83
Goede morgen,

Ik heb een formulier gemaakt welke niet gekoppeld is aan een tabel of query. Dit formulier berekend uitsluitend iets uit.
Wanneer e.e.a. is ingevuld krijg je een uitkomst in een teksvak. Deze uitkomst wil ik graag automatisch overnemen in een ander formulier wanneer ik op een button in het formulier druk (die dan ook gesloten moet worden). VBA voor het sluiten van het niet gekoppeld formulier lukt allemaal wel, maar het overnemen van de inhoud van het tekstvak in naar een ander (reeds geopend) Formulier lukt me niet.
Wie kan mij hierbij helpen?

mvg

Marco
 
Je kunt de waarde van een formulier overdragen aan een nieuw formulier met het argument OpenArgs. Dit is een tekststring die je één waarde mee kunt geven, of een aantal variabelen. In het laatste geval moet je een scheidingsteken gebruiken, dat je op het te openen formulier weer opsplitst. Omdat de tweede variant wat meer mogelijkheden heeft, zal ik die verder uitleggen. De eerste variant kun je denk ik zelf wel verzinnen...

Bij de code waarmee je het tweede formulier opent geef je een extra parameter mee. Je komt die vanzelf tegen als je de komma's tikt. Het is dus de laatste parameter (OpenArgs). In het voorbeeld voeg ik een nieuw artikel toe vanuit de procedure <Bij niet in lijst>, en dat nieuwe artikel staat in de variabele NewData. Verder geef ik een Categorie mee, en een BedrijfsID. De drie variabelen worden gescheiden door een | teken.
Code:
DoCmd.OpenForm "fArtikelen", , , , acAdd, acDialog, NewData & "|CategorieID|" & iBedrijf

Bij het openen van het tweede formulier moet de tekststring worden gesplitst in drie aparte variabelen. Dat gebeurt bij het Openen van het formulier. Omdat je het formulier niet altijd zult openen met een Openargs variabele, moet je ook checken of die variabele gegevens bevat of niet. Als dat zo is, moet de OpenArgs worden gesplitst. Dat gebeurt door er een Matrixvariabele van te maken. De waarden hieruit worden vervolgens toegewezen aan tekstvakken op het formulier.
Code:
Private Sub Form_Open(Cancel As Integer)
    If Not IsNull(Me.OpenArgs) Then
        Dim sArgs() As String
        sArgs = Split(Me.OpenArgs, "|")
        Me.txtArtikel.Value = sArgs(0)
        Me.txtCategorieID.Value = sArgs(1)
        Me.cboBedrijfID.Value = sArgs(2)
    End If
End Sub
En dat is alles... Heb je één waarde voor het tweede formulier, dan kun je die gelijk toewijzen aan het tekstvak.
 
Hi Michel,
Weer fijn van je te horen, maar........ gaat me nu even boven me pet.
De waarde die in het tekstveld (nummeriek) overgenomen moet worden in het andere formulier is reeds geopend.
Het formulier is dus al open en hoeft niet nogmaals geopend te worden.
Is het dan nog steeds de bedoeling dat "openform" gebruikt moet worden?

gr.

Je kunt de waarde van een formulier overdragen aan een nieuw formulier met het argument OpenArgs. Dit is een tekststring die je één waarde mee kunt geven, of een aantal variabelen. In het laatste geval moet je een scheidingsteken gebruiken, dat je op het te openen formulier weer opsplitst. Omdat de tweede variant wat meer mogelijkheden heeft, zal ik die verder uitleggen. De eerste variant kun je denk ik zelf wel verzinnen...

Bij de code waarmee je het tweede formulier opent geef je een extra parameter mee. Je komt die vanzelf tegen als je de komma's tikt. Het is dus de laatste parameter (OpenArgs). In het voorbeeld voeg ik een nieuw artikel toe vanuit de procedure <Bij niet in lijst>, en dat nieuwe artikel staat in de variabele NewData. Verder geef ik een Categorie mee, en een BedrijfsID. De drie variabelen worden gescheiden door een | teken.
Code:
DoCmd.OpenForm "fArtikelen", , , , acAdd, acDialog, NewData & "|CategorieID|" & iBedrijf

Bij het openen van het tweede formulier moet de tekststring worden gesplitst in drie aparte variabelen. Dat gebeurt bij het Openen van het formulier. Omdat je het formulier niet altijd zult openen met een Openargs variabele, moet je ook checken of die variabele gegevens bevat of niet. Als dat zo is, moet de OpenArgs worden gesplitst. Dat gebeurt door er een Matrixvariabele van te maken. De waarden hieruit worden vervolgens toegewezen aan tekstvakken op het formulier.
Code:
Private Sub Form_Open(Cancel As Integer)
    If Not IsNull(Me.OpenArgs) Then
        Dim sArgs() As String
        sArgs = Split(Me.OpenArgs, "|")
        Me.txtArtikel.Value = sArgs(0)
        Me.txtCategorieID.Value = sArgs(1)
        Me.cboBedrijfID.Value = sArgs(2)
    End If
End Sub
En dat is alles... Heb je één waarde voor het tweede formulier, dan kun je die gelijk toewijzen aan het tekstvak.
 
Dat had je er niet bij gezegd... In dat geval is het een stuk simpeler, want dan kun je de waarde gewoon toekennen aan het veld in het andere formulier.

Forms!Formulier2!Tekstveld.Value=Me.Tekstveld.value
 
Sorry Michel,
Ik zal in volgende vragen, iets specifieker en duidelijker zijn.
Ik heb het inmiddels toegepast en het werk magnefiek!!!!
Je bent (wederom) een topper.

Bedankt weer en tot laters.

Gr. marco

Dat had je er niet bij gezegd... In dat geval is het een stuk simpeler, want dan kun je de waarde gewoon toekennen aan het veld in het andere formulier.

Forms!Formulier2!Tekstveld.Value=Me.Tekstveld.value
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan