![]() |
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:
beschwert sich bei dem Doppelpunkt von :maxvalue
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; Hat jemand ne Idee??? Bechti |
Sicher, dass das mit dem Doppelpunkt richtig ist?
Versuche es mal so:
Delphi-Quellcode:
Ansonsten mal alle Funktionen überprüfen....
* 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; Chris |
Danke für den Tipp. Geht aber leider auch nicht. Das interessante ist, daß die Datenbank sagt:
Code:
Das Zeichen 161 ist der Doppelpunkt und den Interpretiert er als Fragezeichen ??!?!?!
Dynamic SQL Error
SQL Error Code= -104 Token unknown - line 1, char 161 ?. Hast Du noch ein Tipp?[/img] |
Hm... eigentlich nicht.
Chris |
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). |
Hallo Bechti, 8)
Probiere vielleicht so...:
Code:
Gruß
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; 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