Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Dynamische SQL-Generierung wird gegen mehrere Basistabellen nicht unterstützt

103 views
Skip to first unread message

Horst Mayer

unread,
Oct 6, 2009, 11:49:47 AM10/6/09
to
Hallo zusammen,
ich habe eine doppelte JOIN Abfrage:
SQLQuery = "SELECT P.Nachname,P.Vorname, z.Ma�nahme,
ErledigteBestaetigen.gemacht,
ErledigteBestaetigen.Wann,ErledigteBestaetigen.Bemerkung,ErledigteBestaetigen.Erstellt,
Pp.id,p.StammdatID ,ErledigteBestaetigenID" & _
" FROM ((Stammdaten AS P INNER JOIN planen AS PP ON P.StammdatID =
PP.StammdatID) " & _
" INNER JOIN ToDoTasks AS Z ON (Pp.id = Z.id)) " & _
" INNER JOIN ErledigteBestaetigen ON (ErledigteBestaetigen.TaskId =
Z.TaskId)" & _
" Where ErledigteBestaetigen.Vom = '" + dtpDate.Value.Date + "'" & _
" AND ErledigteBestaetigen.S = 1 " & _
" and (ErledigteBestaetigen.gemacht = 0 or ErledigteBestaetigen.gemacht is
null) " & _
" AND P.disabled = 0 " & _
" and (ErledigteBestaetigen.Wann IS NULL)" & _
" AND P.Abteilung= " & iAbteilung & _
" ORDER BY P.Nachname,P.Vorname"

Sie funktioniert wunderbar und die Daten lassen sich in einem DataViewGrid
zeigen.
Ich wollte eigentlich die Anwender CheckBox im Grid abklicken lassen und
dann mit einem Update des DataAdapters die ge�nderten Daten zur�ck in DB
schreiben. Das geht aber nicht wegen der im Betreff genannten Meldung.
Es sollen nur 4 Felder in nur einer Tabelle ge�ndert werden:
ErledigteBestaetigen.gemacht (bit)
ErledigteBestaetigen.Wann (DateTime)
ErledigteBestaetigen.Bemerkung(String)
ErledigteBestaetigen.Erstellt (String)
Die �brigen 2 Tabellen dienen nur der Anzeige von Daten.
Wie kann ich das Update im Grid in der beschriebenen Situation am besten
angehen?
Danke f�r Tipps,
Horst

Elmar Boye

unread,
Oct 7, 2009, 3:39:27 AM10/7/09
to

Hallo Horst,

Horst Mayer schrieb:


> ich habe eine doppelte JOIN Abfrage:
> SQLQuery = "SELECT P.Nachname,P.Vorname, z.Ma�nahme,
> ErledigteBestaetigen.gemacht,
> ErledigteBestaetigen.Wann,ErledigteBestaetigen.Bemerkung,ErledigteBestaetigen.Erstellt,
>
> Pp.id,p.StammdatID ,ErledigteBestaetigenID" & _
> " FROM ((Stammdaten AS P INNER JOIN planen AS PP ON P.StammdatID =
> PP.StammdatID) " & _
> " INNER JOIN ToDoTasks AS Z ON (Pp.id = Z.id)) " & _
> " INNER JOIN ErledigteBestaetigen ON (ErledigteBestaetigen.TaskId =
> Z.TaskId)" & _
>

> Sie funktioniert wunderbar und die Daten lassen sich in einem
> DataViewGrid zeigen.
> Ich wollte eigentlich die Anwender CheckBox im Grid abklicken lassen und
> dann mit einem Update des DataAdapters die ge�nderten Daten zur�ck in DB
> schreiben. Das geht aber nicht wegen der im Betreff genannten Meldung.

Ein CommandBuilder kann immer nur eine Tabelle aktualisieren.
Er hat aber keine M�glichkeit, die betreffende aus Deinem Code
zu ermitteln.

> Es sollen nur 4 Felder in nur einer Tabelle ge�ndert werden:
> ErledigteBestaetigen.gemacht (bit)
> ErledigteBestaetigen.Wann (DateTime)
> ErledigteBestaetigen.Bemerkung(String)
> ErledigteBestaetigen.Erstellt (String)

Du kannst im aber nachhelfen, in dem Du f�r die Aktualisierung
eine eigenes Select-Command vorgibst, hier also:
SELECT ... FROM ErledigteBestaetigen

Die Alternative w�re die entsprechenden UPDATE (und INSERT/DELETE)
Befehle selbst zu erzeugen.

Gru� Elmar

Horst Mayer

unread,
Oct 7, 2009, 6:11:54 PM10/7/09
to
Hallo Elmar,

> Die Alternative w�re die entsprechenden UPDATE (und INSERT/DELETE)
> Befehle selbst zu erzeugen.
>

Wie meinst du das (ich brauche nur UPDATE)?
Gruss
Horst

Elmar Boye

unread,
Oct 8, 2009, 2:54:09 AM10/8/09
to
Hallo Horst,

"Horst Mayer" <hma...@arcor.de> schrieb ...


>> Die Alternative w�re die entsprechenden UPDATE (und INSERT/DELETE)
>> Befehle selbst zu erzeugen.
>>
> Wie meinst du das (ich brauche nur UPDATE)?


Siehe "Aktualisieren von Datenquellen mit 'DataAdapters' (ADO.NET)"
http://msdn.microsoft.com/de-de/library/33y2221y.aspx

Gru� Elmar

0 new messages