AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Create Tables

Ein Thema von wendelin · begonnen am 11. Sep 2023 · letzter Beitrag vom 13. Sep 2023
Antwort Antwort
wendelin

Registriert seit: 29. Dez 2010
Ort: Nürnberg
121 Beiträge
 
Delphi 7 Enterprise
 
#1

Create Tables

  Alt 11. Sep 2023, 10:56
Datenbank: Interbase • Version: 6.5 • Zugriff über: IBX-Comp.
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;
Wolfgang
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Create Tables

  Alt 11. Sep 2023, 11:04
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
wendelin

Registriert seit: 29. Dez 2010
Ort: Nürnberg
121 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Create Tables

  Alt 13. Sep 2023, 09:57
Danke für Deine Antwort,
ich werde es mal versuchen.
Gruß Wolfgang
Wolfgang
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz