![]() |
Datenbankalias - Pfad der DBs muss dynamisch sein.
Nun gut,
jetzt muss ich Aliasnamen für die DBs verwenden, leider hab ich das noch nie gemacht. Das Programm ist soweit fertig, es gibt 7 DBs - alle sind immer mit der vollen Pfadangabe im Source aufgeführt, was hier schon zu Diskussionen führte ;). Nun, ich hab keine Ahnung wie ich das machen soll - vermutlich muss ich hier und da was an der BDE umstellen. Wenn ich mein Programm auf anderen Rechnern zum laufen bringen musste, dann hat es bisher gereicht die BDE auf dem Rechner zu installieren. Es handelt sich um dBase Datenbanken, um die Frage zu klären warum es überhaupt mit den Pfadangaben im Source funktioniert. Das Programm wird in zwei Standorten genutzt, die DBs müssen jeweils hier und dort auf einen Server. Nun muss das ganze so klug ablaufen, dass ich später die Angabe des Pfades auf die Standorte anpassen kann, ohne das Programm im Source zu verändern. Help!! |
Re: Datenbankalias - Pfad der DBs muss dynamisch sein.
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Datenbankalias - Pfad der DBs muss dynamisch sein.
Zitat:
Zitat:
Okay, hört sich sehr gut an - nur wie muss ich da ran gehen. Das würde mein Problem schon gänzlich lösen. |
Re: Datenbankalias - Pfad der DBs muss dynamisch sein.
|
Re: Datenbankalias - Pfad der DBs muss dynamisch sein.
Zitat:
Programm startet, nachsehen ob mein Ini-File existiert, tut es das nicht gehe ich vom ersten Start aus und lasse einen Opendialog anzeigen. Ist dann ein Pfad gewählt weise ich diesen zu. Wenn die Verbindung geklappt hat und nur dann wird der Pfad im Ini-File gespeichert um beim nächsten Start wieder zur Verfügung zu stehen. Der Weg über einen existierenden BDE-Alias:
Code:
procedure TForm.aliaspfad(pfad : String);
var AParams : TStringList; begin AParams :=TStringList.Create; try AParams.Add('PATH=' + pfad); Session1.ConfigMode := cmAll; Session1.ModifyAlias('BDEALIASNAME',AParams); Session1.SaveConfigFile; Session1.Close; finally AParams.Free; end; |
Re: Datenbankalias - Pfad der DBs muss dynamisch sein.
Okay,
ich hab mich nun mit den INI-Datein beschäftigt. Ich lasse nun einen Pfad in eine Ini Datei schreiben, es ist auch alles kein Problem diesen abzufragen, aber dennoch bekomme ich den Pfad nicht in die SQL Anweisung, so das erkannt wird welchen Pfad ich meine. D.h. ich lasse aus der Ini den Wert auslesen, schreib mir das einfach in eine string Variable, aber den Wert der nun in der Variable steht, den kann ich nicht als Pfad nutzen. Mal n Beispiel:
Delphi-Quellcode:
Das ist nur n Beispiel, natürlich lasse ich später nicht den Pfad erst zur LZ von nem Editfeld abfragen.
procedure TForm1.Button2Click(Sender: TObject);
//--------------------------------------------------------- var IniDat: TIniFile; Pfad: string; begin IniDat := TIniFile.create('.\Adressen.ini'); inidat.WriteString('Pfad','MainDB', Edit1.text); iniDat.free; IniDat := TIniFile.create('.\Adressen.ini'); Pfad := IniDat.ReadString('Pfad','MainDB','' ); AliasEdit.text := Pfad; IniDat.free; //--------------------------------------------------------- Query2.Close; Query2.SQL.Clear; Query2.SQL.Text := 'SELECT *' + #10 + 'FROM Pfad' + #10 + // hier also die Variable Pfad, wird aber nicht als Adresse anerkannt.. 'WHERE Dienst_PKW = :iDienst_PKW AND' + #10 + ' Datum = :iDate'; [...] Pfad ist die Variable, die den Wert aus der Ini ließt - das klappt auch, denn ich laß mir den Wert mit dem AliasEditfeld anzeigen. Hm.. Ideen?? Edit: Um mich genauer auszudrücken, es ist mir nicht möglich die Variable "Pfad" als den Pfad der DBs anzugeben. Obwohl der richtige Pfad in der Variable steht. |
Re: Datenbankalias - Pfad der DBs muss dynamisch sein.
Mensch LuckyStrike...
Delphi-Quellcode:
oder
Query2.SQL.Text :=
'SELECT *' + #10 + 'FROM ' + Pfad + #10 + // Wie bekommst du einen Wert in einen String?!? 'WHERE Dienst_PKW = :iDienst_PKW AND' + #10 + ' Datum = :iDate';
Delphi-Quellcode:
Query2.SQL.Text :=
Format( 'SELECT *' + #10 + 'FROM %s' + #10 + // Wie bekommst du einen Wert in einen String?!? 'WHERE Dienst_PKW = :iDienst_PKW AND' + #10 + ' Datum = :iDate' ,[Pfad]); p.s.: in die About-Box deiner App kommt doch bestimmt "© Delphi-PRAXIS" :zwinker: |
Re: Datenbankalias - Pfad der DBs muss dynamisch sein.
Zitat:
Aber es steht in meiner Signatur auch nicht: "Ich kann doch wirklich alles". :wink: Nun gut, dass was du gesagt hast geht natürlich, nur erkennt String leider kein ':' und kein '\' an, aber für Pfadangaben ist das unumgänglich... F**K! Was mach ich denn da :gruebel: ? Edit: Eigentlich müssten Strings kein Problem mit diesen Zeichen haben, aber warum sagt Delphi beim Ausführen der Funktion: Zitat:
Es müsste "t:eDienstreisebuch\mainDB.dbf" eingesetzt werden |
Re: Datenbankalias - Pfad der DBs muss dynamisch sein.
Zitat:
Delphi-Quellcode:
StringVar := ' \ :';
ShowMessage(StringVar); Wie wär's mit...
Delphi-Quellcode:
Dann steht wieder "t:\DienstReiseBuch.dbf" (mit den Anführungszeichen) im SQL-Statement. (Auch wenn ich mich daran nie gewöhnen kann)
...
Pfad := '"' + Pfad + '"'; ... |
Re: Datenbankalias - Pfad der DBs muss dynamisch sein.
Geht,
wie immer. Danke dir und den Anderen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 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 by Thomas Breitkreuz