Hallo!
> > > Geht eigentlich auch so etwas wie:
> > >
> > > UPDATE ... SET spalte1 = (id IN (...)), spalte2 = (id IN (...)),
...
> > >
> > > Dann h�tte man immer nur 1 Update.
> >
> > Es geht. Hab's gerade probiert. ;-)
>
> H�? Schreib mal das SQL aus...
>
> Meinst Du das:
>
> Update tabelle set spalte1 = (id in (1,2,3,4))
>
> Was genau soll das machen?
Das Formular hat 11 Felder mit IDs - gef�llt durch die 440 Checkboxen.
Also so, wie ich es in meinem L�sungsvorschlag beschrieben habe. Die 11
Zeichenketten werden direkt in folgendes Statement eingesetzt oder als
Parameter an eine PROCEDURE �bergeben. Statt der 22 Updates macht man
aber nur 1 einziges:
UPDATE tabelle SET
spalte1 = (id IN (...liste1...)),
spalte2 = (id IN (...liste2...)),
spalte3 = (id IN (...liste3...)),
...
spalte11 = (id IN (...liste11...))
Der Ausdruck "(ID IN (...))" liefert entweder TRUE oder FALSE und kann
so der Spalte zugewiesen werden.
Beim Update ergeben sich somit f�r jede Zeile (id) v�llig andere Werte,
je nachdem, ob die aktuelle id eben in der Liste zur Spalte enthalten
ist oder nicht.
Mein Test:
Tabelle mit id (Autowert) und spalte1 bis spalte3 (Ja/Nein). Durch
einfaches Anklicken habe ich 10 Zeilen mit beliebigen Werten gef�llt.
id s1 s22 s3
1 Ja Ja Nein
2 Nein Nein Nein
3 Nein Nein Ja
4 Ja Nein Nein
5 Nein Ja Ja
6 Ja Nein Nein
7 Nein Ja Ja
8 Ja Nein Nein
9 Nein Ja Nein
10 Ja Nein Ja
Und dann mein UPDATE:
UPDATE test
SET s1 = (id In (1,2,3,4)),
s2 = (id In (4,5,6,7)),
s3 = (id In (7,8,9,10));
Und heraus kam tats�chlich:
id s1 s2 s3
1 Ja Nein Nein
2 Ja Nein Nein
3 Ja Nein Nein
4 Ja Ja Nein
5 Nein Ja Nein
6 Nein Ja Nein
7 Nein Ja Ja
8 Nein Nein Ja
9 Nein Nein Ja
10 Nein Nein Ja
Verbl�ffend einfach, aber vollkommen logisch, oder?
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