Thema: Delphi SQL Update Script

Einzelnen Beitrag anzeigen

b01

Registriert seit: 3. Jul 2006
26 Beiträge
 
#1

SQL Update Script

  Alt 17. Jul 2006, 18:17
Datenbank: Firebird, Interbase • Version: 1.5 • Zugriff über: SQL, Query, Zeos
Hallo
ich will eine Datenbank (Firebird 1.5)aus meinem Programm heraus updaten. Hierfür benutze ich SQL Scripts in denen ich die Tabellendefinitionen verändere oder neue Tabellen erstelle. Wenn ich das Updatescript in IBExpert teste funtkioniert alles wie es soll, nur wenn ich es aus Delphi heraus versuche funktionierts nicht. Wenn ich die TJvUIBScript Komponente benutze kommt folgende Fehlermeldung
Zitat:
... Exception der Klasse EUIBError aufgetreten. Meldung:'unsuccsessful metadata update STORE RDB$RELATION_FIELDS failed attempt to store dublicate value (visible to active transactions) in unique index "RDB$INDEX_15" This operation is not defined for system tables. Error Code 31', Prozess wurde angehalten ...
Danach habe ich es mit TZSQLProcessor versucht. Das Ergebnis war folgende Meldung:
Zitat:
... Exception der Klasse EZSQLException aufgetretem. Meldung:'unsuccsessful metadata update STORE RDB$RELATION_FIELDS failed attempt to store dublicate value (visible to active transactions) in unique index "RDB$INDEX_15" This operation is not defined for system tables. ...
Zusätzlich wurde die Scriptzeile alter table ARTMODE add def_LOESCHEN BOOLEAN; zitiert, welche die erste Zeile in dem Script ist. Das Updatescript ist ca 1000 Zeilen lang und enthält verschiedene Kommentare. Da das Script in IBExpert fehlerlos durchläuft gehe ich davon aus das ich die verwendeten Komponenten falsch anspreche, allerdings kann ich in meinen Testprogs keine Fehler finden, zB mit Zeos Komponenten ist der einzige selbsterstelle code
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ZSQLProcessor1.LoadFromFile('D:\Daten\Delphi\Test\update.txt');
  ZSQLProcessor1.Execute;
end;
Bei den Jedi Komponenten sieht es ähnlich aus. Sollte ich das Script in kleinere Packete aufteilen? Wo könnte sonst der Fehler liegen? Gibts es Beispielcode zum verwenden dieser Komponenten?
  Mit Zitat antworten Zitat