Probleem met combobox

Status
Niet open voor verdere reacties.

djenn

Gebruiker
Lid geworden
2 sep 2006
Berichten
68
Ik heb op een formulier twee comboboxen, beide worden gevuld uit een tabel mbv een query.
Nu wil ik dat, indien er een naam in zo'n combobox wordt getypt die er niet door de query is ingezet, er een nieuwe form wordt geopend waarin ik de mogelijkheid krijg om een nieuw record in de tabel te schrijven.
Bij één combobox lukt me dat prima, bij de ander zegt acces dat de ingetypte tekst geen deel uitmaakt van de lijst in die combobox, wat natuurlijk wel zo is.
Maar waarom lukt de andere box wel?
 
Ik snap je probleem niet helemaal; heb je twee keuzelijsten die op dezelfde tabel zijn gebaseerd? En wat bedoel je met:
Bij één combobox lukt me dat prima, bij de ander zegt acces dat de ingetypte tekst geen deel uitmaakt van de lijst in die combobox, wat natuurlijk wel zo is.
En wat doe je precies dan? Welke gebeurtenis gebruik je?
 
De boxen worden uit verschillende tabellen gevuld, met voor iedere combo box een eigen query.
Ik heb bv een combox die gevuld wordt met de artikelnaam en de artikelsoort uit de artikel tabel.
Als je nu in de box een niet in de box voorkomende naam typt en je verlaat de box wordt de volgende code uitgevoerd:
Code:
Private Sub cboArtikel_AfterUpdate()


If Not IsNull(cboArtikel.Column(1)) Then
    
    txtsoort.Value = cboArtikel.Column(1) ' column(1) bevat de artikelsoort
Else
    DoCmd.OpenForm "NieuwArtikelF", acNormal, , , , acWindowNormal, cboArtikel.Value
    
End If

End Sub

Bovenstaande werkt perfect.

Ook doe ik het zelfde met een andere combobox maar dan met de gegevens uit de Relaties tabel, in die box worden de relatienaam en het relatieID geladen.
Als ik nu een naam in de box type die niet in de box voorkomt wordt de bijbehoren code niet uitgevoerd, maar krijg de fout melding dat de getypte naam niet in de lijst voor komt.

Code:
Private Sub cboWinkel_AfterUpdate()

If IsNull(cboWinkel.Column(1)) Then
DoCmd.OpenForm "NieuweRelatieF", acNormal, , , , acWindowNormal, cboWinkel.Value

End If
 
Je gebruikt de verkeerde routine; keuzelijsten hebben de gebeurtenis <Bij niet in lijst> <NotInList>) die automatisch getriggerd wordt als je een waarde intypt die niet bestaat. In die procedure kun je dan ofwel een record toevoegen (als het om één veld gaat, de waarde van de keuzelijst), ofwel een formulier openen waarin je meerdere gegevens kunt ingeven zoals een artikel of een klant. Bij terugkeer naar de keuzelijst wordt die dan automatisch bijgewerkt.
 
Hardstikke bedankt!
Dat wil zeggen, morgen ga ik het proberen want nu is het me te laat.
IK laat van me horen.
 
Prima! Als je er niet uitkomt: doe er een voorbeeldje bij, dat is altijd handig.
 
Na wat vijfen en zessen ben ik eruit, het bleek dat de LimmitToList property fout stond.
met onderstaande code kan ik nu een niet bestaande naam toevoegen.
Bedankt voor het meedenken.
Code:
Private Sub cboRelatie_NotInList(NewData As String, Response As Integer)
Dim rs As Recordset
Response = acDataErrContinue
    Set rs = CurrentDb.OpenRecordset("RelatiesT")
    rs.AddNew
    rs!naam = NewData
    rs.Update
    rs.Close
Response = acDataErrAdded
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan