Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Advantage , ODBC und SQL (https://www.delphipraxis.net/168330-advantage-odbc-und-sql.html)

Cici 15. Mai 2012 18:06

Datenbank: ADS • Version: 10.1 • Zugriff über: ODBC / ADO

Advantage , ODBC und SQL
 
Hallo Gemeinde,
ich stehe auf dem Schlauch.
Ich greife auf eine ADS DB mit AdoQuery via ODBC zu.

Das funktioniert soweit.
Zum Problem:
1.
SQL:='Select * FROM "C:\PATH\TABNAME.ADT";';
Query.Open;

Funktioniert !

2.
SQL:='Select * FROM "C:\PATH\TABNAME1.ADT"; Select * FROM "C:\PATH\TABNAME2.ADT";';
Query.Open;

Funktioniert nicht !!!
commandtext gibt keine ergebnismenge zurück

ExecSQL macht keinen Sinn, da ja ein Ergebnis erwartet wird.

Wer kann mir helfen?

Bernhard Geyer 15. Mai 2012 18:29

AW: Advantage , ODBC und SQL
 
Kann den TADOQuery mit mehreren Resultsets zurecht kommen?
Ich denke hier musst du direkt auf die Basis-ADO-Interfaces zurückgreifen.

Cici 16. Mai 2012 06:24

AW: Advantage , ODBC und SQL
 
Danke für Deine Antwort,
normalerweise sollte es nur ein resultset geben.

Das SQL:
Select * INTO #Temp1
From "C:\ATB\Databases\192\sys\User.ADT";

Select * From #Temp1;

funtzt auch nicht.

Temp Tabellen zu nutzen, sollte doch wohl mit ADO möglich sein. Oder liegt das Problem in der ODBC?
"ADS" unterstützt SQL scripting im SQL jedenfalls.

Bernhard Geyer 16. Mai 2012 07:02

AW: Advantage , ODBC und SQL
 
Wieso nimmst du bei ADS nicht die nativen Komponenten?

Cici 16. Mai 2012 07:15

AW: Advantage , ODBC und SQL
 
Klar,
mache ich schon.
Mit der ADSQuery geht das wunderbar.

Ich versuche nur für einen Kunden eine ODBC Schnittstelle zu schaffen, und möchte die Möglichkeiten austesten, in wie weit
die Kombination ODBC/ADO nutzbar ist. SQL-Performance,...usw.

Im Ersten Schritt wäre wichtig, ob das Problem iM ADO oder der ODBC steckt.

Patito 16. Mai 2012 07:38

AW: Advantage , ODBC und SQL
 
Zitat:

Zitat von Cici (Beitrag 1166734)

Im Ersten Schritt wäre wichtig, ob das Problem iM ADO oder der ODBC steckt.

Das Problem steckt sicher in deinem SQL. Eine Query-Komponente stellt normalerweise genau eine Ergebnismenge dar.
Wenn Du die Ergebnismenge von 2 Selects gleichzeitig haben willst brauchst Du entweder 2 Query-Komponenten, oder Du schreibst den Select als eine Union (-> eine Ergebnismenge).

Cici 16. Mai 2012 08:39

AW: Advantage , ODBC und SQL
 
Danke für Deine Hilfe Patito,
nun habe ich folgendes Script probiert:

// 1. Ergbnissmenge erzeugen
Select * INTO #Temp1
From "C:\Databases\sys\User.ADT";
// 2. Ergbnissmenge erzeugen
Select * From #Temp1;
// 1. Ergbnissmenge wieder löschen
DROP TABLE #Temp1;

Sollte also nur eine Menge verbleiben.

Auch:
TRY
DROP TABLE #Temp1;
CATCH ADS_SCRIPT_EXCEPTION
END TRY;
Select * INTO #Temp1
From "C:\Databases\sys\User.ADT";

geht nicht.
Ohne den TRY ...- Block geht es.


Immer die selbe Meldung:
Commandtext gibt keine Ergebnissmenge zurück

Ich vermute langsam das verkettete SQL Anweisungen entweder von der ODBC oder von ADO nicht unterstützt werden.

p80286 16. Mai 2012 09:25

AW: Advantage , ODBC und SQL
 
Du willst augenscheinlich mit dem Kopf durch die Wand,
mit Ado und auch anderen Schnittstellen laufen Batch-SQL-Scripte nicht (so wie erwartet).

Wenn du so etwas durchziehen willst mußt Du Dir Deine eigene Oberfläche erstellen.
Was Deine Temp-Tabelle angeht, sollte sie wirklich eien Temp-Tabelle sein, so ist die Frage wie lange sie überlebt. Wenn keine Tabele dann keine Daten.

Gruß
K-H


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