PDA

Vollständige Version anzeigen : recordset (Anfängerfragen)


phun
03.01.2002, 09:47
hallo!

Nun kann ich es nicht mehr länger vermeiden, auf Recordsets zu verzichten. Also, ich habe ein Formular mit sowohl gebundenen als auch ungebundenen Feldern. beim Öffnen des Formulars soll ein RS mit allen Daten per SQL, die für das Formular relevant sind, geöffnet werden und global verfügbar sein. Wenn nun ein User Daten ändert, so sollen diese erst beim verlassen des Datensatzes, bzw. beim expliziten speichern in die Tabellen geschrieben, oder auf Wunsch verworfen werden. Mein gedanke war, die Änderungen an den ungebundenen Feldern direkt in einem RS mit Edit und Update durchzuführen, dummerweise werden die Daten damit *sofort* in die Tabellen geschrieben... wie gehe ich nun damit um, und wo genau muss Update und Close stehen?

hier der code den ich bisher habe:

in Modul:

Option Compare Database
Global allSQL As String
Global allRS As DAO.Recordset

in Formular:

Private Sub Form_Activate()
Form_Current 'füllt die ungebundenen Felder

allSQL = "SELECT Bewerber.*, Länder.* FROM Länder INNER JOIN (Bewerber ON [Länder].[LandID]=[Bewerber].[Land_ID]) WHERE [Bewerber].[BewerberID]=" & Me.BewerberID.Value & ";"
Set allRS = CurrentDb.OpenRecordset(allSQL, dbOpenDynaset, dbDenyWrite)

End Sub

'Auswahl aus dem Kombinationsfeld Kürzel treffen
Private Sub KombifeldKürzel_Click()
Dim selectSQL As String
Dim selectRS As DAO.Recordset
selectSQL = "SELECT LandID, Kürzel FROM Länder WHERE Kürzel='" & Me.KombifeldKürzel.Value & "' ;"
Set selectRS = CurrentDb.OpenRecordset(selectSQL)

allRS.Edit
allRS!Land_ID = selectRS!LandID
allRS.Update

End Sub

schonmal meinen besten Dank!
aus der Access-Hilfe werde ich wie immer nicht schlau...

christian

Sascha Trowitzsch
03.01.2002, 10:15
Hi,

ich verstehe überhaupt nicht, was du da machst, bzw. wozu.

Es könnte zwar funktionieren, wenn du den Code aus KombiKürzel_Click in das Ereignis "Vor Aktualisierung" des Formulars schriebst. (So wie du's jetzt gemacht hast, muss der User ja erst auf das Kombo klicken, um den Wert abzuspeichern und er erhält dabei noch nicht mal ne Rüchmeldung.)

Aber warum brauchst du statt eines gebundenen ein ungebundenes Formular??
Ich denke, ein globales Recordset, das über die ganze Session hin geöffnet ist, ist keine so gute Idee.

Ciao, Sascha

phun
03.01.2002, 10:24
hallo Sascha!

ich brauche die ungebundenen Kombifelder, weil ich selbst programmieren möchte, was bei einer Auswahl bzw. Neueingabe passiert, vor allem deshalb, weil ja (in diesem Beispiel) mehrere Bewerber aus dem gleichen Land kommen können. außerdem sollen sich verschiedene Kombifelder gegenseitig aktualisieren, z.b. wenn man bei Kürzel "D" auswählt, ändert sich Land zu "Deutschland" - aber diese gegenseitige Aktualisierung ist nicht mein Problem.

also mein Ziel ist es, dass alle Änderungen erst beim Verlassen des Datensatzes bzw. durch explizites Speichern in die Tabellen geschrieben werden, wenn das auch ohne Recordsets geht wäre mir das nur recht :-)

christian

Sascha Trowitzsch
03.01.2002, 10:35
Das geht doch alles auch mit einem gebundenen Formular!
Der DS wird dann auch erst beim Verlassen des angezeigten DS in die Tabelle geschrieben.
Mit Me.Undo kann das dann sogar rückgängig gemacht werden.

Solange du den einen DS im Formular hast, kannst du mit deinen Feldern doch machen, was du willst, gespeichert wird erst beim Verlassen.

Ciao, Sascha

phun
03.01.2002, 10:51
oh...
äh...
wieso seh ich immer nur unnötig komplizierte lösungswege? *g* :D

oki, danke, dann versuch ichs mal so, wie Du es beschrieben hast

christian