PDA

Vollständige Version anzeigen : Wert in bestimmten Datensatz zurückschreiben


JanDirk
05.06.2012, 06:52
Hallo,

ich brauche einen Tipp ... mit einem ungebundenen Formular stelle ich für einen bestimmten Datensatz einer Tabelle Datensatzänderungen her. Diese möchte ich in meine Tabelle zurückschreiben. Mit folgenden Code möchte ich die Daten der Tabelle zur Verfügung stellen:

...
With rst
.Open "tblMeineDaten", Conn, adOpenKeyset, adLockOptimistic
.Fields("Menge") = Me!DfMenge
.Update
.Close
...

Wenn ich nun das ganze ausführe, wird aber immer nur der erste Datensatz der Tabelle angesprochen, nicht aber für den bestimmten Datensatz. Kann mich jemand auf die Spur setzen, welche Zeile dafür fehlt?

Danke

Storch
05.06.2012, 07:04
Moin,

hat denn Deine Tabelle auch ein Primärschlüsselfeld, welches jeden Datensatz eindeutig kennzeichnet???Wenn nicht sollte das schnellstens passieren.

Für das Update würde ich auch kein Recordset öffnen sondern dieses mittels SQL erledigen


strSQL = "Update tblMeineDaten Set Menge = " & Dein Zahlenwert & " Where Primärschlüssel = " & Zahl die dem Primärschlüssel des DS entspricht
DBEngine(0)(0).Execute (strSQL)

Und schon ist das Update fertig :)

Wenn DU es unbedingt in einem Recordset machen willst dann nach folgenden Schema:


'Zum ersten DS gehen
.MoveFirst
'Schleife bis END Of FIle
Do Until .EOF
'Primärschlüsselfeld mit dem entsprechenden Wert vergleichen, bei Treffer:
If !PrimärSchlüssel = Zahl Then
'Updatevorgang mit Edit einleiten
.Edit
'Wert zuweisen
!Menge = DeinWert
'Update ausführen
.Update
'Zum nächsten DS gehen
.MoveNext
Loop

Wichtig ist, den Updatevorgang mit '.Edit' einzuleiten, sonst passiert nämlich nix,

stuz1
05.06.2012, 07:33
Good morning,

ich würde das Recordset (wenn überhaupt dieser Weg gewählt werden soll) dann gleich so öffnen dass nur noch der gewünschte Datensatz enthalten ist...

StrSQL = "SELECT * FROM TblIrgendwas WHERE Primärschlüssel =" & DeinWert

rs = CurrentDb.OpenRecordset(StrSQL)

rs.edit
....usw....
rs.update
rs.close
Set rs = Nothing


ABER: Ich würde es auch mit einer SQL-Anweisung machen!


Oh, Sorry. Habe nicht gesehen dass hier mit ADO gearbeitet wurde..... ich bin von einen DAO.Recordset ausgegangen.... :(

JanDirk
05.06.2012, 07:39
Moin Moin,

danke für den Tipp mit der Schleife ... funktioniert bei mir.

Habe allerdings noch etwas ausprobiert, welches den bestimmten Datensatz verändert:

Mit der Zeile

.Find "[ID] like '" & Me!DfID & "'"

nach der "Open-Zeile" spreche ich den richtigen Datensatz an und meine Werte verändern sich in der Tabelle.

Guten Start in den Tag

JanDirk