Hallo!

> Hier eine nicht ganz ernstgemeinte L�sung... Nicht ganz auf die
Aufgabe
> angepasst, aber denoch sollte man die Idee erkennen...
> Beliebig viele Updates in einem Update-Befehl... :-)
>
> vals = ";0123=1;0345=2;0012=3;0031=2"
> ids = "123,345,12,31"
>
> sql = "update set
>
value=cast(substring('"&vals&"',charindex(';'+right('000'+id,4)+'=','"&v
> als&"')+6,1) as int) where id in (" & ids & ")"
>
> conn.execute sql

;-)
Ich denke, mit so einer Konstruktion bleibt die Wartung f�r alle Zeit an
Dir h�ngen, weil kein anderer durchblickt.
Du musst bei gr��eren Datenmengen lediglich beachten, dass in VBS
maximal 65535 Zeichen in einen String hineinpassen. Oder sind es wegen
Unicode nur 32767?
;-)

> Joachim, was sagst Du dazu? :-)
> M�sste von der Performance f�r nicht zu lange strings schneller als
> einzeln abgesetzte updates...

Ich bin mir nicht sicher, ob ...
UPDATE ... SET value = 1 WHERE ID = 123;
UPDATE ... SET value = 2 WHERE ID IN (345, 31);
UPDATE ... SET value = 3 WHERE ID = 12
... nicht doch schneller ist.

> �brigens haben wir eine optimierung noch gar nicht besprochen...
> Wenn man schon mehrere updates machen muss, dann muss man die nicht
> einzeln executen, sondern kann sie alle in einen string packen und
> gemeinsam executen...

Mit "adCmdText" werden die Befehle einfach durchgeleitet, ADO bremst
also nicht. Und ich glaube nicht, dass die Datenbank hier einen
Unterschied macht, so lange Du �ber ein und dasselbe Connection-Objekt
gehst, oder?

Und mein letzter Vorschlag l�sst sich ja auch noch mit einer
parametrisierten Abfrage beschleunigen.

Aber auf jeden Fall kommt Deine Idee in meine Sammlung. Die wird
bestimmt noch mal irgendwo eingesetzt. ;-)

Freundliche Gr��e
Joachim van de Bruck




| [aspdedatabase] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp

Antwort per Email an