Entwickler-Ecke

Datenbanken - Datenbank als .db speichern?


Gorax - Do 04.09.08 16:44
Titel: Datenbank als .db speichern?
Hey Leute

Wie speichere ich eine paradox datenbank, die ich zur laufzeit erzeugt habe, als beispielsweise "Test.db" ab?

also das soll in ne Datenbankdatei (ist nur der Rohentwurf aus der Delphi hilfe):

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
if not Table1.Exists then begin

  with Table1 do begin

  { Die Table-Komponente darf nicht aktiv sein }
  Active := False;
  { Zuerst den Tabellentyp beschreiben und die Tabelle benennen }
  DatabaseName := 'DBDEMOS';
  TableType := ttParadox;
  TableName := 'testtable';


  { Dann die Felder in der Tabelle beschreiben }
  with FieldDefs do begin
    Clear;
      with AddFieldDef do begin
        Name := 'Field1';
        DataType := ftInteger;
        Required := True;
      end;

      with AddFieldDef do begin
        Name := 'Field2';
        DataType := ftString;
        Size := 30;
      end;

    end;

  { Dann alle Indizes beschreiben }
  with IndexDefs do begin
    Clear;
    { Der erste Index hat keinen Namen, denn er ist ein }
    { primärer Paradox-Schlüssel }
      with AddIndexDef do begin
        Name := '';
        Fields := 'Field1';
        Options := [ixPrimary];
      end;
      with AddIndexDef do begin
        Name := 'Fld2Indx';
        Fields := 'Field2';
        Options := [ixCaseInsensitive];

      end;
    end;
  { CreateTable-Methode zu Erzeugen der Tabelle aufrufen }
  CreateTable;
  end;
end;


ich hab schon so ziemilch alles durchsucht(vl. war ich auch zu blöd zum suchen...) und muss den teil des Projektes (wahr ursprünglich nicht mein teil...) schon morgen fertig haben.

Hab mich bisher noch ned mit dieser art von Datenbank beschäftigt.

Schon mal vielen Dank im voraus :D

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt


alzaimar - Do 04.09.08 18:15

Soweit ich weiss, muss eine Datei Test.db schon existieren. Erzeuge doch mal mit der Datenbankoberfläche eine Test.DB


Gorax - Do 04.09.08 18:45

thx, aber genau das soll der Code machen: so eine *.db datei erstellen :wink:


Narses - Do 04.09.08 19:47

Moin!

Hab das in einem alten Projekt gefunden:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
var
  Matrix: TTable;
//...
begin
  try
    with Matrix do begin
      Active := FALSE;
      TableType := ttParadox;
      TableName := DB_MATRIX;
      with FieldDefs do begin
        Clear;
        with AddFieldDef do begin
          Name := 'PROFIL';
          DataType := ftString;
          Size := 20;
          Required := TRUE;
        end;
        for i := 0 to FktDef.Count-1 do
          with AddFieldDef do begin
            Name := FktDef.Strings[i];
            DataType := ftString;
            Size := 1;
          end;
      end;
      CreateTable;
    end;
  except
    MessageDlg('Fehler beim Anlegen der Matrix-Tabelle!?',mtError,[mbOK],0);
  end;
Damals hat´s funktioniert... :nixweiss:

cu
Narses


Gorax - Do 04.09.08 20:05

Ja dann wird die Datenbank dynamisch erstellt. aber ich hab davon leider noch keine Datei.

soll er die leicht automatisch abspeichern?

ich hab hier irgendwo im board gelesen, dass man die eigenschaft "Database" von der TTable Komponente auf das Verzeichnis verweisen. aber wie mach ich das?


Narses - Do 04.09.08 20:10

Moin!

user profile iconGorax hat folgendes geschrieben:
ich hab hier irgendwo im board gelesen, dass man die eigenschaft "Database" von der TTable Komponente auf das Verzeichnis verweisen. aber wie mach ich das?
Das ist natürlich klar, du musst .Database auf den Ordner zeigen lassen, in dem die Datei erstellt werden soll und .Tablename kriegt den Dateinamen rein.

cu
Narses


Gorax - Do 04.09.08 20:19

thx^^, meine nächste frage: Wie lasse ich ihn auf den Order anzeigen :D
Wie muss ich da schreiben?

sry, kenn mich in dem bereich noch ned so aus (hab auch ned gedacht, dass ich den teil noch bekomme)


Delete - Do 04.09.08 20:29

sagt mal, reicht da nicht ein create table ... :roll:


Narses - Do 04.09.08 20:31

Moin!

user profile iconGorax hat folgendes geschrieben:
thx^^, meine nächste frage: Wie lasse ich ihn auf den Order anzeigen :D
Wie muss ich da schreiben?
Geht so: ;)

Delphi-Quelltext
1:
2:
3:
Filename := 'C:\Test\Tabelle.db';
Table.Databasename := ExtractFilePath(Filename);
Table.Tablename := ExtractFileName(Filename);
cu
Narses


Gorax - Do 04.09.08 20:38

thx funktioniert besstens :D


Narses - Do 04.09.08 20:41

Moin!

Markierst du den Thread noch entsprechend, wenn dein Problem gelöst ist? Danke. ;)

cu
Narses


Gorax - Do 04.09.08 20:56

sry übersehen :wink: