Hallo iedereen,
Ik had wat vraagjes over de access database die ik gemaakt heb. Ik heb twee vragen: de eerste gaat over de zoekfunctie die ik in de database gezet heb. Ik krijg namelijke een foutmelding, terwijl ik exact dezelfde functie wel werkend heb in een andere database. Ik krijg de foutmelding:
De expressie bij klikken die u hebt opgegeven als instelling voor de gebeurteniseigenschap, heeft de volgende fout veroorzaakt: Er is een fout opgetreden in de communicatie tussen Microsoft Office Access en het OLE-bronprogramma of het ActiveX-besturingselement.
De expressie geeft niet de naam van een macro, de naam van een door de gebruiker gedefinieerde functie of een [gebeurtenisprocedure] als resultaat
Er is een fout opgetreden bij het evalueren van een functie, gebeurtenis of macro.
Heeft iemand enig idee wat deze fout kan veroorzaken?
Dit is de code die gebruikt wordt als ik de zoek-knop indruk:
Mocht er nog iets anders nodig zijn om het probleem op te lossen dan kan ik eventueel ook de rest van de database uploaden.
De tweede vraag die ik heb gaat over het invoeren van een formulier. Ik wil graag als een bepaalde waarde geselecteerd wordt in een lijst (opzoektabel), in een volgend selectieveld daaraan gekoppelde waarden selecteren. Dus bijvoorbeeld als in de materiaallijst Keramiek geselecteerd wordt, in de lijst daarna de soorten keramiek geselecteerd kunnen worden, en bij Steen, de steensoorten etc. Hoe zou ik dit kunnen doen?
Alvast bedankt!
Ik had wat vraagjes over de access database die ik gemaakt heb. Ik heb twee vragen: de eerste gaat over de zoekfunctie die ik in de database gezet heb. Ik krijg namelijke een foutmelding, terwijl ik exact dezelfde functie wel werkend heb in een andere database. Ik krijg de foutmelding:
De expressie bij klikken die u hebt opgegeven als instelling voor de gebeurteniseigenschap, heeft de volgende fout veroorzaakt: Er is een fout opgetreden in de communicatie tussen Microsoft Office Access en het OLE-bronprogramma of het ActiveX-besturingselement.
De expressie geeft niet de naam van een macro, de naam van een door de gebruiker gedefinieerde functie of een [gebeurtenisprocedure] als resultaat
Er is een fout opgetreden bij het evalueren van een functie, gebeurtenis of macro.
Heeft iemand enig idee wat deze fout kan veroorzaken?
Dit is de code die gebruikt wordt als ik de zoek-knop indruk:
Code:
Private Sub Knop12_Click()
Dim strVondstNummer As String 'wordt gebruikt om het huidige vondstnummer uit te lezen
Dim strFilter As String 'een zoekfilter dat over de recordset gegooid kan worden om het juiste record te vinden
Dim rstVondsten As ADODB.Recordset 'een lijst met vondsten
Dim lngRecordId As Long 'het vondstnummer dat de te tonen vondst identificeert
On Error GoTo OpenFormulier
strVondstNummer = Forms("Vondsten").vondstnummer
On Error GoTo 0
GaZoeken:
'Bouw eeen zoekfilter
strFilter = ""
If Me.vondstnummer <> "" Then
strFilter = "vondstnummer = " & CStr(Me.vonstnummer)
End If
If Me.werkput <> "" Then
If strFilter = "" Then
strFilter = "werkput = " & CStr(Me.werkput)
Else
strFilter = "(" & strFilter & ") AND (werkput = " & Me.werkput & ")"
End If
End If
If Me.vlak <> "" Then
If strFilter = "" Then
strFilter = "vlak = " & CStr(Me.vlak)
Else
strFilter = "(" & strFilter & ") AND (vlak = " & Me.vlak & ")"
End If
End If
If Me.spoornummer <> "" Then
If strFilter = "" Then
strFilter = "spoornummer = " & CStr(Me.spoornummer)
Else
strFilter = "(" & strFilter & ") AND (spoornummer = " & Me.spoornummer & ")"
End If
End If
If Me.categorie <> "" Then
If strFilter = "" Then
strFilter = "categorie = " & CStr(Me.categorie)
Else
strFilter = "(" & strFilter & ") AND (categorie = " & Me.categorie & ")"
End If
End If
'Open de database tabel met vondsten
Set rstVondsten = New ADODB.Recordset
rstVondsten.LockType = adLockOptimistic
rstVondsten.Open "Vondsten", CurrentProject.Connection, adOpenStatic
rstVondsten.MoveFirst
'Filter nu de records en zoek het vondstnummer van de vondst die getoond moet worden
lngRecordId = -1
If rstVondsten.RecordCount > 0 Then
If Me.vonstnummer <> "" Then
rstVondsten.Filter = strFilter 'maak een subselectie van alle vondsten, om gericht te zoeken naar het toepasselijke vondstnummer
If rstVondsten.RecordCount > 0 Then
rstVondsten.MoveFirst
lngRecordId = rstVondsten.Fields(0)
If CStr(lngRecordId) = Trim(strVondstNummer) Then
If MsgBox("Alle vondsten zijn doorzocht. Opnieuw zoeken vanaf het begin?", vbQuestion + vbYesNo, "Altijd maar weer die keuzes...") = vbNo Then
Exit Sub
End If
End If
End If
Else
If strFilter = "" Then 'hou rekening met de huidig geselecteerde vondst
rstVondsten.Filter = "vonstnummer > " & strVondstNummer
Else
rstVondsten.Filter = "(" & strFilter & ") AND (vonstnummer > " & strVondstNummer & ")"
End If
If rstVondsten.RecordCount <= 0 Then 'als er geen records zijn vanaf de huidige vondst, begin dan weer met zoeken aan het begin
If MsgBox("Alle vondsten zijn doorzocht. Opnieuw zoeken vanaf het begin?", vbQuestion + vbYesNo, "Altijd maar weer die keuzes...") = vbYes Then
rstVondsten.Filter = strFilter
Else
Exit Sub
End If
End If
If rstVondsten.RecordCount > 0 Then 'als er records gevonden zijn, ga dan naar het eerste record
rstVondsten.MoveFirst
lngRecordId = rstVondsten.Fields(0)
End If
End If
End If
'Sluit de database weer netjes
rstVondsten.Close
If lngRecordId < 0 Then 'als er geen resultaten konden worden gevonden
MsgBox "De zoekopdracht heeft geen resultaten opgeleverd.", vbInformation + vbOKOnly, "That is illogical captain."
Else
DoCmd.OpenForm "Vondsten", acNormal 'nodig om fouten met FindRecord te voorkomen
Forms("Vondsten").vonstnummer.SetFocus
DoCmd.FindRecord CStr(lngRecordId), acEntire, False, acSearchAll, , acCurrent
End If
Exit Sub
OpenFormulier:
DoCmd.OpenForm "Vondsten", acNormal
strVondstNummer = Forms("Vondsten").vonstnummer
GoTo GaZoeken
End Sub
Mocht er nog iets anders nodig zijn om het probleem op te lossen dan kan ik eventueel ook de rest van de database uploaden.
De tweede vraag die ik heb gaat over het invoeren van een formulier. Ik wil graag als een bepaalde waarde geselecteerd wordt in een lijst (opzoektabel), in een volgend selectieveld daaraan gekoppelde waarden selecteren. Dus bijvoorbeeld als in de materiaallijst Keramiek geselecteerd wordt, in de lijst daarna de soorten keramiek geselecteerd kunnen worden, en bij Steen, de steensoorten etc. Hoe zou ik dit kunnen doen?
Alvast bedankt!