Datensatz in gebundenem Formular anspringen?

Moin…

so schlimm es klingt… Ich habe ein Formular in A2k an eine Tabelle gebunden, die Felder entsprechend auch. Soweit ganz einfach.

Jetzt lese ich in der Form_Load-Methode die Me.OpenArgs-Eigenschaft aus und den erhalte so eine Zahl (LongInt).

Nun… Wie setze ich den aktuellen Datensatz auf genau den, mit der Index-Nr. von meinem Me.OpenArgs-Wert?

Ich habe es mit folgendem Code probiert:


Me.RecordSetClone.FindFirst „LandID=“ & lngLandID
If Me.RecordSetClone.NoMatch Then
Msgbox „Nix da…“
Else
Me.Bookmark = Me.RecordSetClone.Bookmark
End If

Leider funzt das nicht. Was mach ich falsch, was muß ich richtig machen?

MfG, Lars Betzin

Nachtrag…
Meine Tabelle ‚tblLänder‘ sieht so aus:

LandID / Autowert
Name / Text

Mein Formular ist an tblLänder gebunden
Texteingabebox ‚txtLand‘ and tblLänder.Name gebunden

Problem… ich habe keine Navigationsschaltflächen auf dem Formular und möchte mittels VBA einen beliebigen Datensatz beim öffnen des Formulars anzeigen lassen. Welcher Datensatz das sein soll, wird dem Formular beim öffnen per Me.OpenArgs übergeben.

MfG, Lars Betzin

Hm, ob’s Dir weiter hilft? Ich hab’ ein paar Feldnamen verwendet, die Du natürlich entspr. ändern mußt.
Die Bookmark-Geschichte hat mir bei Deinem Code nicht gefallen, denn die sucht keinen Datensatz, sondern setzt nur den sehr internen Satzzeiger. Besser auch, die FORM_OPEN Eigenschaft anzusprechen.

Gruß
Stephan

Schaltfläche im aufrufenden Formular:

Private Sub Befehl2_Click()
Dim argument As long
argument = Me!LandID.Value
DoCmd.OpenForm („Einwohner“), , , , , , argument
End Sub

„Beim Öffnen“-Eigenschaft des zu öffnenden Formulars:

Private Sub Form_Open(Cancel As Integer)
Dim argumente As Long
Dim rs As Recordset

argumente = Me.OpenArgs
'Debug.Print argumente
Set rs = CurrentDb.OpenRecordset(„Einwohner“)
'lblTest.Caption = Str(argumente)
'Test, ob Argument ankommt

rs.Index = „Nummer“
rs.Seek „=“, argumente
'Debug.Print rs.Fields(„Einwohner“)
'kriegt er auch richtig hin, Satz ist aber noch
'nicht der gewünschte, deshalb:
DoCmd.GoToControl („Nummer“)
DoCmd.FindRecord argumente
End Sub

Hallo Lars,

so wird es gehen:

Eine Bibliotheksfunktion übernimmt die Navigation (als Parameter bekommt sie das Formular und die Bedingung):

Sub GoToRecord(myForm As Form, Criteria$)
'Aufruf im Click-Event der Combobox:
’ GoToRecord Me, „DSID=“ & ComboBox
Dim RS As Recordset
On Error GoTo SelectRecordsetError
DoEvents
myForm.Requery
DoEvents
Set RS = myForm.RecordsetClone
RS.FindFirst Criteria
If Not RS.NoMatch Then myForm.Bookmark = RS.Bookmark
GoTo SelectRecordsetOK
SelectRecordsetError:
MsgBox "Fehler beim Anzeigen der Daten: " & Chr$(13) & Error, vbCritical, „Library-Funktion GoToRecord“
Resume SelectRecordsetOK
SelectRecordsetOK:
On Error Resume Next
Set RS = Nothing
End Sub

Jetzt kann an irgendeiner Stelle des Formulares (Beim Öffnen, bei Druck auf einen Button, beim Clicken einer Combobox usw.) fogende Zeile aufgerufen werden:

GoToRecord Me, OpenArgs

(wenn OpenArgs eine gültige Bedingung in der Art „Land=‚D‘“ enthält)

Kurt
http://www.fortwaengler.de