combobox bijwerken

Status
Niet open voor verdere reacties.

RSpan

Gebruiker
Lid geworden
10 jun 2009
Berichten
166
Hoi,hoi forumleden
Ik zit met een vraag over bijwerken van comboboxen
Ik heb een combobox in een formulier klant en daar selecteer ik de plaats mee bij het invullen van de klantgegevens.
Deze gegevens worden uit de tabel plaatsen gehaald.
Nu kan het voorkomen dat de bewuste plaats nog niet in de tabel voorkomt in dat geval moet er een formulier “plaatsen toevoegen” geopend worden om, je raad het al, de bewuste plaats toe te voegen.
Na het nodige zoekwerk kwam ik een voorbeeld tegen op het forum van Octafish.

Ik heb geprobeerd deze te vertalen naar mijn situatie maar dat is me nog niet gelukt, ik krijg een foutmelding bij het testen :(, bij de volgende regel:

Code:
CboPlaats_AfterUpdate

Sub of function is niet gedefinieerd.

Hierbij de aangepaste code:
Code:
Private Sub CboPlaats_NotInList(NewData As String, Response As Integer)

Dim Result
Dim Msg As String
Dim CR As String

    CR = Chr$(13)
    If NewData = "" Then Exit Sub

    ' Ask the user if he or she wishes to add the new customer.
    Msg = "'" & NewData & "' Deze plaats staat niet in de lijst." & CR & CR
    Msg = Msg & "wilt u deze toevoegen?"
    If MsgBox(Msg, vbQuestion + vbYesNo) = vbYes Then
        DoCmd.OpenForm "frmplaatsen", , , , acAdd, acDialog, NewData
    End If

    ' Look for the customer the user created in the Customers form.
    Result = DLookup("[plaatsenID]", "tblPlaatsen", "[Plaats]='" & NewData & "'")
    If IsNull(Result) Then
       Response = acDataErrContinue
       MsgBox "Niet gelukt, nog maar eens proberen!"
    Else
       Response = acDataErrAdded
    End If
    Me.CboPlaats.Value = Result
    CboPlaats_AfterUpdate

End Sub

ik hoop dat iemand mij verder kan helpen.:)
mvg
René
 
Laatst bewerkt:
Wat is het probleem? Wordt het formulier frmPlaatsen geopend met de nieuwe plaatsnaam? Krijg je een waarde in Result na de DLookup?

CboPlaats_AfterUpdate is in ieder geval niet goed, want er is geen update. Moet waarschijnlijk zijn: Me.cboPlaats.Requery
 
Laatst bewerkt:
Wat is het probleem? Wordt het formulier frmPlaatsen geopend met de nieuwe plaatsnaam? Krijg je een waarde in Result na de DLookup?

CboPlaats_AfterUpdate is in ieder geval niet goed, want er is geen update. Moet waarschijnlijk zijn: Me.cboPlaats.Requery

Hoi Michel

Er zijn nu twee fouten waar ik niet uit kom.
Bij het invoeren van een nieuwe plaats wordt het formulier plaatsen toevoegen geopend, maar met een leeg veld, de plaats die ik heb ingetypt in de combobox verschijnt niet in het formulier.
Klopt dit, het is de bedoeling dat hier de plaats niet opnieuw ingetypt hoeft te worden.
kan dat?
Bij sluiten van het formulier plaatsen invoegen zonder er iest ingetypt te hebben verschijnt de mededeling niet gelukt nog eens proberen, als ik nu op ok klik krijg ik een fout bij de volgende regel:
Code:
Me.CboPlaats.Value = Result

ben ik iets vergeten over te nemen van jouw code?

Code:
Private Sub CboPlaats_NotInList(NewData As String, Response As Integer)

Dim Result
Dim Msg As String
Dim CR As String

    CR = Chr$(13)
    If NewData = "" Then Exit Sub

    ' Ask the user if he or she wishes to add the new customer.
    Msg = "'" & NewData & "' Deze plaats staat niet in de lijst." & CR & CR
    Msg = Msg & "wilt u deze toevoegen?"
    If MsgBox(Msg, vbQuestion + vbYesNo) = vbYes Then
        DoCmd.OpenForm "frmplaatsen", , , , acAdd, acDialog, NewData
    End If

    ' Look for the customer the user created in the Customers form.
    Result = DLookup("[plaatsenID]", "tblPlaatsen", "[Plaats]='" & NewData & "'")
    If IsNull(Result) Then
       Response = acDataErrContinue
       MsgBox "Niet gelukt, nog maar eens proberen!"
    Else
       Response = acDataErrAdded
    End If
    Me.CboPlaats.Value = Result
    Me.CboPlaats.Requery
    

End Sub

mvg
René

Hoi, hoi ik heb een gedeelte van het probleem opgelost t.w. het overnemen van de nieuwe plaats.

heb de volgernde code in het form plaatsen bij de gebeurtenis "bij laden" gezet
Code:
Option Compare Database
Option Explicit

Private Sub Form_Load()
   
    If Not IsNull(Me.OpenArgs) Then Me.Plaats = Me.OpenArgs
    Me.Plaats.SetFocus

End Sub

Private Sub Sluiten_Click()
On Error GoTo Err_Sluiten_Click

    If Me.Dirty Then Me.Dirty = False
    DoCmd.Close acForm, Me.Form.FrmPlaatsen, acSaveYes
    Exit Sub

Err_Sluiten_Click:
    MsgBox Err.Description
    
End Sub

dit werkt.
blijft er nog één foutmelding over wanneer er geen gegevens worden ingetypt.
Kun je me daar nog mee helpen Michel, heel graag.

mvg
René
 
Laatst bewerkt:
Hoi Michel

Er zijn nu twee fouten waar ik niet uit kom.
Bij het invoeren van een nieuwe plaats wordt het formulier plaatsen toevoegen geopend, maar met een leeg veld, de plaats die ik heb ingetypt in de combobox verschijnt niet in het formulier.
Klopt dit, het is de bedoeling dat hier de plaats niet opnieuw ingetypt hoeft te worden.
kan dat?
Bij sluiten van het formulier plaatsen invoegen zonder er iest ingetypt te hebben verschijnt de mededeling niet gelukt nog eens proberen, als ik nu op ok klik krijg ik een fout bij de volgende regel:
Code:
Me.CboPlaats.Value = Result

ben ik iets vergeten over te nemen van jouw code?

Code:
Private Sub CboPlaats_NotInList(NewData As String, Response As Integer)

Dim Result
Dim Msg As String
Dim CR As String

    CR = Chr$(13)
    If NewData = "" Then Exit Sub

    ' Ask the user if he or she wishes to add the new customer.
    Msg = "'" & NewData & "' Deze plaats staat niet in de lijst." & CR & CR
    Msg = Msg & "wilt u deze toevoegen?"
    If MsgBox(Msg, vbQuestion + vbYesNo) = vbYes Then
        DoCmd.OpenForm "frmplaatsen", , , , acAdd, acDialog, NewData
    End If

    ' Look for the customer the user created in the Customers form.
    Result = DLookup("[plaatsenID]", "tblPlaatsen", "[Plaats]='" & NewData & "'")
    If IsNull(Result) Then
       Response = acDataErrContinue
       MsgBox "Niet gelukt, nog maar eens proberen!"
    Else
       Response = acDataErrAdded
    End If
    Me.CboPlaats.Value = Result
    Me.CboPlaats.Requery
    

End Sub

mvg
René

Hoi, hoi ik heb een gedeelte van het probleem opgelost t.w. het overnemen van de nieuwe plaats.

heb de volgernde code in het form plaatsen bij de gebeurtenis "bij laden" gezet
Code:
Option Compare Database
Option Explicit

Private Sub Form_Load()
   
    If Not IsNull(Me.OpenArgs) Then Me.Plaats = Me.OpenArgs
    Me.Plaats.SetFocus

End Sub

Private Sub Sluiten_Click()
On Error GoTo Err_Sluiten_Click

    If Me.Dirty Then Me.Dirty = False
    DoCmd.Close acForm, Me.Form.FrmPlaatsen, acSaveYes
    Exit Sub

Err_Sluiten_Click:
    MsgBox Err.Description
    
End Sub

dit werkt.
blijft er nog één foutmelding over wanneer er geen gegevens worden ingetypt.
Kun je me daar nog mee helpen Michel, heel graag.

mvg
René




Jaaaaa

ik heb de oplossing gevonden.:D:D

hierbij de aanpassing die ik gedaan heb:
Code:
Private Sub CboPlaats_NotInList(NewData As String, Response As Integer)

On Error GoTo Err_cboplaats

Dim Result
Dim Msg As String
Dim CR As String

    CR = Chr$(13)
    If NewData = "" Then Exit Sub

    ' Ask the user if he or she wishes to add the new customer.
    Msg = "'" & NewData & "' Deze plaats staat niet in de lijst." & CR & CR
    Msg = Msg & "wilt u deze toevoegen?"
    If MsgBox(Msg, vbQuestion + vbYesNo) = vbYes Then
        DoCmd.OpenForm "frmplaatsen", , , , acAdd, acDialog, NewData
    End If
    

    ' Look for the customer the user created in the Customers form.
    Result = DLookup("[plaatsenID]", "tblPlaatsen", "[Plaats]='" & NewData & "'")
    If IsNull(Result) Then
       Response = acDataErrContinue
       MsgBox "Niet gelukt, nog maar eens proberen!"
    Else
       Response = acDataErrAdded
    End If
    Me.CboPlaats.Value = Result
    Me.CboPlaats.Requery
    Me.CboPlaats.Enabled = True

Exit_cboplaats:
    Exit Sub

Err_cboplaats:
    MsgBox Err.Description
    Resume Exit_cboplaats

End Sub


wanneer ik nu, bij de vraag of deze plaats moet worden toegevoegd nee klik dan verschijnt niet het form plaatsen toevoegen en blijf ik in het klanten formulier er volgt dan de mededeling dat er nog een plaats moet worden ingevuld in het formulier.
Bedankt weer voor de hulp:thumb:
groetjes
René:D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan