Zie ook elders op deze site:
| PCMenu | Access Tips en trucs | Programmavoorbeelden Access |
Hebt u een vraag over Access, stel deze dan op een van de forums, bijvoorbeeld http://office.webforums.nl
(Deze tekst is geschreven voor de gevorderde Access-gebruiker.)
De methode Bij niet in lijst is lastig te doorgronden. Deze pagina geeft hier meer uitleg over.
Situatieschets:
U wilt vanuit een formulier in een Keuzelijst met invoervak een waarde kunnen zoeken uit een opzoektabel. Als de waarde niet in de opzoektabel staat, dan wilt u deze waarde toevoegen aan de opzoektabel.
U kunt hiervoor de Gebeurtenis Bij niet in lijst van de Keuzelijst met invoervak gebruiken. Zet de Eigenschap Alleen lijst op Ja. Gebruik voor de rijbron de opzoektabel. Let op: het sleutelveld moet het veld zijn dat u in de Keuzelijst met invoervak wilt weergeven, u kunt bij de methode Bij niet in lijst geen verborgen sleutelveld gebruiken.
In dit voorbeeld vult u de opzoektabel tblAanhef met de nieuwe waarde van de Keuzelijst met invoervak cboAanhef op het formulier frmNaam.
In Access 2000/XP kunt u gebruik maken van ActiveX Data Object (ADO) code:
Private Sub cboAanhef_NotInList(NewData As String, Response As Integer)
'Werkt alleen in Access 2000/XP (ADO)
Dim bytDoorgaan as Byte
bytDoorgaan = MsgBox("Wilt u " &
NewData & " aan de lijst toevoegen?", vbDefaultButton1 + vbYesNo,
"Aan lijst toevoegen")
If bytDoorgaan = vbYes Then
' Voeg record toe aan de opzoektabel
tblAanhef
Dim rst As New ADODB.Recordset
Dim strSQL As String
strSQL = "Select * From tblAanhef"
rst.Open strSQL, CurrentProject.Connection, adOpenKeyset,
adLockOptimistic
With rst
.AddNew
!Aanhef = NewData
.Update
.Close
End With
Response = acDataErrAdded
MsgBox "De aanhef "& NewData & " is toegevoegd aan de tabel
Aanhef."
Else
Response = Empty
End If
End Sub
In Access 97 kunt u alleen gebruik maken van DAO code. Deze code werkt ook in 2000/XP, maar dan moet u de verwijzing naar DAO aanzetten.
Private Sub cboAanhef_NotInList(NewData As String, Response As
Integer)
Dim bytDoorgaan as Byte
bytDoorgaan = MsgBox("Wilt u " &
NewData & " aan de lijst toevoegen?", vbDefaultButton1 + vbYesNo,
"Aan lijst toevoegen")
If bytDoorgaan = vbYes Then
' Voeg record toe aan de opzoektabel
tblAanhef
Dim dbs As DAO.Database
Dim rs As DAO.Recordset
Set dbs = CurrentDb
Set rs = dbs.OpenRecordset("tblAanhef")
With rs
.AddNew
!Aanhef = NewData
.Update
End With
rs.Close
dbs.Close
Response = acDataErrAdded
MsgBox "De aanhef is toegevoegd aan de tabel
Aanhef."
Else
Response
= Empty
End If
End Sub