![]() |
Datenbank: Interbase • Version: 6.5 • Zugriff über: IBX-Comp.
Create Tables
Hi,
mein problem ist folgendes: Wenn ich eine Datenbank neu anlege(CreateDatabase) und INNERHALB dieser procedure die Tables MIT anlege('CREATE TABLE MySQL1 ') funktioniert alles bestens! Auch die Tables werden angelegt. Wenn ich jedoch die Zeile tables_anlegen (siehe Pfeil) herausnehme und somit nur eine leere Datenbank erzeuge, dann das Programm verlasse und wieder neu starte und die procedure 'Tables_anlegen' über einen Button starte kommt die Runtimeerror : 'Operation cancelled at users request.' Was kann ich da machen?
Delphi-Quellcode:
(* DataBase + Tables anlegen DataBase + Tables anlegen *)
(* TEIL1 --- TEIL1 --- TEIL1 *) (******************************************************************************) procedure TForm3.SpeedButton2Click(Sender: TObject); (******************************************************************************) VAR DBPath : STRING; MyResult : String; const cCreateTxt = ' %d. Versuch: Datenbank wird erstellt...'; cReadyTxt = 'Datenbank wird erstellt!'; begin MyResult := GetCurrentDir; // bestimmen des Arbeitsverzeichnisses g_ArbeitsVerz := MyResult; g_DBPfad := g_ArbeitsVerz + '\DB'; DBPath := g_DBPfad + '\My_IB_DB.gdb'; EditDBPath.Text := DBPath; If not FileExists(g_DBPfad + '\My_IB_DB.gdb') then begin Screen.Cursor := crHourGlass; If DataModule2.IBD.LoginPrompt = TRUE THEN DataModule2.IBD.LoginPrompt := FALSE; IF DataModule2.IBD.Connected = TRUE THEN DataModule2.IBD.Connected := FALSE; DataModule2.IBD.Params.Clear; try try StatusBar1.SimpleText := Format(cCreateTxt, [1]); StatusBar1.Refresh; with DataModule2.IBD do begin DatabaseName := EditDBPath.Text; Params.Add(Format('USER ''%s''',[EditUserName.Text])); Params.Add(Format('PASSWORD ''%s''', [EditPassword.Text])); // nur so geht es SQLDialect:= 3; // mit Dialekt 3 ! Params.Add('PAGE_SIZE 4096'); // SQLDialect'3'--> Params.Add('DEFAULT CHARACTER SET ISO8859_1'); // wahrscheinlich wegen CreateDatabase; // Double-Quotes !! end; StatusBar1.SimpleText := cReadyTxt; -->> tables_anlegen; SpeedButton3.Enabled := False; except on E:EDatabaseError do // IBD.Params.Add( Format( 'USER ''%s''', [Username] ) ); // IBD.Params.Add( Format( 'PASSWORD ''%s''', [Password] ) ); begin MessageBeep(MB_ICONEXCLAMATION); MessageDlg(E.Message, mtError, [mbOk], 0); end; end; finally Screen.Cursor := crDefault; end; end ELSE ShowMessage(' Die Datenbank existiert schon !'); end;
Delphi-Quellcode:
(* DataBase + Tables anlegen DataBase + Tables anlegen *)
(* TEIL2 --- TEIL2 --- TEIL2 *) (******************************************************************************) Procedure TForm3.Tables_anlegen; (******************************************************************************) VAR s,t : STRING; begin s := 'CREATE TABLE MySQL1 ' + '(' + ' ID1 INTEGER NOT NULL PRIMARY KEY, ' + ' Stock CHAR(35), ' + ' Ind CHAR(15), ' + ' IndPe INTEGER NOT NULL, ' + ' LongAm DATE, ' + ' PriceLong NUMERIC(15,2), ' + ' ShortAm DATE, ' + ' PriceShort NUMERIC(15,2), ' + ' Days INTEGER, ' + ' Profit NUMERIC(15,2), ' + ' SumProfit NUMERIC(15,2), ' + ' Balance NUMERIC(15,2) ' + ');'; t := 'CREATE TABLE MySQL2 ' + '(' + ' ID2 INTEGER NOT NULL PRIMARY KEY, ' + ' BuyAndHold NUMERIC(15,2), ' + ' Commission NUMERIC(15,2), ' + ' SumComm NUMERIC(15,2) ' + ');'; with Datamodule2 do begin IF IBD.LoginPrompt = FALSE THEN IBD.LoginPrompt := TRUE; (* ohne Login geht nichts ?? *) //zur Datenbank verbinden IF IBD.Connected = FALSE THEN IBD.Connected := TRUE; //neue Transaktion starten if not IBT.InTransaction then IBT.StartTransaction; //SQL-String setzen IBSQL.SQL.Clear; IBSQL.SQL.Add(s); //SQL Anweisung ausführen IBSQL.ExecQuery; //SQL-String setzen IBSQL.SQL.Clear; IBSQL.SQL.Add(t); //SQL Anweisung ausführen IBSQL.ExecQuery; IBT.Commit; IBD.Connected := false; end; end; |
AW: Create Tables
Du musst noch zu der Datenbank wechseln. Ich vermute du musst DatabaseName oder eine ähnliche Property auf den Namen der Datenbank setzen (Interbase kenne ich nicht). Nach der Erstellung bist du noch im Kontext der Datenbank, deshalb klappt es dann.
|
AW: Create Tables
Danke für Deine Antwort,
ich werde es mal versuchen. Gruß Wolfgang |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz