PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problemme mit Recordset in VB6


Johnny
2005-02-23, 16:26:59
Hallo, was muss ich tun, damit ich Methode "Bookmark" im Zusammenhang mit eime Recordset-Object benutzen kann. Jedes mal wenn ich die Methode benutze kommt Laufzeitfehler 3251. Dazu komm die Meldung, daß das aktuelle Recordset keine Lesezeichen unterstützt. "CursorLocation" habe ich auf "adUseClient" gestzt. Benutze VB6 und Access2003. Ich weiss, ist nicht einfach, aber ich brauche es dringend. Danke.

Alex1234
2005-02-23, 16:45:00
Hast du mal ein Codesnippet und die genaue Fehlermeldung? Der Fehler 3251 ist eigentlich ein Fehler, der auftaucht, wenn Daten nicht aktuell sind oder nicht upgedatet werden können. Versuche mal vor Verwendung der Bookmark alle Daten in der Datenbank zu aktualisieren.

Lokutus01
2005-02-23, 19:58:38
bookmarks gehen aber tatsächlich nicht immer: Beispielsweise bei ODBC...

Vielleicht hilft es ja, sich den Datensatz über den Schlüssel zu merken?

Johnny
2005-02-24, 10:37:53
Danke schon mal für die Antworten. Vielleicht noch paar Infos zum Programm.

'Funktion zum direkten Suchen nach einem Datensatz

'prüft ob datensatz vorhanden
sql_str = "select count(*) from Kunden where kundennummer=" & txt_kd(0).Text & ""
Set records = con.Execute(sql_str)

'sucht den datensatz
If (records.Fields(0) = "1") Then
sql_str = "SELECT * FROM Kunden where Kundennummer = " & txt_kd(0).Text & ""
Set records = con.Execute(sql_str)

'versucht sich die stellezu merken, damit dann weiter mit MoveNext oder MovePrivious gearbeitet werden kann
book=records.Bookmark 'FEHLER 3251


@Alex. Mit welcher Methode würde es denn gehen

@Lokutus. Hat warscheinlich in meinem Fall kein Sinn, weil ich dann weiter mit MoveNext und so arbeiten muß oder?

Alex1234
2005-02-24, 10:53:19
'sucht den datensatz
If (records.Fields(0) = "1") Then
sql_str = "SELECT * FROM Kunden where Kundennummer = " & txt_kd(0).Text & ""
Set records = con.Execute(sql_str)Ich verstehe den Sinn nicht ganz. Wenn du diesen Select ausführst, dann hast du doch nur einen einzigen Datensatz. Oder hast du mehrere Kunden mit der gleichen Nummer? Wenn du aber nur einen Datensatz im Recordset hast, wohin willst du dann mit Movenext usw. springen?

Johnny
2005-02-24, 11:02:27
Nein Kundennummmer ist Primärschlüssel und die Abfrage davor prüft, ob der Datensatz überhaupt exestiert erst dann wird er Aufgerufen. Jetzt sehe ich auch meinen Fehler. Danke Alex. Ich meld mich noch mal.

Johnny
2005-02-24, 11:29:48
Ja das war der Fehler, die Fehlermeldung ist weg. Allerdings springt die Methode .MoveNext auf den ersten Datensatz und nicht ab der Stelle die zuletzt manuell aufgerufen wurde. Irgenwie muss ich ihm sagen ab welcher Stelle er weiter machen soll.

Johnny
2005-02-24, 12:35:21
Danke, habs geschaft

grakaman
2005-02-24, 14:53:03
Nein Kundennummmer ist Primärschlüssel und die Abfrage davor prüft, ob der Datensatz überhaupt exestiert erst dann wird er Aufgerufen. Jetzt sehe ich auch meinen Fehler. Danke Alex. Ich meld mich noch mal.

Da brauchst du doch keine zwei Abfragen. Wenn deine zweite Abfrage nichts ergibt, brauchst du doch nur auf if not (rs.bof and rs.eof) zu überprüfen.

Gruß,
grakaman