AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbankalias - Pfad der DBs muss dynamisch sein.
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankalias - Pfad der DBs muss dynamisch sein.

Ein Thema von LuckyStrike4life · begonnen am 4. Feb 2004 · letzter Beitrag vom 5. Feb 2004
Antwort Antwort
Seite 1 von 2  1 2      
LuckyStrike4life

Registriert seit: 22. Jul 2003
Ort: SN
105 Beiträge
 
Delphi 5 Enterprise
 
#1

Datenbankalias - Pfad der DBs muss dynamisch sein.

  Alt 4. Feb 2004, 09:09
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!!
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Datenbankalias - Pfad der DBs muss dynamisch sein.

  Alt 4. Feb 2004, 10:56
Zitat von LuckyStrike4life:
jetzt muss ich Aliasnamen für die DBs verwenden
Warum?

Zitat von LuckyStrike4life:
Das Programm ist soweit fertig, es gibt 7 DBs - alle sind immer mit der vollen Pfadangabe im Source aufgeführt
Das ist nicht nicht gut und sicher meinst du Tabellen.
Zitat von LuckyStrike4life:
Wenn ich mein Programm auf anderen Rechnern zum laufen bringen musste, dann hat es bisher gereicht die BDE auf dem Rechner zu installieren.
Das würde auch weiterhin reichen, wenn du den Pfad dynamisch und nicht wie jetzt statisch zuweist. Evt. reicht dir schon ein Ini-File zum ablegen des Pfades. Einmal beim ersten Start einen Opendialog angezeigt um dem User die Möglichkeit zu geben den Pfad zu wählen, wenn dann die Tables erfolgreich geöffnet werden konnten, legst du diesen Pfad in deinem Ini-File ab und bedienst dich beim nächsten Start wieder des selben Pfades. Das funktioniert natürlich auch mit einem BDE-Alias.

Zitat von LuckyStrike4life:
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.
Um das Zuweisen des Pfades, ob nun BDE oder bei der Table kommst du so oder so nicht umhin.
  Mit Zitat antworten Zitat
LuckyStrike4life

Registriert seit: 22. Jul 2003
Ort: SN
105 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Datenbankalias - Pfad der DBs muss dynamisch sein.

  Alt 4. Feb 2004, 11:03
Zitat von Memo:
Zitat von LuckyStrike4life:
jetzt muss ich Aliasnamen für die DBs verwenden
Warum?

Zitat von LuckyStrike4life:
Das Programm ist soweit fertig, es gibt 7 DBs - alle sind immer mit der vollen Pfadangabe im Source aufgeführt
Das ist nicht nicht gut und sicher meinst du Tabellen.
Wo siehst du jetzt den Unterschied zwischen Tabelle und Datenbank bei existierenden dBase Datein, welche als Datenbanken funktionieren?
Zitat von LuckyStrike4life:
Wenn ich mein Programm auf anderen Rechnern zum laufen bringen musste, dann hat es bisher gereicht die BDE auf dem Rechner zu installieren.
Das würde auch weiterhin reichen, wenn du den Pfad dynamisch und nicht wie jetzt statisch zuweist. Evt. reicht dir schon ein Ini-File zum ablegen des Pfades. Einmal beim ersten Start einen Opendialog angezeigt um dem User die Möglichkeit zu geben den Pfad zu wählen, wenn dann die Tables erfolgreich geöffnet werden konnten, legst du diesen Pfad in deinem Ini-File ab und bedienst dich beim nächsten Start wieder des selben Pfades. Das funktioniert natürlich auch mit einem BDE-Alias.
Okay, hört sich sehr gut an - nur wie muss ich da ran gehen. Das würde mein Problem schon gänzlich lösen.
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
Benutzerbild von BluesKid
BluesKid

Registriert seit: 2. Sep 2003
Ort: NRW
133 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Datenbankalias - Pfad der DBs muss dynamisch sein.

  Alt 4. Feb 2004, 11:16
moin

http://www.tutorials.delphi-source.de/ini/

oder

http://www.tutorials.delphi-source.de/registry/

mfg

Sam
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Datenbankalias - Pfad der DBs muss dynamisch sein.

  Alt 4. Feb 2004, 11:24
Zitat von LuckyStrike4life:
Okay, hört sich sehr gut an - nur wie muss ich da ran gehen. Das würde mein Problem schon gänzlich lösen.
Wenn du bei deinem bissherigen Weg bleiben möchtest, also Pfadzuweisung ohne BDE-Alias mach ich es immer so:

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;
  Mit Zitat antworten Zitat
LuckyStrike4life

Registriert seit: 22. Jul 2003
Ort: SN
105 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: Datenbankalias - Pfad der DBs muss dynamisch sein.

  Alt 4. Feb 2004, 15:15
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:
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';
[...]
Das ist nur n Beispiel, natürlich lasse ich später nicht den Pfad erst zur LZ von nem Editfeld abfragen.

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.
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: Datenbankalias - Pfad der DBs muss dynamisch sein.

  Alt 4. Feb 2004, 15:19
Mensch LuckyStrike...
Delphi-Quellcode:
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';
oder
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"
  Mit Zitat antworten Zitat
LuckyStrike4life

Registriert seit: 22. Jul 2003
Ort: SN
105 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: Datenbankalias - Pfad der DBs muss dynamisch sein.

  Alt 4. Feb 2004, 15:36
Zitat von GeorgeWNewbie:
Mensch LuckyStrike...
Delphi-Quellcode:
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';
oder
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"
hm... eigentlich müsste ich das wohl schreiben, ja.

Aber es steht in meiner Signatur auch nicht: "Ich kann doch wirklich alles".

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 ?

Edit:
Eigentlich müssten Strings kein Problem mit diesen Zeichen haben, aber warum sagt Delphi beim Ausführen der Funktion:
Zitat:
Ungültiges Schlüsselwort
Symbol-String:\ ?
Der Fehler tritt auch erst dann auf, wenn die Datenbankabfrage passiert, nicht wenn der Pfad in die iniDatei geschrieben oder ausgelesen wird, sondern tatsächlich erst ... sobald der Pfad aus der Variable verwendet werden soll. *denk*...
Es müsste "t:eDienstreisebuch\mainDB.dbf" eingesetzt werden
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: Datenbankalias - Pfad der DBs muss dynamisch sein.

  Alt 4. Feb 2004, 15:51
Zitat von LuckyStrike4life:
...nur erkennt String leider kein ':' und kein '\' an...
Was sagst du dazu...
Delphi-Quellcode:
  StringVar := ' \ :';
  ShowMessage(StringVar);

Wie wär's mit...
Delphi-Quellcode:
  ...
  Pfad := '"' + Pfad + '"';
  ...
Dann steht wieder "t:\DienstReiseBuch.dbf" (mit den Anführungszeichen) im SQL-Statement. (Auch wenn ich mich daran nie gewöhnen kann)
  Mit Zitat antworten Zitat
LuckyStrike4life

Registriert seit: 22. Jul 2003
Ort: SN
105 Beiträge
 
Delphi 5 Enterprise
 
#10

Re: Datenbankalias - Pfad der DBs muss dynamisch sein.

  Alt 4. Feb 2004, 16:03
Geht,
wie immer.
Danke dir und den Anderen.
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:23 Uhr.
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