Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi IBX Probleme bei Create.. (https://www.delphipraxis.net/1288-ibx-probleme-bei-create.html)

Bechti 10. Nov 2002 12:32


IBX Probleme bei Create..
 
Hi,

habe ein Problem. Ich erzeuge automatisch von meiner Applikation die ganze Datenbank. Das funktioniert, bis auf eine Sache.

Das Statement :

Code:
  datamodule1.Query1_Todo.SQL.Clear;
  statement :='ALTER PROCEDURE RESET_GEN_IDX RETURNS (MAXVALUE Integer,CURVALUE Integer,NEXTVALUE Integer)'+     
              ' AS begin Select max(maidx), gen_id(gen_idx,0)'+ 
              ' from mitarbeiter into :maxvalue, :curvalue; nextvalue = gen_Id(gen_idx, -(:curvalue-maxvalue)); '+
              ' end';
  datamodule1.Query1_Todo.SQL.Add(statement);
  datamodule1.Query1_Todo.ExecSQL;
beschwert sich bei dem Doppelpunkt von :maxvalue

Hat jemand ne Idee???

Bechti

CalganX 10. Nov 2002 16:29

Sicher, dass das mit dem Doppelpunkt richtig ist?
Versuche es mal so:
Delphi-Quellcode:
* datamodule1.Query1_Todo.SQL.Clear;
* statement :='ALTER PROCEDURE RESET_GEN_IDX RETURNS (MAXVALUE Integer,CURVALUE Integer,NEXTVALUE Integer)'+* * * 
* * * * * * * ' AS begin Select max(maidx), gen_id(gen_idx,0)'+* 
// ab hier
* * * * * * * '* from mitarbeiter into `maxvalue`, `curvalue`; nextvalue = gen_Id(gen_idx, -(:curvalue-maxvalue)); '+ 
* * * * * * * ' end';
* datamodule1.Query1_Todo.SQL.Add(statement);
* datamodule1.Query1_Todo.ExecSQL;
Ansonsten mal alle Funktionen überprüfen....

Chris

Bechti 10. Nov 2002 19:03

Danke für den Tipp. Geht aber leider auch nicht. Das interessante ist, daß die Datenbank sagt:

Code:
Dynamic SQL Error
SQL Error Code= -104
Token unknown - line 1, char 161 ?.
Das Zeichen 161 ist der Doppelpunkt und den Interpretiert er als Fragezeichen ??!?!?!

Hast Du noch ein Tipp?[/img]

CalganX 11. Nov 2002 08:40

Hm... eigentlich nicht.

Chris

DKamps 13. Nov 2002 11:24

Sowas habe ich schon mal mit Oracle 7 erlebt. Bitte überprüfe mal den Zeichensatz, der geladen ist. Der Server interpretiert Dein SQL-Statement nämlich nach eigenen Regeln.
Bei Oracle musste man da in der Registry rumbasteln, bei SQL Server gibt der Treiber einiges her.
Ich habe mit der BDE übrigens nur schlechte Erfahrungen gegen SQL-Server gemacht. Die dbExpress-Komponenten sind da viel angenehmer zu handhaben (und brauchen auch nicht soviel Speicher).

Gast 13. Nov 2002 11:26

Hallo Bechti, 8)

Probiere vielleicht so...:

Code:
datamodule1.Query1_Todo.SQL.Clear;


  statement := 'SET TERM^;' +

' ALTER PROCEDURE RESET_GEN_IDX RETURNS (MAXVALUE Integer,CURVALUE Integer,NEXTVALUE Integer)'+     
              ' AS begin Select max(maidx), gen_id(gen_idx,0)'+ 
// ab hier
              ' from mitarbeiter into `maxvalue`, `curvalue`; nextvalue = gen_Id(gen_idx, -(:curvalue-maxvalue)); '+ 
              ' end' +
' SET TERM;^';
  datamodule1.Query1_Todo.SQL.Add(statement);
  datamodule1.Query1_Todo.ExecSQL;
Gruß

Paul Jr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:27 Uhr.

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