PDA

Vollständige Version anzeigen : problem mit bookmark


wertkauf
27.06.2001, 12:14
Erstmal vorweg, dies ist die fortsetzung meines find-first threads.
ganz viel funktioniert jetzt schon, vielen vielen dank für die hilfen,

das programm läuft jetzt ohne fehlermeldung durch, habe aber offenbar ein problem mit der bookmark eigenschaft.

ich will ja, daß beim aktuell angezeigten datensatz ein bookmark gesetzt wird, zu dem später zurückgekehrt wird, um den wert "topangebot" auf -1 (nicht 1, war auch noch bisher ein von mir unbemerkter fehler)zu setzen. es wird aber, egal von welchem datensatz aus ich starte, immer der erste wert des recordsets bei der bookmark-sache aufgerufen und dann dort "topangebot" auf -1 gesetzt.

der code jetzt:

Private Sub Befehl89_Click()
DoCmd.GoToControl "Befehl67"
Me!Befehl89.Visible = False

Dim rst As DAO.Recordset
Dim db As DAO.Database
Dim strLesezeichen As String
Dim strKriterium As String
Set db = CurrentDb()
Set rst = db.OpenRecordset("Products", dbOpenDynaset)

'Speichern des Lesezeichens
strLesezeichen = rst.Bookmark

'Gehe zu bisherigem Topangebot
strKriterium = "[shop] Like '" & Me!Kombinationsfeld52 & "*' AND [top_angebot]=(-1)"
rst.FindFirst strKriterium

'Überprüfung auf Suchergebnisse
If Not rst.NoMatch Then

'Ändern des Eintrages auf 0
With rst
If .Updatable Then
.Edit
!top_angebot = 0
.Update
End If
End With


'Gehe zu neuem Top-angebot
rst.Bookmark = strLesezeichen

'Ändern des Eintrags auf -1
With rst
If .Updatable Then
.Edit
!top_angebot = (-1)
.Update
End If
End With
End If
rst.Bookmark = ""

If Not rst Is Nothing Then rst.Close: Set rst = Nothing
If Not db Is Nothing Then db.Close: Set db = Nothing

End Sub

Nochmal vielen dank für die hilfen bis jetzt.
Gruß wertkauf

Morli
27.06.2001, 12:33
Hallo wertkauf,

müßte die Zeile

strLesezeichen = rst.Bookmark

nicht eher so aussehen:

strLesezeichen = Me.Bookmark

So wie Du es machst, greifst Du halt immer auf den ersten Datensatz zu.

Gruß

Rainer :)

WalterS
27.06.2001, 12:37
Hallo!

Mit den Zeilen

Set db = CurrentDb()
Set rst = db.OpenRecordset("Products", dbOpenDynaset)

'Speichern des Lesezeichens
strLesezeichen = rst.Bookmark

wird das bookmark immer auf den aktuellen Datensatz des Recordsets ( hier nach dem Erstellen somit auf den ersten Datensatz) gestellt.

Ich habe bisher noch nicht festgestellt, wie du dein neues Topangebot findest. Wenn es über ein Formular ist, musst du die zeile

rst.bookmark = me.bookmark einfügen damit das "Recordset am gleichen Datensatz steht wie dein Formular".

wertkauf
27.06.2001, 13:39
hallo

ich finde das aktuelle topangebot unter dem eintrag "Gehe zu bisherigem Topangebot" über die abfrage, die den datensatz sucht, der bei topangebot den wert (-1) aufweist, da das pro kategorie nur ein wert ist. die zugehörige kategorie finde ich über die abfrage des feldes kombinationsfeld52, in dem die kategorie angezeigt wird, in der selben programmzeile.

ich suche also im recordset mit unterstützung des formulars, aus dem heraus der code läuft.

das funktioniert soweit problemlos.

soweit erstmal und vielen dank für die hilfe.

wertkauf

wertkauf
27.06.2001, 14:50
hallo,

kriege das nicht hin mit dem bookmark. das me.bookmark wird nicht akzeptiert, es kommt die meldung

Laufzeitfehler3159
kein zulässiges Lesezeichen

zu der folgenden zeile:

rst.Bookmark = strLesezeichen

kann das nicht nachvollziehen, warum der aktuelle datensatz nicht als solcher erkannt wird.

WalterS
28.06.2001, 14:57
Hallo!
Mir ist bei meinem Eintrag ein Fehler unterlaufen.
Man darf nicht einen neues Recordset aufmachen sondern mit
set rst = me.recordsetclone

einen Clone erstellen. Dann funkt die Bookmark Übergabe mit

rst.bookmark = me.bookmark und auch wieder umgekehrt!