In tabel kiezen uit een pull down (andere tabel) maar hoe ook meteen aanvullen?

Status
Niet open voor verdere reacties.

raymin

Gebruiker
Lid geworden
24 aug 2010
Berichten
127
Ik heb een tabel die ik via een formulier aanspreek. In dit formulier kan ik via een pull downmenu een keuze maken uit een andere tabel. Ik zou graag naast het kiezen uit de lijst, ook meteen tekst kunnen toevoegen. Die vervolgens de volgende keer in de lijst (andere tabel) staat.

(de keuze tabel is er eentje met slechts één kolom)
 
Dat kan heel simpel met de gebeurtenis <Bij niet in lijst> worden geregeld. Ik heb daar onlangs nog wat voorbeeldjes van gegeven deze maand in het forum, dus als je even zoekt op NotInList, dan vind je die wel.
 
Da's niet zo moeilijk, zoals ik al zei. Maar ter stimulatie hier een voorbeeldje van de 2 mogelijkheden die je hebt (query uitvoeren of formulier openen).
 
Ik heb één van de voorbeelden gebruikt. Ik voor de tekst in in een invoervak in een formulier, dan krijg ik netjes de vraag of ik de record wil toevoegen. Zodra ik op Ja klik, opend deze netjes het formulier toevoegen_adres. Als ik deze wil sluiten krijg ik een error op deze regel.
Code:
  tmp = DLookup("vertrek", "Gemeente", "[Gemeente]=""" & NewData & """")

Uiteraard ligt dit aan Gemeente en Gemeente, Wat moet ik daar invullen? de kolom record heet "vertrek"

Ik heb deze code gebruikt:
Code:
Private Sub Keuzelijst32_NotInList(NewData As String, Response As Integer)
Dim i As Variant, tmp As Variant
    If NewData = "" Then Exit Sub
    msg = "'" & NewData & "' staat niet in de lijst." & vbCr & vbCr
    msg = msg & "Wil je deze toevoegen?"
    i = MsgBox(msg, vbQuestion + vbYesNo, "Onbekende vertrekplaats. . ")
    If i = vbYes Then
        DoCmd.OpenForm "vertrek_adressen", DataMode:=acFormAdd, WindowMode:=acDialog, OpenArgs:=NewData
        tmp = DLookup("vertrek", "Gemeente", "[Gemeente]=""" & NewData & """")
        If Not tmp = vbNullString Then
            Response = acDataErrAdded
            Me.Keuzelijst32 = tmp
        Else
            MsgBox "Toevoegen van '" & NewData & "' is niet gelukt, neem contact op met de beheerder.", vbOKCancel
            Response = acDataErrContinue
        End If
    Else
        Response = acDataErrContinue
    End If
End Sub

En in het formulier die het adressen bestand opend:
Code:
Private Sub Form_Load()
    If Not Me.OpenArgs = "" Then Me.vertrek = Me.OpenArgs
End Sub
 
Ik zie wel iets vreemds in je code. Je opent het adres formulier met OpenArgs, en die waarde zet je dan op dat formulier in het veld [Vertrek]. Dat zal dus een plaatsnaam zijn, neem ik aan?
Code:
Private Sub Form_Load()
    If Not Me.OpenArgs = "" Then Me.vertrek = Me.OpenArgs
End Sub
Dan heb je het formulier gesloten, en wil je het ID opzoeken uit de tabel [Gemeente], en dat doe je dan volgens mij verkeerd. Ik zou iets verwachten als:
Code:
  tmp = DLookup("GemeenteID", "Gemeente", "[Vertrek]=""" & NewData & """")
 
Ik heb inderdaad een formulier waar in ik met een pulldownmenu kan kiezen uit een aantal adressen. (dit formulier heet vertrek_adressen) de kolom waar de adressen instaan heet "vertrek"

Het invoeren gaat goed, ik krijg dan ook vanuit de code de vraag "staat niet in de lijst, wil je deze toevoegen?"

Dan wordt het formulier "vertrek_adressen" geopend en is het nieuwe adres ingevuld.

Als ik nu het formulier sluit krijg ik de aangegeven error. (ik heb dus nergens gemeente staan, ik heb de code gepikt van de site, maar heb geen idee welke tabel of formulier ik daar moet opgeven.)

Het nieuwe adres wordt ook netjes in de tabel gezet die achter het formulier vertrek_adressen zit. Ik krijg enkel de foutmelding wanneer ik het formulier sluit.
 
Laatst bewerkt:
Deze werkt
Code:
tmp = DLookup("vertrek", "vertrek_adressen", "[vertrek]=""" & NewData & """")

Echter blijft de boel dan hangen op
Code:
 Me.Keuzelijst32 = tmp

Daar ben ik de sub toch mee begonnen. (het invoerveld/pulldownmenu)
 
Ha Octo,

Gelukt met deze code.

Code:
Private Sub kzl_merk_NotInList(NewData As String, Response As Integer)
    If NewData = "" Then Exit Sub
    Msg = "'" & NewData & "' staat niet in de lijst." & vbCr & vbCr
    Msg = Msg & "Wil je deze toevoegen?"
    i = MsgBox(Msg, vbQuestion + vbYesNo, "Onbekende naam . . ")
    If i = vbYes Then
        strSQL = "INSERT INTO tbl_merk ([Merk]) VALUES ('" & NewData & "');"
        CurrentDb.Execute strSQL, dbFailOnError
        Response = acDataErrAdded
    Else
        Response = acDataErrContinue
    End If
End Sub
 
Ik zie een hele andere tabelnaam staan en een ander tabelveld. Dan verbaast het me niks dat de oorspronkelijke code niet werkte :). Overigens: als je een opzoektabel hebt met slechts één veld, (en een ID veld neem ik aan) dan is het niet zo zinvol om dat via een formulier te doen; je hoeft immers maar één waarde in te vullen. Kun je net zo goed via de query optie doen. Zoals je nu dus doet.
:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan