Hallo alle zusammen,
Ich beschäftige mich nun endlich mit Firebird als Datenbank, um von
Paradox wegzukommen.
Erst mal experimentell.
Ich habe da ein kleines Problem. Ich möchte eine vorhandene Tabelle um eine Spalte(Feld) erweitern.
Da erhalte eine Fehlermeldung:
Code:
SQL Error: unsuccessful metadata update T1. Error Code -607. This operation is not defined for system tables.
Die Fehlermeldung kommt im ALTER Table Statment.
Delphi-Quellcode:
function TForm1.Teste_Feld_In_Tabelle(Bez: string): boolean;
var
i: Byte;
begin
result := false;
with data do
for i := 0 to ZQuery.FieldDefs.Count - 1 do
begin
if Bez = ZQuery.FieldDefs[i].Name then
Result := True;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
vFirst: Boolean;
begin
with data do
begin
vFirst := False;
ZConn.User := 'SYSDBA';
ZConn.Password := 'egal';
ZConn.Database := '.\TestFb.fdb';
if not fileExists('.\TestFb.fdb') then
begin
vFirst := True;
ZConn.Properties.Add('CreateNewDatabase=CREATE DATABASE ' +
QuotedStr('.\TestFb.fdb') + ' USER ' +
QuotedStr('sysdba') + ' PASSWORD ' + QuotedStr('masterkey') +
' PAGE_SIZE 4096 DEFAULT CHARACTER SET ISO8859_1');
end;
ZConn.Properties.Add('Dialect=3');
ZConn.Connected := true;
if vFirst then
begin
ZQuery.SQL.Clear;
ZQuery.SQL.Add('Create TABLE T1 (P1 INTEGER NOT NULL PRIMARY KEY);');
ZQuery.ExecSQL;
end;
ZQuery.SQL.Add('SELECT P1 FROM T1;');
ZQuery.Active := True;
ZQuery.Close;
ZQuery.SQL.Clear;
ZQuery.SQL.Add('SELECT * FROM T1;'); //SELECT TOP 0 * FROM T1 ging auch nicht
ZQuery.open;
//Testen, ob NAME schon vorhanden
if Teste_Feld_In_Tabelle('Name') = False then
begin
ZQuery.SQL.Clear;
ZQuery.SQL.Add('ALTER TABLE T1 ADD Name Char (30);');
ZQuery.ExecSQL;
end;
ZQuery.SQL.Clear;
ZQuery.SQL.Add('SELECT * FROM T1 WHERE p1 > 20;');
ZQuery.open;
ZQuery.Last;
end;
end;
Was ist falsch?
mfg