Supportnet / Forum / Datenbanken
per VBA zu Datensatz springen
Frage
Hallo!
Ich habe in meiner Access-Datenbank ein Formular fuer die Dateneingabe und eines um die Daten zu suchen.
Nun wuerde ich gerne per VBA vom Suchformular wieder zum Dateneingabe-Formular gelangen und zwar zu genau dem Datensatz, den ich im Suchformular gefunden habe.
Beispiel: Ich habe 10 Datensaetze im Dateneingabeforumular eingegeben. Nun suche ich nach bestimmten Kriterien im Suchformular und mir wird z.B. Datensatz 5 angezeigt. Nun moechte ich wieder vom Suchformular per Buttonklick auf Datensatz 5 des Dateneingabeformulars springen.
Geloest werden koennte das ganze ueber die ID (ist in beiden Datensaetzen vorhanden).
Ich braeuchte quasi nur den VBA-Code, mit dem ich zu einem bestimmten Datensatz springen kann. Kann mir da jemand weiterhelfen?
Danke.
Gruss
Christoph
Antwort 1 von rolandaa
hallo, oder so bei klick:
öffne Formular -> Formularname F_???
Bedinnung -> ID = [Formulare]![F_Suche???]![ID]
mfg
roland
öffne Formular -> Formularname F_???
Bedinnung -> ID = [Formulare]![F_Suche???]![ID]
mfg
roland
Antwort 2 von erik
Vermutlich ist das Eingabeformular noch geöffnet, während du im zweiten Formular die Suche durchführst? Dann musst du nur das Eingabeformular als Objekt referenzieren und dann auf die übliche Weise suchen.
Ist das Eingabeformular geschlossen, dann übergib beim Öffnen den gesuchten Primärschlüssel an die OpenArgs-Eigenschaft des Eingabeformulars und suche nach dem gleichen Prinzip.
Private Sub GeheZu_Click()
Dim frm As Form
Dim rec As Recordset
Set frm = Forms("frmEingabeformular")
Set rec = frm.RecordsetClone
With rec
.FindFirst "ID=" & Me.ID
If Not .NoMatch Then
frm.Bookmark = rec.Bookmark
End If
End With
Set rec = Nothing
Set frm = Nothing
End Sub
Ist das Eingabeformular geschlossen, dann übergib beim Öffnen den gesuchten Primärschlüssel an die OpenArgs-Eigenschaft des Eingabeformulars und suche nach dem gleichen Prinzip.
Antwort 3 von Christoph_USA
Danke fuer Eure Hilfe!
Hier mein Code, mit dem ich mein Problem geloest habe:
Private Sub openrecord_click()
Dim rs As Recordset
On Error GoTo Errorhandler
Forms!frm_general.SetFocus
If IsNull(Me!ID) Then
DoCmd.GoToRecord , , acNewRec
Else
Set rs = Forms!frm_general.RecordsetClone
rs.FindFirst "ID = " & Me!ID
Forms!frm_general.Bookmark = rs.Bookmark
End If
Errorhandler:
If Err = 2450 Then
DoCmd.OpenForm ("frm_general")
Resume Next
End If
End Sub
Damit habe ich nun auch nicht das Problem mit offenen oder geschlossenen Formular.
Gruss
Christoph
Hier mein Code, mit dem ich mein Problem geloest habe:
Private Sub openrecord_click()
Dim rs As Recordset
On Error GoTo Errorhandler
Forms!frm_general.SetFocus
If IsNull(Me!ID) Then
DoCmd.GoToRecord , , acNewRec
Else
Set rs = Forms!frm_general.RecordsetClone
rs.FindFirst "ID = " & Me!ID
Forms!frm_general.Bookmark = rs.Bookmark
End If
Errorhandler:
If Err = 2450 Then
DoCmd.OpenForm ("frm_general")
Resume Next
End If
End Sub
Damit habe ich nun auch nicht das Problem mit offenen oder geschlossenen Formular.
Gruss
Christoph