Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zeos - Update auf mehrere Tabellen (https://www.delphipraxis.net/48087-zeos-update-auf-mehrere-tabellen.html)

BerTa 20. Jun 2005 15:23

Datenbank: Mysql • Version: 4.1 • Zugriff über: MyDac / Zeos

Zeos - Update auf mehrere Tabellen
 
Hallo,

ich habe testhalber ein kleines Projekt von MyDAC auf Zeos umgesetzt. Jetzt bekomme ich eine Exception mit der Meldung: "Can not update a complex query with more than one table". - Geht ein Update mit Zeos nicht über mehrere Tabellen?

Gruss, BerTa

Stevie 20. Jun 2005 15:35

Re: Zeos - Update auf mehrere Tabellen
 
Hi BerTa,

nein, das geht zumindest nicht so, wie du es gemacht hast,
in dem Fall, musst du selber dafür sorgen, dass die richtigen Sätze upgedatet werden.
Entweder mit TZSQLUpdate und/oder mit ZQuery deine Änderungen "manuell" in die Datenbank eintragen.

Wenn du die neueste Version aus dem CVS benutzt, dann kannst du auch TSQLProcessor mit Params benutzen.

MfG
Stevie

Jelly 20. Jun 2005 15:51

Re: Zeos - Update auf mehrere Tabellen
 
Zitat:

Zitat von BerTa
ich habe testhalber ein kleines Projekt von MyDAC auf Zeos umgesetzt.

:gruebel: Also das macht mich nachdenklich. Darf ich fragen, was dich zu dieser Umsetzung geführt hat. Meines Achtens ist MyDAC um Welten besser als die Zeos Komponenten, wenns um die Anbindung an eine MySQL Datenbank geht, also warum willst du von MyDAC weg?

BerTa 22. Jun 2005 12:34

Re: Zeos - Update auf mehrere Tabellen
 
Hi,

@jelli: die Anwendung soll für mehrere Datenbanken offen sein, z.B. für PostGreSQL, und das ohne ODBC-Bremse

@stevie: ich habe TZSQLUpdate ausprobiert, das Update funktioniert bisher nur für Tabellen, die im FROM-Teil des Selects stehen; Tabellen, die mit LEFT JOIN angesprochen sind, werden nicht ubgedatet.

Hier der Select aus der Zeos-Query:

SELECT
tour.*,
fahrzeug.anzahl_touren,
fahrzeug.aktiv,
fahrzeug.max_zuladung,
auftrag_kopf.datum_lieferschein,
auftrag_kopf.lieferschein_nr,
auftrag_kopf.spediteur,
auftrag_kopf.baustelle,
auftrag_kopf.preis_kz,
auftrag_kopf.baustellen_km,
auftrag_kopf.kunden_nr,
auftrag_kopf.istatus,
auftrag_kopf.pal_1_hin,
auftrag_kopf.pal_2_hin,
auftrag_kopf.pal_1_rueck,
auftrag_kopf.pal_2_rueck,
spediteur.listbez as spedbez,
spediteur.nr as spednr,
spediteur.umlagerungsrabatt,
spediteur.kreditor,
werk.nr AS werknr,
werk.listbez as werkbez,
werk.kurzname,
werk.lieferscheinkennung,
werk.kundennr_werk_werk,
baustelle.plz,
baustelle.bez1,
baustelle.bez2,
baustelle.bez3,
baustelle.hinweis_1,
anschriften_b.name1,
anschriften_b.name2,
anschriften_b.name3,
anschriften_b.strasse,
anschriften_b.plz as anschriften_plz,
anschriften_b.land,
anschriften_b.ort
FROM
tour,
auftrag_kopf
LEFT OUTER JOIN fahrzeug ON
fahrzeug.mandant = tour.mandant AND
fahrzeug.kfz_nr = tour.kfz_nr
LEFT OUTER JOIN spediteur ON
spediteur.mandant = auftrag_kopf.mandant AND
spediteur.nr = auftrag_kopf.spediteur
LEFT OUTER JOIN werk ON
werk.mandant = auftrag_kopf.mandant AND
werk.nr = auftrag_kopf.werk_nr
LEFT JOIN baustelle ON
baustelle.mandant = auftrag_kopf.mandant AND
baustelle.nr = auftrag_kopf.baustelle
LEFT JOIN anschriften_b ON
anschriften_b.mandant = auftrag_kopf.mandant AND
anschriften_b.nr = auftrag_kopf.anschrift_kunde
WHERE
auftrag_kopf.mandant = tour.mandant AND
auftrag_kopf.nr = tour.vorgang AND
auftrag_kopf.beleg_nr = tour.beleg AND
auftrag_kopf.werk_nr = :werk_nr


Bitte um Hilfe, BerTa

Bernhard Geyer 22. Jun 2005 12:40

Re: Zeos - Update auf mehrere Tabellen
 
Zitat:

Zitat von BerTa
@jelli: die Anwendung soll für mehrere Datenbanken offen sein, z.B. für PostGreSQL, und das ohne ODBC-Bremse

Das kann man auch realisieren ohne ZEOS mit Hilfe des Bridge-Pattern und Aufsetzen auf der TDataset-Schnittstelle.
Und für jede Datenbank nimmt man die optimalsten Komponenten (z.B. bei MS SQL-Server direkt die ADOExpress-Komponenten).

Stevie 22. Jun 2005 12:43

Re: Zeos - Update auf mehrere Tabellen
 
Zitat:

Zitat von BerTa
@stevie: ich habe TZSQLUpdate ausprobiert, das Update funktioniert bisher nur für Tabellen, die im FROM-Teil des Selects stehen; Tabellen, die mit LEFT JOIN angesprochen sind, werden nicht ubgedatet.

Wenn du deine SQL-Statements im TZSQLUpdate entsprechend änderst, dann werden auch die dementsprechenden Tabellen geändert. ;-)

BerTa 22. Jun 2005 13:09

Re: Zeos - Update auf mehrere Tabellen
 
Hi,

@Bernhard Geyer: Der Tipp mit den "Bridge Pattern" hört sich interessant an, leider habe ich keine Ahnung, wie da was realisieren soll. Gibt´s da irgendwo Beispiele?

Gruss, BerTa

BerTa 22. Jun 2005 16:08

Re: Zeos - Update auf mehrere Tabellen
 
Hi,

was haltet ihr von AnyDac?

Gruss, Bernd

Bernhard Geyer 22. Jun 2005 16:10

Re: Zeos - Update auf mehrere Tabellen
 
Zitat:

Zitat von BerTa
@Bernhard Geyer: Der Tipp mit den "Bridge Pattern" hört sich interessant an, leider habe ich keine Ahnung, wie da was realisieren soll. Gibt´s da irgendwo Beispiele?

Bridge Pattern


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz