Entwickler-Ecke
Sonstiges (Delphi) - DB-Programm auf anderem PC ausführbar machen...
dlenz - Mi 17.01.07 11:01
Titel: DB-Programm auf anderem PC ausführbar machen...
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 - 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.
dlenz hat folgendes geschrieben: |
Wo muss ich denn "ExtractFilePath(ParamStr(0));" genau im Code anwenden? |
Für was denn?
dlenz - 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 - Mi 17.01.07 12:01
Hä?
Ich mach das immer so:
Delphi-Quelltext
1: 2: 3:
| pfad:= includetrailingpathdelimiter(extractfilepath(application.exename)); 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
dlenz - Mi 17.01.07 12:13
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 public 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
raziel: Code- durch Delphi-Tags ersetzt
ZeitGeist87 - Mi 17.01.07 12:19
Wir überlegen mal:
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
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
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
Delphi-Quelltext
1:
| TdbTable1.Databasename:= verz + 'db.tdbd'; |
zugewiesen.
Ich hoffe du hast es verstanden.
LG
Stefan
dlenz - 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 - 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 - Mi 17.01.07 13:02
Hast du deinem
Delphi-Quelltext
1:
| TdbTable1.TableName := Tabelle; |
den Tabellen-Namen zugewiesen?
LG
Stefan
dlenz - Mi 17.01.07 13:35
ja, den habe ich zugewiesen
dlenz - Mi 17.01.07 14:58
okay, so gehts jetzt:
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
raziel: Code- durch Delphi-Tags ersetzt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!