Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADS: Fehler bei ExecSQL (https://www.delphipraxis.net/99991-ads-fehler-bei-execsql.html)

Mike_on_Tour 20. Sep 2007 16:44

Datenbank: ADS • Version: 8.1 • Zugriff über: Advantage TDataSet

ADS: Fehler bei ExecSQL
 
Hallo,

ich habe eine ADS-Datenbank (Advantage Database). Mit dem ARC habe ich eine neue Tabelle erzeugt und mir ein SQL-Script generieren lassen. Dieses SQL-Script soll mittels einem Delphi-Programm für ein Update der Datenbank bei Kunden ausgeführt werden. Dazu wird das SQL-Script in ein TAdsQuery geladen und mit ExecSQL ausgeführt. Bei der Ausführung kommt jedoch folgender Fehler:

Error 7200: AQE Error: State = HY000; NativeError = 7041;
[Extended Systems][Advantage SQL][ASA] Error 7041: File not found.
Verify the specified path and file name is correct.
** Script error information: -- Location of error in the SQL statement is: 1'

Das gleiche Script funktioniert jedoch im ARC einwandfrei.

SQL-Code:
CREATE TABLE PraemienKonto ( 
      ID AutoInc,
      PersonalID Integer,
      Jahr Integer,
      Monat Integer,
      SollPraemie Double,
      IstPraemie Double,
      Datum Date);

EXECUTE PROCEDURE sp_CreateIndex( 
   'PraemienKonto',
   'PraemienKontoIDX.adi',
   'PKANZEIGE',
   'PersonalID;Jahr;Monat',
   '',
   2,
   512 );
Delphi-Quellcode:
ADS.BeginTransaction;
(tQueryComp as TADSQuery).ExecSQL;
(tQueryComp as TADSQuery).AdsCloseSQLStatement;
ADS.Commit;
Wer hat dazu einen Vorschlag ?

Mike

Mike_on_Tour 20. Sep 2007 16:56

Re: ADS: Fehler bei ExecSQL
 
Hallo,

das Problem ist gelöst. Beim Kopieren der TAdsQuery-Komponenten ist die AdsConnection verschwunden.

Mike

Union 20. Sep 2007 17:55

Re: ADS: Fehler bei ExecSQL
 
Unabhängig davon hast Du ein kleines Design-Problem - die Indexdatei hat einen von der Tabelle abweichenden Namen und wird somit nicht automatisch geöffnet. Es wäre in dem Fall besser mit CREATE INDEX anstelle von sp_CreateIndex zu arbeiten oder den gleichen Basisnamen zu verwenden.

joachimd 21. Sep 2007 14:04

Re: ADS: Fehler bei ExecSQL
 
Zitat:

Zitat von Union
Unabhängig davon hast Du ein kleines Design-Problem - die Indexdatei hat einen von der Tabelle abweichenden Namen und wird somit nicht automatisch geöffnet. Es wäre in dem Fall besser mit CREATE INDEX anstelle von sp_CreateIndex zu arbeiten oder den gleichen Basisnamen zu verwenden.

order den Index-Dateinamen weglassen, dann wird er automatisch gewählt.

Mike_on_Tour 26. Sep 2007 08:56

Re: ADS: Fehler bei ExecSQL
 
Zitat:

Zitat von Union
Unabhängig davon hast Du ein kleines Design-Problem - die Indexdatei hat einen von der Tabelle abweichenden Namen und wird somit nicht automatisch geöffnet. Es wäre in dem Fall besser mit CREATE INDEX anstelle von sp_CreateIndex zu arbeiten oder den gleichen Basisnamen zu verwenden.

Danke für den Hinweis. Wie schon geschrieben, wird das SQL-Script aber mit dem ARC erstellt und in einem Delphi-Programm ausgeführt. Das soll auch erst mal so bleiben.

Mike

Mike_on_Tour 26. Sep 2007 10:15

Re: ADS: Fehler bei ExecSQL
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo nochmal,

während des Programmtests auf einem Test-PC kommt es noch zu folgendem Fehler:

Error 7200: AQE Error: State = HY000; NativeError = 2198;
[Extended Systems][Advantage SQL Engine] Error 2198: The stored procedure name is invalid.

Das vollständige SQL-Script: siehe Anhang

Das Programm und das SQL-Script im ARC funktionieren auf dem Entwicklungs-PC fehlerfrei.
Auf allen PCs erfolgt die Benutzeranmeldung als Admin. Die Anmeldung an ADS erfolgt über das Programm.

Kann es daran liegen, daß auf dem Entwicklungs-PC ein ADS-Server (2 User) installiert ist und auf den anderen PC "nur" Local Server ? Oder liegt das Problem wo anders ?
Läßt sich evtl. ermitteln, welche "stored procedure" den Fehler erzeugt ?

Mike

Union 26. Sep 2007 12:10

Re: ADS: Fehler bei ExecSQL
 
Zum debuggen solltest Du jeden Befehl einzeln ablaufen lassen und nicht das ganze Script.
Ich vermute dass es sp_ModifyIndexProperty ist. Wahrscheinlich setzt Du ADS in Version 8 ein und hast auf dem Test PC eine lokale Variante einer älteren Version. Check mal Deine Dlls.

Mike_on_Tour 26. Sep 2007 12:54

Re: ADS: Fehler bei ExecSQL
 
Zitat:

Zitat von Union
Zum debuggen solltest Du jeden Befehl einzeln ablaufen lassen und nicht das ganze Script.
Ich vermute dass es sp_ModifyIndexProperty ist. Wahrscheinlich setzt Du ADS in Version 8 ein und hast auf dem Test PC eine lokale Variante einer älteren Version. Check mal Deine Dlls.

Besten Dank für den Tip mit dem Prüfen der ADS-Version. Auf dem Test-PC ist tatsächlich noch eine Version 8.0 installiert, während auf dem Entwicklungs-PC schon die Version 8.1 läuft. Da hätte ich noch lange gesucht. Nach dem Aktualisieren der ADS-DLLs lief das Programm bis zum Ende fehlerfrei durch.
Also, Danke nochmal.

Mike


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