PDA

Vollständige Version anzeigen : Bei der Suche Laufzeitfehler 3464


DCStefano
27.10.2003, 09:31
Habe ein Problem mit meiner Suche.
Ich habe eine Tabelle die ständig aktualisiert werden muss, deshalb habe ich ein Ansichtsformular angelegt. Um die Datensätze zu ändern, wird ein Suchformular mit einem Kombinationsfeld aufgerufen, mit welchem man dann nach dem jeweiligen DS suchen sollte, nur ist irgendetwas an meinem Code falsch, nur weiß nicht was!

Hier der Code des Suchbuttons:

Private Sub Suchen_Click()
' Button Suchen
On Error GoTo err_Fehlermeldung
' Aktualisierung der Datensätze im Anzeigeformular (Ansicht_Mitarb_Stammdaten):
' Neu angelegte Datensätze können jetzt sofort gesucht und gefunden werden
Forms![Ansicht_Mitarb_Stammdaten].Requery
'Setzt den aktuellen Datensatz im Formular
Forms![Ansicht_Mitarb_Stammdaten].RecordsetClone.FindFirst "[PersNr] =" & Me![Kombinationsfeld19]
Forms![Ansicht_Mitarb_Stammdaten].Bookmark = Forms![Ansicht_Mitarb_Stammdaten].RecordsetClone.Bookmark
DoCmd.Close
Exit Sub

' Fehlerüberprüfung falls kein Wert angegeben wurde
err_Fehlermeldung:
Dim Fehlermeldung As Variant
Fehlermeldung = MsgBox("Kein Mitarbeiter der Liste wurde ausgewählt!", vbExclamation, "Kein Mitarbeiter der Liste")
Debug.Print Fehlermeldung
End Sub

Ohne die Fehlerbehandlung bekomme ich folgende Fehlermeldung:
Laufzeitfehler '3464':
Datentypen in Kriterienausdruckunverträglich.

Was ist habe ich falsch gemacht?
Hier noch eine Beispieldatenbank:

Lothi
27.10.2003, 09:42
Hallo stefano

in deiner DB ist die PersonalNr als Text definiert

Forms![Ansicht_Mitarb_Stammdaten].RecordsetClone.FindFirst "[PersNr] =" & Me![Kombinationsfeld19]
ändern zu

Forms![Ansicht_Mitarb_Stammdaten].RecordsetClone.FindFirst "[PersNr] = ' " & Me![Kombinationsfeld19] & "'"

DCStefano
27.10.2003, 10:03
@ Lothi

Danke für die Hilfe, der Laufzeitfehler ist nun behoben, nur springt mir Access nicht zu dem gewünschtem Datensatz, sondern bleibt beim ersten Datensatz stehen.
Aber der Code müsste doch richtig sein, oder?
'Setzt den aktuellen Datensatz im Formular
Forms![Ansicht_Mitarb_Stammdaten].RecordsetClone.FindFirst "[PersNr] = ' " & Me![Kombinationsfeld19] & "'"
Forms![Ansicht_Mitarb_Stammdaten].Bookmark = Forms![Ansicht_Mitarb_Stammdaten].RecordsetClone.Bookmark

Lothi
27.10.2003, 11:25
Hallo Stephano


Habe es ausprobiert und es funktioniert.
Habe die DB nochmals abgeladen, nochmals probiert und sie funktionierte immer noch.

Kann also das Problem nicht nachvollziehen.
Laut meinen bescheidenen VBA Kenntnissen stimmt der Code.

DCStefano
27.10.2003, 12:51
Also bei mir funtioniert die Abfrage nicht, habe Access 97 (habe es bei mir versucht, ohne Erfolg, habe mir dann die DB nochmals geladen und den Code wie oben aufgeführt geändert, ebenfalls ohne Erfolg)

Ich öffne die Datei, dann das Formular "Ansicht_Mitarb_Stammdaten" öffnen, dann den Button "DS Suchen" ==> Formular "Suchen_Formular" wird geöffnet. Ich wähle einen Eintrag aus dem Kombifeld (z.B. den Eintrag "Zenger, Michael" und nun sollte im "Formular "Ansicht_Mitarb_Stammdaten" der DS von "Zenger, Michael" angezeigt werden, doch es wird mir immer der erste (also "Beckenbauer, Franz" DS angezeigt.

Was muss ich ändern, steh irgendwie auf dem Schlauch!

Lothi
27.10.2003, 14:39
...der DS von "Zenger, Michael" angezeigt werden, doch es wird mir immer der erste (also "Beckenbauer, Franz" DS angezeigt.


und dann auf den Button Suchen geklickt?

DCStefano
27.10.2003, 15:05
@ Lothi:

Ja natürlich habe ich dann den Button "Suchen" gedrückt. Ich weiß einfach nicht woran es liegen könnte. Hier nochmals meine DB (mit dem geänderten VBA-Code) zur Ansicht:

Lothi
27.10.2003, 15:16
Hallo

Nimm mal hier bei der Zeile zwischen dem Semikolon und dem Gänsefüsschen den Leerschlag raus

Forms![Ansicht_Mitarb_Stammdaten].RecordsetClone.FindFirst "[PersNr] = ' " & Me![Kombinationsfeld19] & "'"

Arne Dieckmann
27.10.2003, 15:20
Genau das wollte ich auch schreiben - die Zeile muss dann so aussehen:

Forms![Ansicht_Mitarb_Stammdaten].RecordsetClone.FindFirst "[PersNr] = '" & Me![Kombinationsfeld19] & "'"

DCStefano
27.10.2003, 15:24
@ Lothi

Ein riesiges Dankeschön, ich denke den Fehler hätte ich wahrscheinlich in 100 Jahren nicht gefunden!!! DANKE für deine Geduld!!!

JS2
11.08.2004, 13:59
Original geschrieben von Lothi
Hallo

Nimm mal hier bei der Zeile zwischen dem Semikolon und dem Gänsefüsschen den Leerschlag raus

Forms![Ansicht_Mitarb_Stammdaten].RecordsetClone.FindFirst "[PersNr] = ' " & Me![Kombinationsfeld19] & "'"

Warum muss denn für die PersNr ein Semikolon oben gesetzt werden?

1. Ist das die Bedingung wenn man in einem Feld sucht, dass als Text definiert ist?

2. Wann muss man denn die eckigen Klammern in einer Bedingung setzen? Gilt das nur für diese WHERE Ausdrücke.

Danke
Jens

genschman
11.08.2004, 14:09
Hallo,

ein "Semikolon" ist da gar nicht dabei, evtl meinst Du ein "Hochkomma", also das Zeichen über dem Doppelkreuz auf der Tastatur. Das wird immer benötigt, wenn Vergleiche mit Textvariablen gemacht werden, und zwar vor der Variablen und danach.
2. ja
3. die eckigen Klammern sind notwendig , wenn im Variablenname oder Feldname Umlaute oder Leerzeichen sind. Empfehlenswert ist es aber, die eckigen Klammern um alle selbst vergebenen Bezeichner für Steuerelemente oder Datensatzvariable zu setzen.