![]() |
Datenbank: TurboDB • Version: 5.10 • Zugriff über: TdbTable, Datasource
ExtractFilePath(ParamStr(0)) für 4 Datenmodule anwenden
Hallo Liebe Delphi-Gemeinde!
Mein Programm arbeitet mit 4 Datenmodulen und 4 DB-Grids. Es funktioniert soweit auch alles. Das Ding ist jetzt, wenn man das Programm auf einem anderen PC ausführt, dann muss die Turbo-DB - .tdbd - Datei wie bei meinem PC im gleichen Pfad liegen (E:\db\...), das tut Sie aber meistens auf einem anderen System nicht. Bei einem einzigen Datenmodul hatt ich das bisher so gemacht:
Code:
jetzt ist mein Problem, dass ich ja 4 Datenmodule benutze. Jetzt hatte ich mir das mit meinem Freund, der FOR-Schleife, zu lösen und zwar ungefähr so:
procedure TForm1.FormCreate(Sender: TObject, Anzahl): integer;
var dbfrm: string; begin dbfrm := ExtractFilePath(ParamStr(0))+'db/db.tdbd'; FormCreate.TdbTable1.Active := False; try FormCreate.TdbTable1.DatabaseName := dbfrm; FormCreate.TdbTable1.TableName := 'pr'; FormCreate.TdbTable1.Active := True; except MessageBeep(0); ShowMessage('Die Tabelle db.tdbd befindet' + #10#13 +'sich nicht im angegebenen Verzeichnis!') end end;
Code:
jetzt sehe ich aber den Wald vor lauter Bäumen nicht mehr. Kann mir jemand helfen biddö... dangge.
procedure TForm1.FormCreate(Sender: TObject, Anzahl): integer;
var dbfrm: string; var Anzahl: integer; var i: integer; begin Anzahl:=4; for i:=1 to Anzahl do dbfrm := ExtractFilePath(ParamStr(0))+'db/db.tdbd'; FormCreate.TdbTable1.Active := False; try FormCreate.TdbTable1.DatabaseName := dbfrm; FormCreate.TdbTable1.TableName := 'pr'; FormCreate.TdbTable1.Active := True; except MessageBeep(0); ShowMessage('Die Tabelle db.tdbd befindet' + #10#13 +'sich nicht im angegebenen Verzeichnis!') end end; |
Re: ExtractFilePath(ParamStr(0)) für 4 Datenmodule anwenden
also
Delphi-Quellcode:
erzeugt 4 mal den gleichen Namen.
for i:=1 to Anzahl do
dbfrm := ExtractFilePath(ParamStr(0))+'db/db.tdbd'; Wo liegt denn Deine Datenbank nun? |
Re: ExtractFilePath(ParamStr(0)) für 4 Datenmodule anwenden
Zitat:
Deine Schleife macht ja viermal das Selbe ( selbes Modul) Ich würde das nicht in Form1 sondern in den jeweiligen Datenmodulen lösen. |
Re: ExtractFilePath(ParamStr(0)) für 4 Datenmodule anwenden
Hallo,
ich fürchte, dass da eine Begriffsverwirrung vorliegt. Vermutlich gibt es ein Datenmodul und vier Forms auf denen DBGrids liegen. Zumindest wäre das ein vernünftiger Ansatz. Der Pfad zur Turbo-Datenbank wird dann nur im Initialisierungscode des Datenmoduls bestimmt. Dort liegen auch die DataSet-Komponenten. Auf den Forms liegen nur die DataSource-Komponenten und die interessiert der Pfad nicht. Grüße vom marabu |
Re: ExtractFilePath(ParamStr(0)) für 4 Datenmodule anwenden
Zitat:
|
Re: ExtractFilePath(ParamStr(0)) für 4 Datenmodule anwenden
Ja, im .DataModuleCreate.
|
Re: ExtractFilePath(ParamStr(0)) für 4 Datenmodule anwenden
Zitat:
|
Re: ExtractFilePath(ParamStr(0)) für 4 Datenmodule anwenden
so, jetzt habe ich das wie folgt im 1. Datenmodul angewendet:
Delphi-Quellcode:
Compiliert auch ohne Fehler, nur die Daten werden im DB-Grid nicht angeziegt :wall:
unit u_dm1;
interface uses SysUtils, Classes, DB, TdbQuery, TdbDataSet, TdbLicense; type TDataModule1 = class(TDataModule) TdbTable1: TTdbTable; DataSource1: TDataSource; procedure DataModuleCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var DataModule1: TDataModule1; TdbTable1: TTdbTable; implementation {$R *.dfm} procedure TDataModule1.DataModuleCreate(Sender: TObject); var dbfrm: string; begin dbfrm := ExtractFilePath(ParamStr(0))+'db/db.tdbd'; self.TdbTable1.Active := False; self.TdbTable1.DatabaseName := dbfrm; self.TdbTable1.TableName := 'pr'; self.TdbTable1.Active := True; end; end. Hab ich noch was fundamentales vergessen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08: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-2025 by Thomas Breitkreuz