Visio Vba Recordset.Find problem

Hallo,

Ich wollte mit der FindMethode für ADO-Recordsets einen Datensatz aus der Datenbank suchen. Leider scheint es einen Fehler im Makro zu geben weshalb er den Datensatz nicht findet.

Hier der Code:

Sub AccessConnect()

Dim rs As ADODB.Recordset
Dim strName as String

Set rs = New ADODB.Recordset

rs.ActiveConnection = „Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ _
& C:\Project\Database.mdb & „:stuck_out_tongue_winking_eye:ersist Security Info=False“

rs.CursorType = adOpenDynamic

rs.LockType = adLockOptimistic

rs.Open „select * FROM Personal“

strName = „Hans“

rs.Find „[Nachname] = „““ & strName & „“""

MsgBox rs.Fields(„Nachname“).Value

Exit Sub

Ich vermute das Problem liegt in der Anweisung der Findmethode:
rs.Find „[Nachname] = „““ & strName & „“""

wenn ich den Code allerdings so schreibe:
rs.Find "[Nachname] = " & strName

wird eine Fehlermeldung ausgegeben (Run-time error ‚3001‘), da strName Text also ein String ist.

Der Eintrag wird erst gefunden wenn ich ihn in der Datenbank in Anführungszeichen setze.

Die Frage ist nun wie ich einen Datensatz finden kann ohne das sie in Anführungszeichen stehen müssen.

Danke im vorraus

Hallo,

ja,. ich glaube deine Vermutung ist richtig. In einem SQL Statement muss der Text-Parameter in Anfuehrungszeichen eingeschlossen werden, allerdings in einfache Anfuehrungszeichen '.

rs.Find „[Nachname] = '“ & strName & „’“
oder

rs.Open „select * FROM Personal WHERE Nachmane = '“ & strName & „’“

Hope this helps

Tschau
Peter

Hallo,

Leider kann ich hierbei nicht helfen…

Sorry

Christian

Keine Ahnung von Visio.

Hallo DAO,

so müßte es gehen:

rs.Find „[Nachname] = '“ & strName & „’“

Also Hochkomma ( ’ ) statt Gänsefüsschen ( " ).

Gilt für alle Datenfelder, die Zeichenfolgen beinhalten.

Gruß
Harry

Hallo,

versuche es mit einfachen Hochkommata, manche Datenbanken verlangen einfache Hochkommata, also " ’ " statt " " ".

Ansonten kann es sein, dass es Hans in dieser Schreibweise nicht gibt (Case-sensitiv), versuche den Vergleich ggf. mit ucase() = ucase() oder so

Hallo Peter,

Danke für die schnelle Antwort.

Das war genau der Fehler.^^

Hallo
Der Ausdruck
rs.Find „[Nachname] = „““ & strName & „“""
ist falsch. Suchausdrücke müssen in Hochkommatas
gestellt werden, also in etwa so:

rs.Find „[Nachname] = '“ & strName & „’“

Dann sollte es auch funktionieren.

Gruß Wolfgang

Hallo,

ich behelfe mir da häufig über eine Zwischenvariable. Ich schreibe also nicht
RS.Find " etcetc

sondern :

Übergabe = " etcetc
RS.Find Übergabe

So kannst Du mit F8 im Einzelschritt drübergehen, und durch Bewegen des Mauszeigers über „Übergabe“ siehst Du, ob da das richtige steht.

Mit freundlichem Gruße, Matthias