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

06/10/2009 - 17:49 von Horst Mayer | Report spam
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
 

Lesen sie die antworten

#1 Elmar Boye
07/10/2009 - 09:39 | Warnen spam
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

Ähnliche fragen