Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi dBase-Datenbanken mit Topaz-Erweiterung (https://www.delphipraxis.net/151524-dbase-datenbanken-mit-topaz-erweiterung.html)

Alfredo 26. Mai 2010 13:18

Re: dBase-Datenbanken mit Topaz-Erweiterung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mein C++ Programmierbuch sagt zu 03 im ersten Byte

Zitat:

weist ursprünglich auf dBase III+ hin.
Andere Systeme wie Clipper, dBase IV, Foxpro
uws. benutzen diese Kennung ebenfalls.
Folgendes noch herausgefunden:
- VisualFoxpro(30) ist es nicht.
- xBase hat jedoch auch 03.

Zitat:

Mit den Grafikkomponenten oder als "Runtime-Quellcode"?
Mit den Grafikkomponenten. Schau einmal ob die BDE in der Toolpalette ist,
dann haben wir zum Testen eine gemeinsame Basis.

Es geht zunächst erst einmal nur darum, dass die Datei geöffnet und angezeigt
werden kann.

Später kommt dann alles in den Code.

Gruß
Alfred

Alfredo 26. Mai 2010 15:47

Re: dBase-Datenbanken mit Topaz-Erweiterung
 
Zitat:

Plain dBase III, Ohne Memo (dbt), letztes Update am 21.05.2010, Tabelle enthält keine Records.
Kann es sein, dass Du hier die Daten einer selbst erzeugten *.dbf angegeben hast?

Gruß
Alfred

FriendOfDelphi 26. Mai 2010 16:01

Re: dBase-Datenbanken mit Topaz-Erweiterung
 
Zitat:

Zitat von Alfredo
Zitat:

Plain dBase III, Ohne Memo (dbt), letztes Update am 21.05.2010, Tabelle enthält keine Records.
Kann es sein, dass Du hier die Daten deiner selbst erzeugten *.dbf angegeben hast?

Gruß
Alfred

Ja, dass ist richtig. Das sind die ersten 8 Bytes (danke exilant :wink: ) der dBase-Datei, die mit dem o.g. Quellcode erzeugt wurde.

hoika 26. Mai 2010 16:17

Re: dBase-Datenbanken mit Topaz-Erweiterung
 
Hallo,

ich dachte, Topaz läuft bei dir schon (allerdings nicht dynamisch) ?
Falls nicht, nimm lieber TDBF, oder Access, oder Firebird oder Oracle ... ;)


Heiko

Alfredo 26. Mai 2010 16:40

Re: dBase-Datenbanken mit Topaz-Erweiterung
 
Zitat:

Ja, dass ist richtig.
Du solltest erst einmal eine Kopie einer funktionsfähigen Datei
hernehmen und sehen ob Du diese öffnen und anzeigen kannst.

Gruß
Alfred

FriendOfDelphi 28. Mai 2010 12:10

Re: dBase-Datenbanken mit Topaz-Erweiterung
 
Liste der Anhänge anzeigen (Anzahl: 4)
Zitat:

Zitat von Alfredo
Zitat:

Ja, dass ist richtig.
Du solltest erst einmal eine Kopie einer funktionsfähigen Datei
hernehmen und sehen ob Du diese öffnen und anzeigen kannst.

Gruß
Alfred

Habe ich gemacht:
Delphi-Quellcode:
unit UTest;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, tzprimds, ucommon, utzcds, utzfds, Grids, DBGrids, atzgrids;

type
  TForm1 = class(TForm)
    TzDbf2: TTzDbf;
    DataSource1: TDataSource;
    TzGrid1: TTzGrid;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

end.
Die verwendete dBase-Datei ist bei den Beispielen von Topaz dabei (Dateien "MOVIE.DBF", "MOVIE.DBT" in Archiv "dBaseDateien.zip").
Bildschirmfoto des Formulars, sowie des Objektinspektors der Komponenten sind im Anhang (Dateien "Form.jpg", "TTzDbf_Objektinspektor_Eigenschaften.jpg", "TDataSource_Objektinspektor_Eigenschaften.jpg ").
Verwendete Komponenten: TDataSource (Borland Delphi), TTzDbf (Topaz), TTzGrid (Topaz)

Alfredo 28. Mai 2010 13:35

Re: dBase-Datenbanken mit Topaz-Erweiterung
 
:thumb:

Nächster Schritt:

2 Buttons auf das Formular:

Delphi-Quellcode:
TzDbf2.active := TRUE;
Delphi-Quellcode:
TzDbf2.active := FALSE;
Im Objektinspektor Active auf FALSE setzen.

FriendOfDelphi 28. Mai 2010 15:11

Re: dBase-Datenbanken mit Topaz-Erweiterung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Alfredo
:thumb:

Nächster Schritt:

2 Buttons auf das Formular:

und

Delphi-Quellcode:
TzDbf2.active := TRUE;
und

Delphi-Quellcode:
TzDbf2.active := FALSE;

Im Objektinspektor Active auf FALSE setzen.


Gruß
Alfred

Erledigt! :-D
Delphi-Quellcode:
unit UTest;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, tzprimds, ucommon, utzcds, utzfds, Grids, DBGrids, atzgrids, StdCtrls;

type
  TForm1 = class(TForm)
    TzDbf2: TTzDbf;
    DataSource1: TDataSource;
    TzGrid1: TTzGrid;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  TzDbf2.active := TRUE;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  TzDbf2.active := FALSE;
end;

end.

Alfredo 28. Mai 2010 16:11

Re: dBase-Datenbanken mit Topaz-Erweiterung
 
:thumb:

Nächster Schritt:

den Tabellennamen im Objektinspector löschen

und im Activ-Button vor dem Active folgendes eingeben:

Delphi-Quellcode:
TzDbf2.TableName := 'Pfad\DateiName.dbf';
Damit bist Du in der Lage eine beliebige Datei zu öffnen und zu schliessen.

FriendOfDelphi 28. Mai 2010 17:05

Re: dBase-Datenbanken mit Topaz-Erweiterung
 
Zitat:

Zitat von Alfredo
Nächster Schritt:

den Tabellennamen im Objektinspector löschen

Ist erledigt.

Zitat:

Zitat von Alfredo
und im Activ-Button vor dem Active folgendes eingeben:
Delphi-Quellcode:
TzDbf2.TableName := 'Pfad\DateiName.dbf';

Das klappt nicht. Der Compiler meldet: "Undefinierter Bezeichner: 'TableName'"
Ich habe daher stattdessen folgende Eigenschaft verwendet:
Delphi-Quellcode:
  TzDbf2.DbfFileName := 'Pfad\DateiName.dbf';
Ist das identisch, oder verwechsle ich hier wieder Datei und Tabelle?

Zitat:

Zitat von Alfredo
Damit bist Du in der Lage eine beliebige Datei zu öffnen und zu schliessen.

Die fest im Quellcode verankert ist. Aber das war sie ja mit der grafischen Komponete (TTzDbf) vorher auch.

Zitat:

Zitat von Alfredo
Beim Versuch eine Tabelle per Programm anzulegen bin ich auf
einen Fehler aufgelaufen und ich denke ich weiss warum Dein
Programm abstürzt. Lösung habe ich aber noch nicht.

Bitte hänge die von Dir erstellte *.dbf an den nächsten Post
mit an.

Gruß
Alfred

Das Anlegen einer dBase-Datei ist kein Problem. Das habe ich schon geschafft:
Delphi-Quellcode:
unit Ubaue_dBaseDB;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, tzprimds, ucommon, utzcds, utzfds, utzmds;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    dbf: TTzVFile;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
   begin
     dbf := TTzVFile.Create(Application); { create an instance of TTzDbf }
     try
       dbf.DbfFields.Clear;                { clear the list of fields }
       dbf.DbfFields.Add('name,C,30,0');   { add desired fields }
       dbf.DbfFields.Add('age,N,3,0');
       dbf.DbfFields.Add('amount,N,10,2');

       dbf.DbfFilename := 'junk.dbf';   {specify the database name}

       dbf.Active := TRUE;                 { set active to true }
       dbf.WriteToDisk;
       dbf.Active := FALSE; { we are done creating the database }
     finally
       dbf.Free; { do not forget to free the instance }
     end;
   end;
end.
Das ist der leicht veränderte Beispiel-Quellcode von der Topaz-Web-Seite Topaz-FAQs.
Hier habe ich nur den Variablentyp ausgetauscht, dann wird die dBase-Datei erstellt:
Delphi-Quellcode:
VAR dbf: TTzDbf;
gegen
Delphi-Quellcode:
{ Private-Deklarationen }
dbf: TTzVFile;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr.
Seite 3 von 4     123 4      

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