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

Zeos Query bringt mich zur Verzweiflung

37 views
Skip to first unread message

Martin Ess

unread,
May 11, 2002, 11:26:18 AM5/11/02
to
Hallo !

Ich hab ein Problem bei folgender Anweisung :

DM1.Q_Webs1.active:=false;
DM1.Q_Webs1.SQL.Clear;
DM1.Q_Webs1.SQL.Add('INSERT INTO webs
(web,server,log_host,log_database,log_benutzer,log_pass,ziel_name)');
DM1.Q_Webs1.SQL.Add('VALUES
("'+web+'","'+inttostr(ServerNr)+'","'+host+'","'+database+'","'+login+'","'
+pass+'","'+ziel+'")');
DM1.Q_Webs1.active:=true;

Es wird der Datensatz zwar eingefügt aber lustigerweise 2x, allso doppelt
!!!

kann mir da irgend Jemand sagen warum das so ist, bitte !

Grüsse aus Kärnten

Martin Ess, m...@linea7.com


Boris Adryan

unread,
May 11, 2002, 11:36:57 AM5/11/02
to
> DM1.Q_Webs1.SQL.Add('INSERT INTO webs
> (web,server,log_host,log_database,log_benutzer,log_pass,ziel_name)');
> DM1.Q_Webs1.SQL.Add('VALUES
> ("'+web+'","'+inttostr(ServerNr)+'","'+host+'","'+database+'","'+login+'","'
> +pass+'","'+ziel+'")');
> DM1.Q_Webs1.active:=true;
>
> Es wird der Datensatz zwar eingefügt aber lustigerweise 2x, allso doppelt
> !!!
Ich vermute, es liegt an dem doppelten "Add". Spontane Idee zum Ausprobieren:

1. nur eine sql.Add-Anweisung benutzen, den SQL-String entsprechend
länger machen.
2. das zweite sql.Add durch ein sql.append ersetzen.

Gruss, - B.

Martin Ess

unread,
May 11, 2002, 11:46:28 AM5/11/02
to
> >
> > Es wird der Datensatz zwar eingefügt aber lustigerweise 2x, allso
doppelt
> > !!!
> Ich vermute, es liegt an dem doppelten "Add". Spontane Idee zum
Ausprobieren:
>
> 1. nur eine sql.Add-Anweisung benutzen, den SQL-String entsprechend
> länger machen.
> 2. das zweite sql.Add durch ein sql.append ersetzen.
>
> Gruss, - B.
>

Danke für die schnelle Antwort !

Nur leider macht er trotzdem 2 Einträge, obwohl ich nur mehr eine ADD
Anweisung benutze !
Ich kapier das nicht ??????

Gruss Martin


M. Behrens

unread,
May 11, 2002, 12:22:13 PM5/11/02
to

Martin Ess wrote:

> Ich hab ein Problem bei folgender Anweisung :
>
> DM1.Q_Webs1.active:=false;
> DM1.Q_Webs1.SQL.Clear;
> DM1.Q_Webs1.SQL.Add('INSERT INTO webs
> (web,server,log_host,log_database,log_benutzer,log_pass,ziel_name)');
> DM1.Q_Webs1.SQL.Add('VALUES
> ("'+web+'","'+inttostr(ServerNr)+'","'+host+'","'+database+'","'+login+'","'
> +pass+'","'+ziel+'")');
> DM1.Q_Webs1.active:=true;
>
> Es wird der Datensatz zwar eingefügt aber lustigerweise 2x, allso doppelt
> !!!
>
> kann mir da irgend Jemand sagen warum das so ist, bitte !

Wie wäre es mit ExecSQL?


Martin

Martin Ess

unread,
May 11, 2002, 12:32:31 PM5/11/02
to
> > +pass+'","'+ziel+'")');
> > DM1.Q_Webs1.active:=true;
> >
> > Es wird der Datensatz zwar eingefügt aber lustigerweise 2x, allso
doppelt
> > !!!
> >
> > kann mir da irgend Jemand sagen warum das so ist, bitte !
>
> Wie wäre es mit ExecSQL?
>

Hab ich jetzt probiert und es funktioniert, aber warum geht es mit
aktive:=true nicht ?
Ich hab bis jetzt immer mit dieser Technik programmiert und noch nie
Probleme gehabt
erst mit den Zeos Kompos !

Vielen Dank für den Tip !

martin


Robert Wachtel

unread,
May 11, 2002, 1:30:44 PM5/11/02
to
Hallo Martin!

"Martin Ess" <m...@linea7.com> schrieb im Newsbeitrag
news:zIbD8.18567$5a4.2...@news.chello.at...


> > Wie wäre es mit ExecSQL?
> Hab ich jetzt probiert und es funktioniert, aber warum geht es mit
> aktive:=true nicht ?
> Ich hab bis jetzt immer mit dieser Technik programmiert und noch nie

> Probleme gehabt [...]

Warum die Zeos-Komponenten einen zweiten Datensatz ohne Fehlermeldung
generieren kann ich dir mangels Erfahrung mit diesen Komponenten (und v.a.
nicht vorhandener Leidenschaft zum Einblick in deren Quellcode... ;-) nicht
sagen. Grundsätzlich muss man bei Einsatz von SQL-basierten (R)DBMsen
zumindest aus der externen Sicht mindestens zwischen Datenmengen liefernden
Befehlen (DQL = Data Query Language) und datenändernden Befehlen (DML = Data
Manipulation Language) unterscheiden. Normalerweise ist ein
TWasAuchImmerQuery.Active := true äquivalent zu TWasAuchImmerQuery.Open und
erwartet eine Ergebnismenge.

Zum besseren Verständnis kann ich dem interessierten Leser die Lektüre eines
SQL-Einsteigerbuches (gerne auch in Bezug auf Delphi, z.B. Andreas Kosch -
Datenbankentwicklung mit Delphi) nur dringend nahelegen.

hth

Viele Grüsse aus Köln

Robert


Marian Aldenhövel

unread,
May 11, 2002, 2:00:35 PM5/11/02
to
Hi,

> Es wird der Datensatz zwar eingefügt aber lustigerweise 2x, allso doppelt
> !!!

Dein SQL ist keine Abfrage, sondern ein DML-Statement, Also _D_ata
_M_anipulation. Die werden nicht geöffnet (mit Open bzw Active:=True) weil
sie kein Ergebnis liefern, sondern einfach ausgeführt. Du möchtest also
ExecSQL aufrufen.

In einem BDE-Dataset würdest Du eine Fehlermeldung bekommen und keine zwei
Datensätze, aber ich denke die Lösung ist trotzdem dieselbe.

Ciao, MM
--
Marian Aldenhövel, Hainstraße 8, 53121 Bonn
Mein Flug um die Welt (aktuelle Position: Quayaquil)
http://www.marian-aldenhoevel.de/ATW

Ralf Mimoun

unread,
May 11, 2002, 6:07:26 PM5/11/02
to
Moin!

"Martin Ess" <m...@linea7.com> schrieb:
...
> DM1.Q_Webs1.SQL.Add('INSERT INTO webs
...
> DM1.Q_Webs1.active:=true;

Nix "Active=True", also Open. ExecSQL ist Dein Freund.

Bye, Ralf


Martin Ess

unread,
May 11, 2002, 6:12:24 PM5/11/02
to
Hallo Robert !

> TWasAuchImmerQuery.Active := true äquivalent zu TWasAuchImmerQuery.Open
und
> erwartet eine Ergebnismenge.
>
> Zum besseren Verständnis kann ich dem interessierten Leser die Lektüre
eines
> SQL-Einsteigerbuches (gerne auch in Bezug auf Delphi, z.B. Andreas Kosch -
> Datenbankentwicklung mit Delphi) nur dringend nahelegen.
>

Vielen Dank für Deine ausführliche Antwort !

schönen Abend noch

martin


Martin Ess

unread,
May 11, 2002, 6:15:20 PM5/11/02
to
Hallo Marian !


> > Es wird der Datensatz zwar eingefügt aber lustigerweise 2x, allso
doppelt
> > !!!
>
> Dein SQL ist keine Abfrage, sondern ein DML-Statement, Also _D_ata
> _M_anipulation. Die werden nicht geöffnet (mit Open bzw Active:=True) weil
> sie kein Ergebnis liefern, sondern einfach ausgeführt. Du möchtest also
> ExecSQL aufrufen.
>
> In einem BDE-Dataset würdest Du eine Fehlermeldung bekommen und keine zwei
> Datensätze, aber ich denke die Lösung ist trotzdem dieselbe.
>

Auch Dir danke für die Antwort !

Ich war nur fehlgeleitet durch eine Komponente für MySql (nicht Zeos) die da
keinen
Unterschied machte und alles Problemlos ausführte.

schönen Abend noch

Martin


Peter Marbaise

unread,
May 14, 2002, 2:19:36 PM5/14/02
to
Boris Adryan <boris....@mpi-bpc.mpg.de> writes:

> > DM1.Q_Webs1.SQL.Add('INSERT INTO webs
> > (web,server,log_host,log_database,log_benutzer,log_pass,ziel_name)');
> > DM1.Q_Webs1.SQL.Add('VALUES
> > ("'+web+'","'+inttostr(ServerNr)+'","'+host+'","'+database+'","'+login+'","'
>

> > !!!
> Ich vermute, es liegt an dem doppelten "Add". Spontane Idee zum Ausprobieren:
>
> 1. nur eine sql.Add-Anweisung benutzen, den SQL-String entsprechend
> länger machen.
>
> 2. das zweite sql.Add durch ein sql.append ersetzen.

Quark :-(

ciao Peter
--
WWW : http://www.marbaise.de/ Uptime: 11 Days 23 Hours
Anwendungen zu Linux gesucht ?
http://freshmeat.net/ gibt Antworten

0 new messages