Hallo,
im Rahmen eines Updates müssen in einigen Tabellen neue Spalten eingetragen und von bestehenden Spalten der Typ geändert werden. Das Update soll mit einem kleinen Delphi-Programm gelöst werden, welches ein SQL-Script ausführen soll. Es wird ADS Version 8.1 und Delphi 2005 verwendet.
Beispiel:
Eine Tabelle enthält u.a. folgende Spalten:
PLZ - Integer
Erstellt - CICharacter
Geändert - CICharacter
Die Tabelle soll nun so aussehen:
PLZ - Char (Datentyp ändern, Inhalt aus "PLZ")
CreateDate - Date (Spalte umbenennen, Datentyp ändern, Inhalt aus "Erfasst")
ChangeDate - Date (Spalte umbenennen, Datentyp ändern, Inhalt aus "Geändert")
ChangeCode - Char (neue Spalte)
KZDelete - Logical (neue Spalte)
Das SQL-Script sieht so aus (Kommentare nur zur Erklärung eingefügt):
Während das SQl-Script im Data Architect fehlerfrei funktioniert, kommt es im Delphi-Programm zu folgender Fehlermeldung:
"Error 7200: AQE Error: State = 07006; Native Error = 2109 ... Location of error ... is: 382 (line: 8 column: 1)"
Der Fehler müßte also in der Zeile liegen:
Was könnte die Ursache für den Fehler sein bzw. wie sollte das SQL-Script aussehen ?
Mike
im Rahmen eines Updates müssen in einigen Tabellen neue Spalten eingetragen und von bestehenden Spalten der Typ geändert werden. Das Update soll mit einem kleinen Delphi-Programm gelöst werden, welches ein SQL-Script ausführen soll. Es wird ADS Version 8.1 und Delphi 2005 verwendet.
Beispiel:
Eine Tabelle enthält u.a. folgende Spalten:
PLZ - Integer
Erstellt - CICharacter
Geändert - CICharacter
Die Tabelle soll nun so aussehen:
PLZ - Char (Datentyp ändern, Inhalt aus "PLZ")
CreateDate - Date (Spalte umbenennen, Datentyp ändern, Inhalt aus "Erfasst")
ChangeDate - Date (Spalte umbenennen, Datentyp ändern, Inhalt aus "Geändert")
ChangeCode - Char (neue Spalte)
KZDelete - Logical (neue Spalte)
Das SQL-Script sieht so aus (Kommentare nur zur Erklärung eingefügt):
Code:
-- Änderung Datentyp PLZ ALTER TABLE Kunde ADD COLUMN PLZ2 Char(10); UPDATE Kunde SET PLZ2 = SUBSTRING(CONVERT(100000+PLZ, SQL_CHAR),2,5) WHERE PLZ IS NOT NULL; ALTER TABLE Kunde DROP PLZ; ALTER TABLE Kunde ADD COLUMN PLZ Char(10) position 9; UPDATE Kunde SET PLZ = PLZ2; ALTER TABLE Kunde DROP PLZ2; -- Datenfeld "Erfasst" umbennen ALTER TABLE Kunde ADD COLUMN CreateDate Date; UPDATE Kunde SET CreateDate = CONVERT (Erfasst, SQL_DATE) WHERE Erfasst IS NOT NULL; ALTER TABLE Kunde DROP Erfasst; -- Datenfeld "Geändert" umbennen ALTER TABLE Kunde ADD COLUMN ChangeDate Date; UPDATE Kunde SET ChangeDate = CONVERT (Geaend, SQL_DATE) WHERE Geaend IS NOT NULL; ALTER TABLE Kunde DROP Geaend; -- neues Datenfeld "ChangeCode" anlegen und Text eintragen ALTER TABLE Kunde ADD COLUMN ChangeCode Char (100); UPDATE Kunde SET ChangeCode = CONVERT ('DBUpdate', SQL_CHAR); -- neues Datenfeld "KZDelete" anlegen und mit 'FALSE' vorbelegen ALTER TABLE Kunde ADD COLUMN KZDelete Logical; UPDATE Kunde SET KZDelete = CONVERT (FALSE, SQL_BIT);
"Error 7200: AQE Error: State = 07006; Native Error = 2109 ... Location of error ... is: 382 (line: 8 column: 1)"
Der Fehler müßte also in der Zeile liegen:
Code:
UPDATE Kunde SET CreateDate = CONVERT (Erfasst, SQL_DATE) WHERE Erfasst IS NOT NULL;
Mike
Comment