Hi Plautzer!
Ich würde keine Prüfungen auf Existenz der Tabelle vornehmen, sondern gleich versuchen die Tabelle zu erstellen. Wenn die Tabelle schon existiert, dann bekommst Du einen Fehler (13075), den Du mit „try .. except ..end“ abfangen kannst. Wenn die Tabelle nicht existiert, dann wird sie erstellt.
Der code sollte etwa so aussehen:
Delphi-Quellcode:
function myCreateTable: boolean;
var
i, error_no: integer;
query: TQuery;
begin
// Rückgabe auf true setzen (= alles OK)
myCreateTable := true;
// Query aufbauen
query := TQuery.Create(
nil);
with query do
begin
SQL.Clear;
SQL.Add('
create table "Tabelle.db"');
SQL.Add('
(');
SQL.Add('
ID smallint,');
SQL.Add('
Feld1 char(40),');
SQL.Add('
Feld1 char(40),');
SQL.Add('
primary key(ID)');
SQL.Add('
)');
end;
// Query ausführen, dabei Fehler abfangen
// “13057 File already exists" -> Tabelle existiert
try
query.ExecSQL;
except
on e: EDBEngineError
do
for i := 0
to e.ErrorCount - 1
do
begin
error_no := e.Errors[i].ErrorCode;
// falls Fehler-ID nicht gleich 13057, dann Rückgabe auf false setzen und
// Message anzeigen
if error_no <> 13057
then
begin
MessageDlg(e.
Message + #13 + '
Error no: ' + IntToStr(error_no), mtError, [mbOK], 0);
myCreateTable := false;
end;
end;
end;
// Query nicht mehr nötig, also weghauen
query.Destroy;
end;
viele Grüße
Markus