Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   TADO und OUTPUT TO .... (https://www.delphipraxis.net/82196-tado-und-output.html)

alf013 8. Dez 2006 13:32

Datenbank: SQL-Anywhere • Version: 8.0 • Zugriff über: TADO

TADO und OUTPUT TO ....
 
Hallo Leute!

Habe folgendes Problem:

Nutze TADO für Zugriff auf SQL Anywhere-DB und will von dort Daten exportieren...
und zwar so

SELECT (Liste Felder) FROM Tabelle WHERE whereclause;
OUTPUT TO pfad/dateiname FORMAT ASCII

Dazu verwende ich AdoConnection.Execute, nicht TADOCommand, weil der ja nur jeweils einen Befehl absetzen kann.

Variante 1:
myStatement = 'SELECT (Liste Felder) FROM Tabelle WHERE whereclause; OUTPUT TO pfad/dateiname FORMAT ASCII';
Connection.Execute( myStatement, cmdText );

Liefert OLEFehler bei 'OUTPUT'!!!

Variante 2:
myStatement1 = 'SELECT (Liste Felder) FROM Tabelle WHERE whereclause';
myStatement2 = 'OUTPUT TO pfad/dateiname FORMAT ASCII';
Connection.Execute( myStatement1, cmdText );
Connection.Execute( myStatement2, cmdText );

Liefert auch OLEFehler bei 'OUTPUT'!!!
:wall:
Kann mir bitte jemand helfen??????


Vielen Dank vorab!!! ... und Grüsse
:dancer:

shmia 8. Dez 2006 14:42

Re: TADO und OUTPUT TO ....
 
Solltest du vielleicht nicht den Strichpunkt vor "OUTPUT ..." weglassen?
SQL-Code:
SELECT (Liste Felder) FROM Tabelle WHERE whereclause OUTPUT TO pfad/dateiname FORMAT ASCII
Es empfiehlt sich die SQL-Anweisung zuerst in einem (*)Tool des Datenbankherstellers zu testen und dann erst in die Delphi Anwendung zu übernehmen.
*) jeder Datenbankhersteller liefert doch ein Tool mit, mit dem man SQL-Anweisung zusammenbauen und abschicken kann.

alf013 8. Dez 2006 14:48

Re: TADO und OUTPUT TO ....
 
Zitat:

Zitat von shmia
Solltest du vielleicht nicht den Strichpunkt vor "OUTPUT ..." weglassen?
SQL-Code:
SELECT (Liste Felder) FROM Tabelle WHERE whereclause OUTPUT TO pfad/dateiname FORMAT ASCII
Es empfiehlt sich die SQL-Anweisung zuerst in einem (*)Tool des Datenbankherstellers zu testen und dann erst in die Delphi Anwendung zu übernehmen.
*) jeder Datenbankhersteller liefert doch ein Tool mit, mit dem man SQL-Anweisung zusammenbauen und abschicken kann.


Sorry, das ist aber der korrekte Syntax!!!!

Grüsse
:dancer:

shmia 8. Dez 2006 16:58

Re: TADO und OUTPUT TO ....
 
Zitat:

Zitat von alf013
Sorry, das ist aber der korrekte Syntax!!!!

Mag sein, aber hast du das mit dem Tool getestet?
Wenn ja, hast du den konkreten SQL-String dann in den Sourcecode kopiert und dann dort nochmals getestet.
(ich meine damit kopieren über die Zwischenablage; nicht abschreiben! *)
Du kannst den SQL-String auch ruhig hier nochmals senden, dein SELECT-string in deinem 1. Posting war ja quasi nur die Vorlage.

*) die Erfahrung lehrt: selbst der beste Programmierer hat manchmal Tomaten auf den Augen.
Dann hift nur, sich selbst zu misstrauen und zurück an den Anfang.
Man muss sich selbst beweisen, dass ein Anweisung/Funktion/Objekt/... richtig ist.

marabu 8. Dez 2006 18:10

Re: TADO und OUTPUT TO ....
 
Hallo,

es mag noch andere Ansätze geben, aber auf die Schnelle würde ich die beiden Statements (SELECT und OUTPUT) in eine PROCEDURE (kann das ADS?) packen und diese ausführen lassen.

Grüße vom marabu

alf013 9. Dez 2006 13:23

Re: TADO und OUTPUT TO ....
 
Zitat:

Zitat von shmia
Zitat:

Zitat von alf013
Sorry, das ist aber der korrekte Syntax!!!!

Mag sein, aber hast du das mit dem Tool getestet?
Wenn ja, hast du den konkreten SQL-String dann in den Sourcecode kopiert und dann dort nochmals getestet.
(ich meine damit kopieren über die Zwischenablage; nicht abschreiben! *)
Du kannst den SQL-String auch ruhig hier nochmals senden, dein SELECT-string in deinem 1. Posting war ja quasi nur die Vorlage.

*) die Erfahrung lehrt: selbst der beste Programmierer hat manchmal Tomaten auf den Augen.
Dann hift nur, sich selbst zu misstrauen und zurück an den Anfang.
Man muss sich selbst beweisen, dass ein Anweisung/Funktion/Objekt/... richtig ist.

Danke für deinen gutgemeinten Ratschlag - aber syntaktisch ist alles korrekt.

Ich vermute, dass das Problem hier in folgendem besteht:

In einer Interactiv-SQL-Sitzung ( das Tools zu SQL-Anywhere ) muss der Aufruf hintereinander erfolgen:
1. Select-Statement
2. Output-Statement
Das Select liefert die Datenmenge, die dann mit Output exportiert wird.
Unter ADO geht wahrscheinlich beim Aufruf von "aussen" die Datenmenge flöten, so dass dann das Output nicht mehr interpretiert werden kann.
Kann es sein, dass jeder einzelne Execute-Aufruf eine eigene interne Session öffnet und nach Ausführung wieder schliesst?
Das würde den Effekt erklären.

Grüssse
:dancer:
Alf013

alf013 9. Dez 2006 13:26

Re: TADO und OUTPUT TO ....
 
Zitat:

Zitat von marabu
Hallo,

es mag noch andere Ansätze geben, aber auf die Schnelle würde ich die beiden Statements (SELECT und OUTPUT) in eine PROCEDURE (kann das ADS?) packen und diese ausführen lassen.

Grüße vom marabu

Danke für den Tip, werd' ich mal ausprobieren

Gruss
Alf013
:dancer:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:41 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