Hi,
ich habe 4 tabelle(Datenbanken). Tabelle1 hängt mit allen andern tabellen zusammen, also wenn die nicht existiert, dann müssen die anderen auch neu erstellt werden, egal ob sie schon existieren.
Das abfragen ist ja kein problem, ich habe nur ein problem bei wenn die anderen existieren und ich die löschen und dann wieder erstellen muss.
Ich habe auch ziehmlich viel Code für die ganze sache, darum wäre es auch gut wenn ihr tipps geben könntet wie ich eine geeignete funktion dazu aufbauen könnte(hab das sowieso meine probleme.. weiß nicht sorecht wie/warum ich funktioen machen sollte).
Ich habe zur jeden tabelle eine procedure erstellen, die die Existenzprüfung macht und falls nicht gegeben, die tabelle erstellt:
Delphi-Quellcode:
procedure TFmain.Gruppe_proof;
var
i, error_no: integer;
query: TQuery;
pfad,tabellen,
name, ext:
string;
begin
pfad := ExtractFilePath(Application.ExeName);
name := ExtractFileName(Application.ExeName);
ext := ExtractFileExt(Application.ExeName);
tabellen:=pfad + '
tabellen';
IF NOT FileExists(tabellen + '
\table1.DB')
THEN
BEGIn
if not ForceDirectories(tabellen)
then
ShowMessage('
Beim Anlegen von '+Tabellen+'
ist ein Fehler aufgetreten!');
query := TQuery.Create(
nil);
with query do
begin
DatabaseName := tabellen;
SQL.Clear;
SQL.Add('
create table "table1.db"');
SQL.Add('
(');
SQL.Add('
ID autoinc,');
SQL.Add('
Gruppe char(20),');
SQL.Add('
Name char(30),');
SQL.Add('
Vorname char(30),');
SQL.Add('
Strasse char(30),');
SQL.Add('
Hausnr char(10),');
SQL.Add('
PLZ Char(10),');
SQL.Add('
Ort char(20),');
SQL.Add('
Telefon char(30),');
SQL.Add('
primary key(ID)');
SQL.Add('
)');
SQL.Add('
Drop table "table2.db"') ->> Wo sollte das stehen?
end;
try
query.ExecSQL;
except
on e: EDBEngineError
do
for i := 0
to e.ErrorCount - 1
do
begin
error_no := e.Errors[i].ErrorCode;
if error_no <> 13057
then
begin
MessageDlg(e.
Message + #13 + '
Error no: ' + IntToStr(error_no), mtError, [mbOK], 0);
end;
end;
end;
query.Destroy;
end;
end;
Die Proceduren habe ich dann alle in das oncreate des progs gepackt. Die table2 wird aber nicht gelöscht und dann wieder erstellt.
THx,
Plautzer