openargs

Status
Niet open voor verdere reacties.

jo geuens

Gebruiker
Lid geworden
13 feb 2010
Berichten
190
na wat zoek werk al een heel eind gekomen maar nu toch weer een probleem tegengekomen .
'
als ik in een keuzelijst data ingeef die niet bestaat opent het form om deze toe te voegen nu zou de waarde van 2 cbo'boxen mee overgenomen worden
met 1 is het me al gelukt maar met 2 weet ik niet hoe ik dit moet die ?

deze staat in het form waar ik de data ingeef die nog niet bestaad
Code:
Private Sub Categorie_NotInList(NewData As String, Response As Integer)

    Dim Result
    Dim Msg As String
    Dim CR As String

    CR = Chr$(13)

    ' Exit this subroutine if the combo box was cleared.
    If NewData = "" Then Exit Sub

    ' Ask the user if he or she wishes to add the new Prodcategorie.
    Msg = "'" & NewData & "' Deze werd nog nooit ingegeven" & CR & CR
    Msg = Msg & "Wil je deze toevoegen?"
    If MsgBox(Msg, vbQuestion + vbYesNo) = vbYes Then
        ' If the user chose Yes, start the Prodcategorie form in data entry
        ' mode as a dialog form, passing the new Prodcategorie name in
        ' NewData to the OpenForm method's OpenArgs argument. The
        ' OpenArgs argument is used in frmProdCategorie form's Form_Load event
        ' procedure.
        DoCmd.OpenForm "frmProdCategorie", , , , acAdd, acDialog, NewData & ";" & Me.MerkID & ";" & Me.LeverancierID
    End If

    ' Look for the ProdCategorie the user created in the frmProdCategorie form.
    Result = DLookup("[Prodcategorie]", "tblProdCategorie", _
                     "[Prodcategorie]='" & NewData & "'")
    If IsNull(Result) Then
        ' If the artikel was not created, set the Response argument
        ' to suppress an error message and undo changes.
        Response = acDataErrContinue
        ' Display a customized message.
        MsgBox "Probeer opnieuw!"
        Me.Categorie = ""
    Else
        ' If the artikel was created, set the Response argument to
        ' indicate that new data is being added.
        
        Response = acDataErrAdded
    End If
End Sub

en deze in het form waar ik de nieuwe data wil bij zetten

Code:
Private Sub Form_Load()

    ' If Not IsNull(Me.OpenArgs) Then
    ' If form's OpenArgs property has a value, assign the contents
    ' of OpenArgs to the prodcategorie field. OpenArgs will contain
    ' a prodcategorie name if this form is opened using the OpenForm

    Dim ProdCategorie As String
    Dim Merk As String
    Dim Leverancier As String

    If Not IsNull(Me.OpenArgs) Then
    ' Split OpenArgs data into separate fields
      'Prodcategorie = Me.OpenArgs
       ProdCategorie = Left(OpenArgs, InStr(OpenArgs, ";") - 1)
       Merk = Mid(OpenArgs, InStr(OpenArgs, ";") + 1)
        Leverancier = Right(OpenArgs, InStr(OpenArgs, ";") + 1)
        
        Me![ProdCategorie] = ProdCategorie
        Me.Merk = Merk
        Me.Leverancier = Leverancier
    End If
End Sub
 
Ik denk dat ik weet waar je die code vandaan hebt. Niet van mij :). Ik gebruik een techniek die mij in ieder geval veel beter bevalt. Uiteraard is het principe hetzelfde: OpenArgs is namelijk altijd één string die je mee kunt geven. Wil je meerdere argumenten meegeven, dan moet je die dus samenstellen in dat ene argument. Hoe je die samenstelt maakt dus niet zoveel uit. Jij gebruikt de puntkomma, ik geef de voorkeur aan het pipe teken (|). Nogmaals: het teken maakt niet uit.
Het echte probleem ligt op het ontvangende formulier. Waar je de samengestelde string weer moet splitsen. En dat doe ik dus met SPLIT, want dat is veel simpeler en betrouwbaarder dan jouw methode. Je zet de waarden in een array, en de verschillende (bekende) indexen wijs je dan toe aan de velden.
Dus: prodCat = arr(0)
Merk = arr(1)
Leverancier = arr(2).

Ziet er toch een stuk simpeler uit!
 
nog enkele topic's afgezocht

maar geen idee hoe ik het moet doen ?
 
Ik pak er even een eigen voorbeeldje bij.
Code:
Private Sub Form_Load()
Dim sArgs() As String

    If Not IsNull(Me.OpenArgs) Then
        sArgs = Split(Me.OpenArgs, "|")
        Me.txtArtikelID.Value = sArgs(0)
        Me.txtArtikel.Value = sArgs(1)
        Me.cboBedrijfID.Value = sArgs(2)
    End If

End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan