Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datenbankstruktur im Quelltext erstellen, wie? (https://www.delphipraxis.net/169777-datenbankstruktur-im-quelltext-erstellen-wie.html)

Nintendo 10. Aug 2012 19:06

Datenbank: BDE • Version: 1.0 • Zugriff über: odbc

Datenbankstruktur im Quelltext erstellen, wie?
 
Hallo,

derzeit beschäftigt mich die Frage, wie ich eine Datenbankstruktur im Quelltext aufbauen kann.

Klarer ausgedrückt:

Früher konnte ich mit der Datenbank Oberfläche meine Datenbank entwerfen:



Feldname --- Vorname
Feldlänge --- 20
Feldtyp --- Zeichen
...

Wie erreiche ich das mit Delphi Quelltext.

Gibt es da eine Schnittstelle in der TTable Komponente.

Zu Turbo Pascal Zeiten hatte ich mal was geschrieben und es gab damals Bibliotheken dafür.

Aber geht das eventuell mit der TTable Komponente eleganter?

mkinzler 10. Aug 2012 19:07

AW: Datenbankstruktur im Quelltext erstellen, wie?
 
Gibt es eien Grund zur Verwendung der BDE?

Nintendo 10. Aug 2012 19:42

AW: Datenbankstruktur im Quelltext erstellen, wie?
 
Zitat:

Zitat von mkinzler (Beitrag 1177758)
Gibt es eien Grund zur Verwendung der BDE?

Ja, den gibt es. Ich sollte den Threadtitel von

"Datenbankstruktur im Quelltext erstellen, wie?"

in

Turbo Delphi -> Datenbankstruktur erstellen -> wie

ändern.


Der andere Grund ist dieses restriktive Forum das mich zwingt, die verwendete Datenbank um jeden Preis anzugeben, damit die Frage überhaupt erst mal gepostet wird. Schikane!!!



Wie kann ich das machen, gerne möglichst unabhängig von der später verwendeten Datenbank Engine.

Der Grund, warum ich BDE verwende ist einfach der, das ich seit Delphi 3 nicht mehr mit Datenbanken gearbeitet habe und heute in Turbo Delphi eine Datenbankanwendung erstellen wollte,

doch leider gibt es da nirgendwo die Möglichkeit, interaktiv die Datenbanktabelle aufzubauen und wenn ich meine Anwendung starte, brav mit DBText Eingabefeldern gebaut und die Datenquellen verlinkt -> DBText -> DataSource -> TTable, dann kann ich nichts in die Eingabefelder eingeben und ich kann auch keine Daten speichern um wenigstens erst mal eine leere Tabelle zu kriegen, in der außer der Felddefinition gar nix steht. Ich erimnnere mich dunkel das es zum Schreiben der Daten -> TTable.Update gab. Wenn aber noch gar keine Datenbankdatei existiert???

Auch das Setzen der TTable Eigenschaft Active auf TRUE bringt nichts, obwohl ich im Feldeditor der TTable Komponente meine Felder definiert habe. Ich erhalte stattdessen bei Setzen Active auf TRUE die Fehlermendung -> <meine.dbf> existiert nicht.

Wie also erzeuge ich die. Einfach nur die leere Datei mit den Felddefinitionen. Gerne vom späteren Datenbanktreiber unabhängig, aber als Workaround genügt vorerst eine .dbf Datei.

Gibt es eine Chance, die Tabellenstruktur der leeren Datei mit den späteren Daten mit ObjectPascal unter Verwendung der TDataSet Klasse zu erstellen oder brauche ich zwingend ein Tool, mit dem ich die leere Tabelle erzeugen kann/muss?

nahpets 10. Aug 2012 20:18

AW: Datenbankstruktur im Quelltext erstellen, wie?
 
Hallo,
Delphi-Quellcode:
if not ttable.Exists then ttable.CreateTable;
sollte dein Problem lösen.
Die Felddefinitionen müssen in FieldDefs abgelegt, die Indexdefinitionen (soweit erforderlich) in IndexDefs, und StoreDefs muss = True sein.
Das Erstellen der Tabelle kannst Du dann z. B. ins FormCreate legen, dann wird die Tabelle beim ersten Programmstart automatisch erstellt. TTable.Active := True sollte dann auch im FormCreate stehen.

Nintendo 10. Aug 2012 21:20

AW: Datenbankstruktur im Quelltext erstellen, wie?
 
Hey, Danke @nahpets, das war es, was ich wissen wollte.

Allerdings bescwert er sich immer noch, das meine Datei, deren Name ich mit

TTable.DatabaseName := <mein>.dbf;

zugewiesen habe, nicht existiert.

Ich will ja aber gerade nach Definition der Felder mit dem Feldeditor im Objektinspektor, die Datei schreiben, wenn sie noch nicht existiert und wenn sie existiert, dann einfach mit TTable.Open öffnen.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: Tobject);
begin
  MyTable.DatabaseName := <mein>.dbf;
  if MyTable.Exists then MyTable.OPen else
  begin
    MyTable.StoreDefs := true;
    MyTable.CreateTable;
  end;
end;
Was kann/muss ich noch machen?

nahpets 10. Aug 2012 22:03

AW: Datenbankstruktur im Quelltext erstellen, wie?
 
Hallo,

der Tabellenname kommt nach TTable.TableName.
TTable.DatabaseName bleibt leer.

Nintendo 11. Aug 2012 09:24

AW: Datenbankstruktur im Quelltext erstellen, wie?
 
Danke so weit. Aber jetzt erhalte ich eine

EDBEngineError Exception mit der Meldung "Merkmal nicht verfügnar".

Was muss ich noch machen?

himitsu 11. Aug 2012 09:47

AW: Datenbankstruktur im Quelltext erstellen, wie?
 
Mir ist, als hätte ich es mal so gemacht, das war allerdings beim Firebird Embedded.
Delphi-Quellcode:
//TIBTable

IBTable1.Close;
IBTable1.TableName := 'abd';
IBTable1.FieldDefs.Clear;
IBTable1.FieldDefs.Add(...);
IBTable1.FieldDefs.Add(...);
IBTable1.FieldDefs.Add(...);
IBTable1.CreateTable;
Oder du rufst das entsprechende
Delphi-Quellcode:
CREATE TABLE abc ...
auf (execute).

nahpets 11. Aug 2012 19:02

AW: Datenbankstruktur im Quelltext erstellen, wie?
 
Zitat:

Zitat von Nintendo (Beitrag 1177795)
Danke so weit. Aber jetzt erhalte ich eine

EDBEngineError Exception mit der Meldung "Merkmal nicht verfügnar".

Was muss ich noch machen?

poste bitte mal Deine Tabellendefinition, nicht alle in TTable auswählbaren Datentypen werden von allen Datenbank unterstützt. DBF hat da ziemliche Einschränkungen, ohne hier die Definitionen sehen zu können, gibts keine realistische Chance das Problem lösen zu helfen.

hoika 11. Aug 2012 19:15

AW: Datenbankstruktur im Quelltext erstellen, wie?
 
Hallo,
Ich würde das ganze per TQuery machen.

Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 Uhr.
Seite 1 von 2  1 2      

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