Access 2010 vba Recordset
Hallo zusammen,
ich arbeite seit langem mal wieder mit Access und vba:
Ich habe eine Datenbank, zwei Tabellen (identisch aufgebaut) und ein Formular. Über eine Textbox ("SearchBox") und ein AfterUpdate-Ereignis suche ich (je nach Suchbegriff: "If SearchBox.Text Like "1*" Then") in einer der beiden Tabellen.
Wird etwas gefunden, wird ein optisches Feedback gegeben, wenn nicht, dann gibt es eine andere Meldung. Das funktioniert auch schon alles.
Jetzt möchte ich aber den gefundenen Datensatz anzeigen lassen und ein Attribut des Datensatzes ändern (Ja/Nein-Feld). Hier komme ich aber gerade nicht weiter.
Wie gesagt, die beiden Tabellen sind komplett identisch aufgebaut, haben nur unterschiedliche Namen.
Die Formularfelder für die Anzeige heißen: TFID, TFVorname, TFNachname, TFAktien, KKAnwesend (Kontrollkästchen)
Hier mal mein AfterUpdate-Ereignis:
Ich würde mich sehr über Hilfe, Ideen oder Denkanstöße freuen!
Vielen Dank!
VG
Felix
ich arbeite seit langem mal wieder mit Access und vba:
Ich habe eine Datenbank, zwei Tabellen (identisch aufgebaut) und ein Formular. Über eine Textbox ("SearchBox") und ein AfterUpdate-Ereignis suche ich (je nach Suchbegriff: "If SearchBox.Text Like "1*" Then") in einer der beiden Tabellen.
Wird etwas gefunden, wird ein optisches Feedback gegeben, wenn nicht, dann gibt es eine andere Meldung. Das funktioniert auch schon alles.
Jetzt möchte ich aber den gefundenen Datensatz anzeigen lassen und ein Attribut des Datensatzes ändern (Ja/Nein-Feld). Hier komme ich aber gerade nicht weiter.
Wie gesagt, die beiden Tabellen sind komplett identisch aufgebaut, haben nur unterschiedliche Namen.
Die Formularfelder für die Anzeige heißen: TFID, TFVorname, TFNachname, TFAktien, KKAnwesend (Kontrollkästchen)
Hier mal mein AfterUpdate-Ereignis:
Private Sub SearchBox_AfterUpdate()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim Frm As String
Frm = "Formular"
Dim Tbl1 As String
Tbl1 = "Tabelle1"
Dim Tbl2 As String
Tbl2 = "Tabelle2"
Set dbs = CurrentDb
' MsgBox FrmName
If SearchBox.Text Like "1*" Then
Set rst = dbs.OpenRecordset(Tbl1, dbOpenDynaset)
rst.FindFirst "[ID] = '" & Me!SearchBox & "'"
If rst.NoMatch Then
Signal1Box.BackColor = vbRed
Signal2Box.Value = "Keine Daten in " & Tbl1 & " gefunden!"
TFID.Value = ""
TFVorname.Value = ""
TFNachname = ""
TFAktien = ""
KKAnwesend.Value = ""
Else
Form_Formular.RecordSource = Tbl1
Set rst = Me.RecordsetClone
rst.FindFirst "[ID] = '" & Me!SearchBox & "'"
Me.Bookmark = rst.Bookmark
TFID.Value = "???"
TFVorname.Value = "???"
TFNachname = "???"
TFAktien = "???"
KKAnwesend.Value = ???
Signal1Box.BackColor = vbWhite
Signal2Box.Value = "O. K. !"
Signal1Box.BackColor = vbGreen
End If
' #############################################
' Ab hier wird auf die zweite Tabelle verwiesen... wird dann analog wie bei der ersten Tabelle aufgebaut sein
' #############################################
Else
Set rst = dbs.OpenRecordset(Tbl2, dbOpenDynaset)
rst.FindFirst "[ID] = '" & Me!SearchBox & "'"
If rst.NoMatch Then
MsgBox "Keine Daten in " & Tbl2 & " gefunden!"
Else
MsgBox "Daten in " & Tbl2 & " gefunden!"
End If
End If
Cleanup:
rst.Close
Set rst = Nothing
Set dbs = Nothing
End Sub
Ich würde mich sehr über Hilfe, Ideen oder Denkanstöße freuen!
Vielen Dank!
VG
Felix
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 240274
Url: https://administrator.de/forum/access-2010-vba-recordset-240274.html
Ausgedruckt am: 22.12.2024 um 12:12 Uhr
3 Kommentare
Neuester Kommentar
Hallo Felix,
also ein Update in einer Spalte des jeweiligen gefundenen Datensatzes kannst du so machen:
Die obige Schreibweise für das Update eines Feldes ist eine mögliche Variante, man kann es alternativ auch so schreiben:
Wenn der Datensatz in der Datenquelle des aktuellen Forumlars gesucht werden soll kann man es so machen:
Grüße Uwe
also ein Update in einer Spalte des jeweiligen gefundenen Datensatzes kannst du so machen:
'Edit Mode aktivieren (zum Bearbeiten von Feldern muss dieser aktiviert werden)
rst.Edit
' Wert des Kontrollkästchens setzen
rst!KKAnwesend = 1
' anderen Wert ändern
rst!TFNachname = "Meier"
'Datensatz speichern (hiermit wird der Datensatz in der Tabelle mit den neuen Daten aktualisiert)
rst.Update
rst.Fields("TFNachname").Value = "Meier"
Jetzt möchte ich aber den gefundenen Datensatz anzeigen lassen
hier gibt es einige Möglichkeiten, das kommt halt darauf an wie dein Formular aufgebaut ist, wo du es anzeigen lassen willst und in welcher Art (gefiltert / extra Dialog / nur Datensatz markieren/ etc.)Wenn der Datensatz in der Datenquelle des aktuellen Forumlars gesucht werden soll kann man es so machen:
DoCmd.SearchForRecord , , acFirst, "ID = " & rs!ID
Keine Ursache.
Zur Info, es gibt dafür auch noch eine andere Methode mit DLookup() um einen einzelnen Datensatz bzw. Feld zu suchen. Ein Beispiel dazu findest du gerade beantwortet hier: Werte, die zusammenhängen sollem immer im Formular eingetragen werden nach Eingabe des ersten Wertes
Vielleicht nutzt dir das in Zukunft mal irgendwann
Grüße Uwe
Zur Info, es gibt dafür auch noch eine andere Methode mit DLookup() um einen einzelnen Datensatz bzw. Feld zu suchen. Ein Beispiel dazu findest du gerade beantwortet hier: Werte, die zusammenhängen sollem immer im Formular eingetragen werden nach Eingabe des ersten Wertes
Vielleicht nutzt dir das in Zukunft mal irgendwann
Grüße Uwe