Update Record

11/06/2009 - 21:39 von Lothar Geyer | Report spam
Ich habe eine Tabelle mit zwei Spalten. Für die erste Spalte (Typ Text)
ist ein nicht eindeutiger Index definiert. Nun will ich in dieser Spalte
die ersten beiden Zeichen von "00" auf "++" àndern. Wenn nun ein Wert
doppelt vorkommt, schreit ADO "Die Schlüsselspalteninformationen sind
ungenügend oder inkorrekt. Es sind zu viele Zeilen von der
Aktualisierung betroffen.". Vom Prinzip her ist mir das klar und ich
mache das jetzt direkt mit einem SQL-Statement. Trotzdem interessiert
mich: Wie muss ich das in ADO machen.

Der Source lautet:

sql = "Select * From Incoming"
Set rsk = New Recordset
rsk.Open sql, CNN, adOpenStatic, adLockOptimistic
Do While Not rsk.EOF
If Left$(rsk("IncomingNr"), 2) <> "++" Then
rsk("IncomingNr") = "++" & Mid$(rsk("IncomingNr"), 3)
rsk.Update
End If
rsk.MoveNext
Loop

Lothar Geyer
 

Lesen sie die antworten

#1 Peter Götz
12/06/2009 - 14:12 | Warnen spam
Hallo Lothar,

Ich habe eine Tabelle mit zwei Spalten. Für die erste
Spalte (Typ Text) ist ein nicht eindeutiger Index definiert.
Nun will ich in dieser Spalte die ersten beiden Zeichen
von "00" auf "++" àndern.



Wo/was willst Du àndern?
Einen Datensatz in einem ADODB.Recordset?
Oder einen oder mehrere Datensàtze in der DB-Tabelle?


Wenn nun ein Wert doppelt vorkommt, schreit ADO
"Die Schlüsselspalteninformationen sind ungenügend
oder inkorrekt. Es sind zu viele Zeilen von der
Aktualisierung betroffen.".



Ein ADODB.Recordset.Update braucht einen
eindeutigen Feldinhalt um einen Datensatz in der
zugehörigen DB-Tabelle zu aktualisieren. Letztlich
steckt hinter diesem Update ein SQL-Statement
der Art

Update. Where ID = Wert

und wenn ID nicht eindeutig ist, kann der Datensatz
nicht identifiziert und somit auch nicht aktualisiert
werden.

Vom Prinzip her ist mir das klar und ich
mache das jetzt direkt mit einem SQL-Statement.



Wie sieht dieses Statement denn konkret aus?

Trotzdem interessiert
mich: Wie muss ich das in ADO machen.



Mit ADO meinst Du ganz offensichtlich ein
ADODB.Recordset und mit diesem brauchst
Du für einen Update unbedingt einen eindeutigen
Feldinhalt in einem der Felder, also ein Primàr-
schlüsselfeld oder z.B. ein indiziertes Feld mit
"eindeutigen" Inhalten.

Der Source lautet:

sql = "Select * From Incoming"
Set rsk = New Recordset
rsk.Open sql, CNN, adOpenStatic, adLockOptimistic
Do While Not rsk.EOF
If Left$(rsk("IncomingNr"), 2) <> "++" Then
rsk("IncomingNr") = "++" & Mid$(rsk("IncomingNr"), 3)
rsk.Update
End If
rsk.MoveNext
Loop



Das geht so nicht ohne PK oder sonstigen
eindeutigen Feldinhalt.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen