Autor Beitrag
dlenz
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 17.01.07 11:01 
Hallo Liebe Gemeinde,

ich möchte mein DB-Verwaltungsprogramm gerne auf einem anderen PC ausführbar machen.
Irgendwie komme ich aber mit "ExtractFilePath(ParamStr(0));" irgendwie nicht zurande.

Ich benutze eine TurboDB "db.tdbd", die im Ordner /db in meinem Programmverzeichnis liegt.

Wo muss ich denn "ExtractFilePath(ParamStr(0));" genau im Code anwenden?
MisterBum83
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 245
Erhaltene Danke: 2

WIN XP
Delphi 6
BeitragVerfasst: Mi 17.01.07 11:51 
Ich verstehe dein Problem nicht so richtig. Was willst du denn machen?
ExtractFilePath(ParamStr(0)) liefert dir den Pfad zurück, wo dein Programm ausgeführt wird.

user profile icondlenz hat folgendes geschrieben:


Wo muss ich denn "ExtractFilePath(ParamStr(0));" genau im Code anwenden?



Für was denn?
dlenz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 17.01.07 11:54 
Wenn das Programm auf einem anderen PC ausgeführt wird, dann wird meine "db.tdbd" im Ordner /db nicht gefunden, da der andere PC einen ganz anderen Laufwerksbuchstaben und Programmpfad hat, in dem das Programm gestartet wird.

ich starte das Programm z.B. im Ordner E:\Delphi-Prgs\, der andere PC aber aus dem Ordner C:\Programme\ProgrammXYZ\ und dann wird die DB nicht gefunden.

Das mein ich damit :)
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mi 17.01.07 12:01 
Hä?

Ich mach das immer so:

ausblenden Delphi-Quelltext
1:
2:
3:
 pfad:= includetrailingpathdelimiter(extractfilepath(application.exename));
 //Datenbank
 db:= pfad + name_der_Datenbank;


und schon steht in DB der gesamte Pfad zu deiner DB
und in Pfad, der Pfad aus dem dein Anwendung ausgeführt wird

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
dlenz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 17.01.07 12:13 
ausblenden volle Höhe 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:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Mask, DBCtrls, DB, TdbLicense, TdbDataSet,
  Grids, DBGrids, Buttons;

type
    Tfrm_main = class(TForm)
    DBEdit1: TDBEdit;
    Image1: TImage;
    TdbTable1: TTdbTable;
    DataSource1: TDataSource;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DBNavigator1: TDBNavigator;
    DBEdit7: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    DBEdit10: TDBEdit;
    DBEdit11: TDBEdit;
    DBEdit12: TDBEdit;
    DBGrid1: TDBGrid;
    DBEdit13: TDBEdit;
    BitBtn1: TBitBtn;
    DBEdit14: TDBEdit;
    DBCheckBox1: TDBCheckBox;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  frm_main: Tfrm_main;

implementation

uses u_qr1;

{$R *.dfm}

procedure Tfrm_main.BitBtn1Click(Sender: TObject);
begin
 liste.TdbQuery1.SQL.Clear;
 liste.TdbQuery1.SQL.Add('SELECT * FROM antragsgegner WHERE ID =' + DBEdit1.Text);
 showmessage(liste.TdbQuery1.SQL.text);
 liste.TdbQuery1.Open;
 liste.preview;
end;

procedure Tfrm_main.FormCreate(Sender: TObject);
 var verz: string;
begin
 verz := ExtractFilePath(ParamStr(0))+'/db/';
 TdbTable1.Active := False;
 try
  TdbTable1.DatabaseName := verz;
  TdbTable1.TableName := 'db.tdbd';
  TdbTable1.Active := True;                   <--- Fehlermeldung im Code-Explorer
 except
  MessageBeep(0);
  ShowMessage('Die Tabelle db.tdbd befindet' + #10#13 +'sich nicht im angegebenen Verzeichnis!')
 end
end;

end.


wieso ist da ein fehler? *grübel
im OI habe ich die Eigenschaft "DatabaseName" leer gelassen.

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mi 17.01.07 12:19 
Wir überlegen mal:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
 ...
 verz := ExtractFilePath(ParamStr(0))+'/db/';
 ...
 TdbTable1.DatabaseName := verz;
 TdbTable1.TableName := 'db.tdbd';
 ...


So!

Was steht jetzt in verz?

Der Pfad, aus der deine Anwendung heraus ausgeführt wird.
Meintwegen C:\Programme\Test\.

Und was machst du?
Hängst noch ein Unterverzeichnis dran, was total OK ist.

Also ist verz dann -> C:\Programme\Test\db\

Und bei

ausblenden Delphi-Quelltext
1:
 TdbTable1.DatabaseName := verz;					


weist du dem Datenbanknamen das Verzeichnis zu, in der die DB liegt.
Was fehlt?
Der Dateiname deiner Datenbank.

Diesen weißt du bei

ausblenden Delphi-Quelltext
1:
TdbTable1.TableName := 'db.tdbd';					


zu.

Ist natürlich falsch.

'db.tdbd' gehört noch an dein Verzeichnis mit dran und gehört dem

ausblenden Delphi-Quelltext
1:
TdbTable1.Databasename:= verz + 'db.tdbd';					


zugewiesen.

Ich hoffe du hast es verstanden.

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.


Zuletzt bearbeitet von ZeitGeist87 am Mi 17.01.07 12:32, insgesamt 1-mal bearbeitet
dlenz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 17.01.07 12:22 
boahhh jau...
vielen Dank ZeitGeist! :)

stimmt, TableName ist ja nur die Tabelle in der Datenbankdatei... jetzt wo sies sagen, da merk ichs auch :)
wald vor lauter bäumen und so ;)
dlenz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 17.01.07 12:48 
Nun möchte ich die daten aus der DB-Tabelle über ein TdbQuery in einen Report übernehmen und eine Fehlermeldung sagt mir immer, dass er keine tabelle.dat findet, warum das nu wieder?
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mi 17.01.07 13:02 
Hast du deinem

ausblenden Delphi-Quelltext
1:
TdbTable1.TableName := Tabelle;					


den Tabellen-Namen zugewiesen?

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
dlenz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 17.01.07 13:35 
ja, den habe ich zugewiesen
dlenz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 17.01.07 14:58 
okay, so gehts jetzt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure Tfrm_main.BitBtn1Click(Sender: TObject);
 var verz : string;
begin
 verz := ExtractFilePath(ParamStr(0))+'db\db.tdbd';

 liste.TdbQuery1.Close;
 liste.TdbQuery1.DatabaseName := verz;

 liste.TdbQuery1.SQL.Clear;
 liste.TdbQuery1.SQL.Add('SELECT * FROM antragsgegner WHERE ID =' + DBEdit1.Text);

 showmessage(liste.TdbQuery1.SQL.text);

 liste.TdbQuery1.Open;

 liste.preview;
end;


danke nochmal an alle für die Mithilfe und vor allem an ZeitGeist! :)

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