![]() |
Datenbank zur Laufzeit erstellen?
Hallo,
habe eine Frage: kann ich eine Datenbank (Paradox 7) zur Laufzeit erstellen? Also so, dass ich alle Spalten erst beim Start meines Programmes erstelle mit Eigenschaft (Status, Größe etc.) und braucht der Anwender dann auch noch das BDE...dings oder braucht man das zum "Blinden" Arbeiten mit der Datenbank gar nicht? Danke für Hilfe Stefan :dp: |
DP-Maintenance
Dieses Thema wurde von "MrSpock" von "Object-Pascal / Delphi-Language" nach "Datenbanken" verschoben.
Thema ist unter Datenbanken besser aufgehoben. |
Re: Datenbank zur Laufzeit erstellen?
Hallo Snooze,
in Paradox ist eine Datenbank letztlich einfach ein Verzeichnis, in dem sich verschiedene Tabellen befinden. Diese kannst du auch zur Laufzeit erstellen. Dazu gibt es auch schon einige Threads. Wenn du mit Paradox arbeiten möchtest, benötigt der Benutzer auf seinem Rechner auch die BDE. |
Re: Datenbank zur Laufzeit erstellen?
hm das sieht nicht so einfach aus mit der Suche, denn da findet man absolut nichts...
in der Code-Library fand ich etwas ![]() nur finde ich, ist dies nicht gut genug beschrieben, denn das funktioniert bei einem Newbie wie mir nicht :cry: |
Re: Datenbank zur Laufzeit erstellen?
Was funktioniert bei dir denn nicht? Ich kann es dir auch genauer erklären.
|
Re: Datenbank zur Laufzeit erstellen?
Zitat:
also den code von dieser genannten seite habe ich einem Button als Ereignis gegeben. wenn ich jetz das Prog starten möchte, schreibt er: dass er das TblErgebnis nicht kennt. |
Re: Datenbank zur Laufzeit erstellen?
TblErgebnis ist ein Objekt vom Typ TTable. Das musst du vorher erstellen. Entweder ziehst du eine TTable-Komponente auf dein Formular. Die findest du unter "Dateizugriff".
Oder du erstellst sie während der Laufzeit. So mache ich das immer:
Delphi-Quellcode:
Du kannst TblErgebnis natürlich auch einen anderen Namen geben.
var TblErgebnis: TTable;
(...) procedure TForm1.FormCreate(Sender: TObject); begin TblErgebnis := TTable.Create(Form1); end; Aber du hast recht, ich hätte das ausdrücklich hinschreiben müssen, dass es sich um eine Variable handelt. Das nächste Mal stelle ich das ganze Programm in die Code-Library. Versuch es jetzt mal wieder. Dann sollte es funktionieren. |
Re: Datenbank zur Laufzeit erstellen?
Ach so, ich benutze noch die Variable StrPfad. Das ist eine Stringvariable, in der der Pfad der zu erstellenden Tabelle steht.
|
Re: Datenbank zur Laufzeit erstellen?
sehr gut, das scheint jetzt zu klappen :-D
Danke vielmals das mit Tabellen einfügen werde ich über die Suche finden, wurde mehrmals behandelt :dp: |
Re: Datenbank zur Laufzeit erstellen?
eine Frage doch noch:
kann ich irgendwie überprüfen, ob die Datei bereits vorhanden ist? denn sonst erstellt er sie ja jedes Mal und das bringt einen Busy-Error am liebsten wäre mir, wenn ich gleich auf eine Zeile in der Datenbank zugreifen könnte, um zu wissen, ob bereits registriert oder Neu-Anmeldung Danke Stefan |
Re: Datenbank zur Laufzeit erstellen?
Du kannst mit FindFirst und FindNext überprüfen, ob eine Datei bereits existiert. Die Funktionen sind in der Hilfe gut erklärt.
Den zweiten Teil deiner Frage verstehe ich nicht ganz. |
Re: Datenbank zur Laufzeit erstellen?
Zitat:
also ich schreibe in die ersten 10 Felder nur Daten über den Besitzer rein. im 1. Feld steht der Name deshalb möchte ich gern beim Start direkt auf dieses Feld zugreifen, und wenn dann die DATEI gar nicht da ist, oder leer ist, sollte ich dementsprechend reagieren können. Also geht es mir eigentlich nur darum, den herbeigeführten Error (wie Table is too busy...) abzufangen Danke |
Re: Datenbank zur Laufzeit erstellen?
Hallo Snooze,
ich bin erst jetzt auf Deine Frage gestoßen, vielleicht nützt Dir folgendes ja noch etwas:
Code:
mfg
procedure TFDaSi.GenSVAuftragsdatei1Click(Sender: TObject);
begin Tab1.Active := false; Tab1.DatabaseName := DataPath; //d:\myprog\daten Tab1.TableName := fnSVOrder; //d:\myprog Tab1.TableType := ttParadox; Tab1.FieldDefs.Clear; with Tab1.FieldDefs do begin Add('ID', ftAutoInc, 0, false); // für den Primärindex Add('Gruppe', ftString, 20, false); Add('QLW', ftString, 80, false); Add('CopySubDir', ftBoolean, 0, false); Add('AktRotation', ftInteger, 0, false); Add('InklFilter', ftMemo, 0, false); Add('Datum', ftDate, 0, false); Add('Zeit', ftTime, 0, false); end; { of FieldDefs } try Tab1.CreateTable; except end; // Index erzeugen Tab1.IndexDefs.Clear; Tab1.IndexDefs.Update; Tab1.AddIndex('','ID', [ixPrimary]); Tab1.AddIndex('Gruppe','Gruppe',[ixCaseInsensitive]); end; eddy |
Re: Datenbank zur Laufzeit erstellen?
Table1.Active := false;
Table1.DatabaseName := APath; //d:\myprog\daten Table1.TableName := 'Test'; //d:\myprog Table1.TableType := ttParadox; Table1.FieldDefs.Clear; with Table1.FieldDefs do begin Add('ID', ftAutoInc, 0, false); // für den Primärindex Add('Gruppe', ftString, 20, false); Add('QLW', ftString, 80, false); Add('CopySubDir', ftBoolean, 0, false); Add('AktRotation', ftInteger, 0, false); Add('InklFilter', ftMemo, 0, false); Add('Datum', ftDate, 0, false); Add('Zeit', ftTime, 0, false); end; { of FieldDefs } try Table1.CreateTable; except end; // Index erzeugen Table1.IndexDefs.Clear; Table1.IndexDefs.Update; Table1.AddIndex('','ID', [ixPrimary]); Table1.AddIndex('Gruppe','Gruppe',[ixCaseInsensitive]); so sieht mein Code jetzt nach Anpassung aus, nur schreibt er dann, dass die tabelle gar nicht existiert, und das will ich ja so haben, dass er mir das sagt, aber ein wenig anders *Ggg* Edit: erst schreibt er, dass Datensatzanzahl nicht angegeben ist und beim weitergehen kommt obige Meldung erst |
Re: Datenbank zur Laufzeit erstellen?
Tut mir leid, dass ich nicht ehr geantwortet habe. Ich hatte eben keine Zeit mehr für DP. Arbeit ;)
Du kannst in den Except-Zweig eine Showmessage-Anweisung schreiben. Dann führt er diese Anweisung aus, wenn ein Fehler auftritt. Etwa so:
Delphi-Quellcode:
Und von welchen Meldungen sprichts du denn? Wann kommen die und wie lauten sie?
try
(...) except Showmessage('Fehler!!!'); // Nur sollte deine Meldung etwas aussagekräftiger sein ;) end; |
Re: Datenbank zur Laufzeit erstellen?
baue nun das Projekt neu auf, dann werde ich gleich als erstes dies perfekt machen.
Aber danke trotzdem für diesen Tipp, :-D mfg Stefan :dp: |
Re: Datenbank zur Laufzeit erstellen?
Okay, dann viel Glück :D
|
Re: Datenbank zur Laufzeit erstellen?
Zitat:
Code:
MFG Henrik :hi:
Fileexists(File:string):boolean
|
Re: Datenbank zur Laufzeit erstellen?
Hallo Snooze,
da Du den Quelltext nur leicht geändert hast könnte folgende Zeile zu dem Fehler führen:
Code:
Ersetz' diese mal durch:
Table1.TableName := 'Test';
Code:
mfg
Table1.TableName := 'Test.DB';
eddy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:25 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