![]() |
Datenbank: Interbase • Version: 6.5 • Zugriff über: IB-Componenten
SQL -Befehl 'CreateTables' at runtime
Hallo,
zunächst möchte ich Herrn Jaenicke für seine Antwort auf meine Frage zum Thema 'Create Tables' vom 11.09.23 danken. Ich habe mein Problem vollständig gelöst, wenn auch mit Schwierigkeiten. Nun habe ich aber ein neues Problem. Siehe Pfeil auf die Zeile s := 'CREATE TABLE Extend ' Ich möchte den TableName (hier z.B. Extend ) nicht statisch innerhalb des kompletten Strings schreiben ,sondern als z.B.als Übergabe von Edit.Text. Dies geht aber nicht, denn wenn ich die procedure aufrufe wird mir zwar RunTime eine neue Tabelle erzeugt,allerdings dann mit dem Namen Extend. Geht das überhaupt mit SQL und wenn ja wie ?
Delphi-Quellcode:
(* Create Tables on RunTime *)
(* TEIL3 --- TEIL3 --- TEIL3 *) (* ----------------------------------------- *) procedure TForm3.BitBtn2Click(Sender: TObject); (* ----------------------------------------- *) VAR s , Extend : STRING; begin Extend := Edit1.Text; --> s := 'CREATE TABLE Extend ' + '(' + ' ID1 INTEGER NOT NULL PRIMARY KEY, ' + ' Stock CHAR(35), ' + ' AktDatum DATE, ' + ' StockOPEN NUMERIC(15,2), ' + ' StockHigh NUMERIC(15,2), ' + ' StockLOW NUMERIC(15,2), ' + ' StockCLOSE NUMERIC(15,2) ' + ');'; with Datamodule2 do begin If IBD.Connected = True Then IBD.Close; IBD.Params.Clear; IBD.Params.Values['user_name'] := 'SYSDBA'; IBD.Params.Values['password'] := 'masterkey'; IBD.DatabaseName := g_DBPfad; IBD.Open; //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; IBT.Commit; IBD.Connected := false; end; end; Danke , Wolfgang |
AW: SQL -Befehl 'CreateTables' at runtime
Zitat:
Das ganze könnte z.B. so aussehen.
Delphi-Quellcode:
Sofern der Inhalt von Edit1 nicht überprüft wird, kann auf die Variable sTabellename verzichtet werden.
var s, sTabellenname : String;
begin sTabellenname := Edit1.Text; s := 'CREATE TABLE ' + sTabellname + '(' +.... Sprechende Namen sind immer hilfreich: Edit1.Text -> edTabellenname Dies könnte dann z.B. so aussehen:
Delphi-Quellcode:
Gruss
var
sSQL : String; begin sQL := 'CREATE TABLE ' + edTabellenname.Text + '(' +.... |
AW: SQL -Befehl 'CreateTables' at runtime
Zitat:
![]()
Delphi-Quellcode:
:kotz:
with Datamodule2 do
begin Warum wird das immer noch benutzt, obwohl alle davor warnen! :warn: |
AW: SQL -Befehl 'CreateTables' at runtime
Hallo Roland,
vielen Dank für Deine Anrwort. Es hat auf Anhieb geklappt. Super ! Ich denke, ich muß noch Einiges lernen.. aber ich bin ja erst 78! Ich habe jetzt noch 2 Fragen. 1. kann ich mit dem selben Schema SQL -> 'DROP TABLE' programmieren ? 2. Bei einem Einplatzsystem (Interbase) : gibt es prnzipiell einen Unterschied zwischen 'DROP DATABASE' und dem einfachen Löschen des Datenbank-Files ? Gruß Wolfgang |
AW: SQL -Befehl 'CreateTables' at runtime
Zitat:
1) Ja, dies geht. Beim Text in den Hochkommatas handelt es sich um einen String und mit dem Zitat:
2) Interbase kenne ich nicht speziell, aber es dürfte bei allen Systemen ähnlich sein. Theoretisch ist es das gleiche, aber das manuelle Löschen der Files ist eine schlechte Option. Zum einen kann es sein, dass die Datenbank die Files noch sperrt und zum anderen werden interne Einträge (z.B. in der Registry) nicht sauber entfernt. Darum immer Drop Database verwenden. Gruss Roland |
AW: SQL -Befehl 'CreateTables' at runtime
Hallo Roland,
vielen Dank für Deine kenntnissreichen Antworten. Mit dem Befehl 'DROP TABLE' klappt es auch. Wenn ich mal zu Datenbanken (Interbase) noch Fragen habe, werde ich mich vertrauensvoll an Dich wenden !? Ich hoffe, es ist Dir recht. Gruß Wolfgang |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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-2025 by Thomas Breitkreuz