Entwickler-Ecke

Datenbanken - Alias-Adresse für meine Access-DB!


m-werk - Mo 24.06.02 22:55
Titel: Alias-Adresse für meine Access-DB!
Hi Leute, Ich habe mit einer Access-DB ein programm erstellt.
Zugriff auf die Access-DB habe ich so: C:\Arius\Datenbank\Dantenbankname.mdb

Nun habe ich eine Setup-Datei von meinem Programm erstellt und als Pfad für die Datenbank habe ich in Setup 'Programme' -> 'Arius' ->'Datenbank' angegeben.

Nun habe ich mein Setup getestet und es will mir aber jetzt wieder auf C:\Arius\Datenbank\.....mdb zugreifen.

Wie kann ich so eine Art Alias-Adresse machen, damit das auch funktioniert?


Torsten - Mo 24.06.02 23:08

Moinsen!

Leg doch die DB in das Verzeichnis (oder Unterverzeichnis) des Programms. Somit brauchst keine absoluten Pfadangaben. Hier reichen dann relative Angaben.

Grüße

Torsten


m-werk - Mo 24.06.02 23:13

Hi, das habe ich mir auch schon überlegt, aber was ist, wenn der User ein anderes Installationsverzeichnis wählt?
Dann habe ich wieder das problem.


Torsten - Mo 24.06.02 23:14

Naja, wenn Du die DB mitlieferst (in der Installationsroutine integriert) eben nicht, da die relative Angabe bleibt.

Grüße

Torsten


m-werk - Mo 24.06.02 23:16

Und was heist das genau? Könntest du mir das erklären und beschreiben, wie ich das mache?

Ich verwende den InsallSheld von Delphi 6


Torsten - Mo 24.06.02 23:22

OK, dann mal los.

Du greifst als auf die DB mittels relativer Pfadangabe zu.
Einfaches Beispiel:

Quelltext
1:
LoadDB('meine_DB.mdb');                    

oder

Quelltext
1:
LoadDB('/verzeichnis/meine_DB.mdb');                    


Es handelt sich um relative Angaben.

Wenn Du nun Deine Anwendung samt DB weitergibst, dann ändert sich zwar eventuell das Installations-Verzeichnis, nicht jedoch die relative Angabe.
Du musst nur sicherstellen, dass in Deinem Setup-Programm die DB auch an die richtige Stelle kopiert wird.
Also beispielsweise in das gleiche Verzeichnis, wie die Anwendung ansich (siehe: LoadDB('meine_DB.mdb')) oder eben in ein Unterverzeichnis (siehe: LoadDB('/verzeichnis/meine_DB.mdb')).

Damit ist sicher gestellt, dass die relative Angabe weiterhin gilt.

Grüße

Torsten


Torsten - Mo 24.06.02 23:24

Ach ja, bei InstallShield musst Du lediglich angeben, welche Dateien zusätzlich eingebunden werden. Bei Dir also die DB.
Eventuell musst Du noch angeben, wohin die DB kopiert werden soll. Das Prinzip ist aber gleich (wie beschrieben).

Grüße

Torsten


m-werk - Mo 24.06.02 23:31

Tja, das ist relativ einleuchtend.

Ich habe es bei mir so gemacht:

Ich habe ein DataModul erstellt (DM) dort habe ich alles was ich so brauche (ADO) drinn.

Die ADOConnection habe ich auch da drinn.
Bei der ADOConnection habe ich im ConnectionString folgenden Code drin:

Quelltext
1:
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Arius\Datenbank\Kundendaten.mdb;Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password=qx99;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False                    


Der ist etwas lang. Dieser wurde auch automatisch erstellt.
So habe ich ihn erstellt:

Ich bin bei der ConnectionString auf Aufbauen gegangen. Dann habe ich unter Punkt 1 den Ordner ausgewählt: C:\Arius\Datenbank\...mdb
Beim Provider habe ich 'Microsoft Jet 4.0 OLE DB Provider ausgewählt.

So war meine Vorgehensweise. Da ich mit dem Programmieren nicht so gewant bin, war dies die einfachste lösung.

Hast du eine bessere?


Torsten - Mo 24.06.02 23:38

Sorry, mit ADO habe ich es nicht so.
Scheint aber einleuchtend.

Versuche doch mal bei DataSource eine relative Pfadangabe einzugeben.
Testen sollte kein Problem sein. Du brauchst ja einfach nur den übergeordneten Ordner der Anwenung ändern. (hat ja keine Einwirkung auf die relative Pfadangabe).

Grüße

Torsten


Klabautermann - Mo 24.06.02 23:45

Hi,

mit Relativen Pfadangaben wirst du nicht weit kommen. Du must den Pfad schon absolut angeben, du kannst ihn aber zur Laufzeit ermitteln.
Je nach ADO Komponente könnte das so aussehen:

Quelltext
1:
2:
3:
4:
ADOConection.ConectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=' + 
  ExtractFilePath(Application.ExeName) + 
  'Datenverzeichnis\Kundendaten.mdb;Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password=qx99;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
ADOConection.IsConnected := TRUE;

Deine datenbank mus dann vom EXE-Verzeichnis aus gesehen im Unterverzeichnis Datenverzeichnis liegen.

Gruß
Klabautermann


Torsten - Mo 24.06.02 23:47

Ja, wunderbar.
Mit Application.ExeName funktioniert es freilich wunderbar.
Somit hat man die absolute Pfadangabe elegant umgangen.
Wieso bin ich da nicht gleich drauf gekommen.

;)

Grüße

Torsten


Klabautermann - Di 25.06.02 00:06

@m-werk:
Solltest du dem user die Freiheit lassen wollen das Datenbankverzeichnis unabhängig vom Programmverzeichnis wählen zu lassen, dann must du vom Installationsprogramm eine INI-Datei in deinem Programmverzeichnis anlegen lassen. In diese lässt du dann schreiben wo das Datenbankverzeichnis ist. Alternativ kannst du dein Setup Programm auch veranlassen den Pfad in die Regestry zu schreiben.
Beides sollte mit einem vernümpftigen Setup-Maker ohne größere Schwierigkeiten machbar sein.

Gruß
Klabautermann


m-werk - Di 25.06.02 08:07

Danke Leute, das von Klabautermann werde ich heute mal ausprobieren. Scheint recht einleuchtend zu sein.

@Klabautermann :
Das mit einer INI ist eine sehr sehr gute Idee. Leider hab ich nicht den geringsten schimmer wie soetwas aussehen kann und wie man das macht.

Ich verwende den Install Sheld Express von Delphi 6.
Kann man das mit diesem auch machen? Wenn ja, wie geht das dann?


Klabautermann - Di 25.06.02 10:49

Hallo,

ich denke schon, das IS-Express das kann. Ich selber verwende aber Inno Setup [http://www.jrsoftware.org/isinfo.php] wo ich mal was entsprechdes in der Hilfe gelesen habe. Genutzt habe ich die funktionalität auch dort nicht (für meine Privaten Programme beschränken sich die ansprücher ans setup auf Kopieren und Links erstellen).

Ich halte soetwas aber für standartfinktionalität solcher Programme.

Gruß
Klabautermann


Klabautermann - Di 25.06.02 11:08

Nachtrag:
Ich habe grade noch einmal in die OH von Inno-Setup geschaut. Im Setuo Script gibt es ein e Section [INI] in der ini-eiträge angelegt werden können.

Dieses Beispiel aus der Hilfe schreibt z.B. der Pfad des EXE-Verzeichnisses in eine INI-Datei die sich im Windows Verzeichnis befindet:


Quelltext
1:
2:
[INI] 
Filename: "{win}\MYPROG.INI"; Section: "InstallSettings"; Key: "InstallPath"; String: "{app}"


Das ließe sich leicht auf dein Problem anpassen. Aber wahrscheinlich ist es im Install Schield auch nicht schwerer.

Gruß
Klabautermann


m-werk - Di 25.06.02 11:19

Hi, danke sehr, ich werd mich mal im Install Sheld umsehen. Vielleicht klapt es ja. Ansonsten werde ich den code von oben nehmen (connectionsting).


Klabautermann - Di 25.06.02 11:50

m-werk hat folgendes geschrieben:
Vielleicht klapt es ja. Ansonsten werde ich den code von oben nehmen (connectionsting).


In ähnlicher Form wirst du den String sowiso verwenden müssen. Nur das du anstelle des ExtractFilePath den Pfad aus deiner INI verwenden musst.

Gruß
Klabautermann


m-werk - Mi 26.06.02 21:31

Hi, so jetzt wollte ich den code für die connetionstring einbauen aber jetzt weis ich nicht, wo ich ihn genau hinsetzen soll bzw. wie das dann aussieht. Ich habe direkt im Objektinspektor bei der ConnectionString den code geändert auf ..... + ExtractFilePath(Application.ExeName) +...........
aber das hat nicht funktioniert. Er hat mir den Link so genannt, wie ich ihn eingegeben habe, und hat die DB nicht gefunden.

Ich möchte dass jetzt mit einer INI-Datei machen.
Könnt Ihr mir bitte eine genaue beschreibung von A-Z geben, wie ich das mit der INI-Datei lösen kann?


Klabautermann - Mi 26.06.02 22:33

Hallo,
im Object Inspector wird das nicht klappen.
Du musst das irgendwo in deinem Programm stehen haben. Eine möglichkeit währe das OnCreate Ereigniss des Modules auf dem die Connection Komponente liegt.

Wenn du probleme damit hast, sage noch mal bescheid. In der Online Hilfe findest du aber informationen zu tIniFile dir dir das ermöglichen sollten.

Gruß
Klabautermann


m-werk - Fr 28.06.02 20:36

Hi, ich hab schon was gefunden, nur klapt das bei mir nicht.

Wenn ich das DataModul (DM) öffne, wo die Connection drinn ist, dann könnte ich mit der rechten Maustaste auf 'Ansicht als Text' gehen, wo ich dass dann änden könnte, nur kommt eine Inofmeldung wenn ich das mache

Modul 'C:\Arius\DM1.pas' hat offene Nachfahren oder verknüpfte Module. Kann nicht Schließen

Und dann bin ich wieder am alten Bildschirm. Ich komm in den Texteditor nicht rein.

Kannst du mir jetzt bitte helfen, es geht einfach nicht


Klabautermann - Fr 28.06.02 21:06

Hallo noch mal,

du kannst das ganze nicht zur Designzeit machen. Du musst zu Laufzeit ermitteln wo deine Datenbank liegt (aus der Ini-Datei) dann den Connection String erzeugen und deine Connection öffnen. Danach kannst du die Tabellen und Querys öffenen.
Verbindungen zur designzeit aufzubauen ist sowiso schlechter Stiel. Das solltest du höchstens mal machen um kurz was zu testen.

Das ganze könnte inetwa so aussehen:

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:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DDB, DTables, DMaster, inifiles;

type
  TDataModule2 = class(TDataModule)
    DMaster1: TDMaster;
    DTable1: TDTable;
    procedure DataModuleCreate(Sender: TObject);
  private
    DBIni : tIniFile;
  public
    { Public-Deklarationen }
  end;

var
  DataModule2: TDataModule2;

implementation

{$R *.DFM}

procedure TDataModule2.DataModuleCreate(Sender: TObject);
begin
  DBIni := tIniFile.Create(ExtractFilePath(ParamStr(0))+ 'Datenbank.ini');
  DMaster1.Connection := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=' +
                         DBIni.ReadString('Pfade', 'DBPath', ExtractFilePath(ParamStr(0))) +
                         'Kundendaten.mdb;Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password=qx99;'+
                         'Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;' +
                         'Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don''t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
 DMaster1.Connected := TRUE;
 DTable1.Open;
end; // DataModule Create
[...]


Gruß
Klabautermann


m-werk - Fr 28.06.02 21:23

So sieht jetzt mein code aus:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  DBIni := tIniFile.Create(ExtractFilePath(ParamStr(0))+ 'Arisys.ini');
  ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=' +
                          DBIni.ReadString('Pfade', 'DBPath', ExtractFilePath(ParamStr(0))) +
                         'Kundendaten.mdb;Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password=qx99;'+ 
                         'Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;' + 
                         'Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don''t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
ADOConnection1.Connected := TRUE;
  DM.ADOSHaupt.Open;


Muß ich jetzt in die connectionString im Objektinspektor noch was eintragen oder überhautp was drinnstehen haben?
Und was trage ich in die INI-Datei ein bzw. wie wird der Datenbankpfad eingetragen?

Wenn ich jetzt mein Programm Starte, kommt folgende Meldung:

Der Vorgang ist für ein geöffnetes Objekt nicht zugelassen.

Dann öffnet sich das Hauptformular aber es ist leer.

PS: In der INI habe ich nichts stehen!


Klabautermann - Sa 29.06.02 00:33

Hallo,

Fangen wir mal von hinten an:
m-werk hat folgendes geschrieben:
Der Vorgang ist für ein geöffnetes Objekt nicht zugelassen.

Das liegt wahrscheinlich daran, das du im Objektinspector noch "Connected = TRUE" beim ADOConnection1-Object hast. Damit ist der Connection String quasi schreibgeschützt.

m-werk hat folgendes geschrieben:
Muß ich jetzt in die connectionString im Objektinspektor noch was eintragen oder überhautp was drinnstehen haben?


Nein, es ist völlig Egal was da drin steht, da du diesen ja zur Laufzeit überschreibst. Alles was du im Objektinspektor einstellst gild wenn dein Programm startet und nur so lange bis du es im Programm änderst. Grundsätzlich kannst du alles was du im Objektinspektor einstellen kannst auch zur Laufzeit über deinen Programmcode ändern.
Wenn das Objekt ADOConnection1 im Objektinspektor eine Eigenschaft ConnectionString besitzt dann kannst du diese in deinem Programm über ADOConnection1.ConnectionString ändern.

m-werk hat folgendes geschrieben:
Und was trage ich in die INI-Datei ein bzw. wie wird der Datenbankpfad eingetragen?

Wie in früheren Postings beschrieben musst du dein Setup Programm dazu bringen die INI-Datei anzulegen und in diese den Eintrag zu machen. Nur dein Setup Programm weiß wohin der Benutzer die Datenbank installiert. Wie das mit Inno-Setup funktioniert habe ich hier schon beschrieben und mit anderen Setup-Programmen kenne ich mich überhaupt nicht aus.

Gruß
Klabautermann


m-werk - Sa 29.06.02 21:51

Hi, ich höre immer nur INNO-SETUP. Ich habe das Inno-Setup zwar auf meinem System, aber das ist für mich sehr schwierig, da ich gesehen habe, dass man das ganze Setup selbst kreieren muß. Oder täusche ich mich da?.

Wenn dass so sein sollte, kann mir mit Inno-Setup jemand helfen?


Klabautermann - So 30.06.02 00:56

Hallo,

m-werk hat folgendes geschrieben:
Hi, ich höre immer nur INNO-SETUP. Ich habe das Inno-Setup

ich verwende nun mal nur Inno-Setup, daher kann ich auch nur davon sprechen.


m-werk hat folgendes geschrieben:
zwar auf meinem System, aber das ist für mich sehr schwierig, da ich gesehen habe, dass man das ganze Setup selbst kreieren muß. Oder täusche ich mich da?.

Was verstehst du unter "das ganze Setup kreieren"?
Fakt ist, Inno-Setup arbeitet Script basiert. Du hast also einen Quelltext, des sehr an eine INI-Datei erinnert und kannst so dein Setupprogramm gestalten.
Ich kann nicht behaupten das die Scriptsprache besonders schwer ist und das Basissetup kannst du von einem Assistenten erstellen lassen, danach nimmst du nur noch die nötigen erweiterungen vor.
Wenn du auf dieses System umsteigen willst helfe ich dir gerne dabei aber das sollten wir dann lieber per Personal Message weiterführen, da es nicht ins Delphi-Forum gehört.

Gruß
Klabautermann


m-werk - So 30.06.02 19:46

Hi, das wäre sehr nett von dir, wenn du mir da weiterhelfen würdest. Wie meinst du das mit 'Personal Message'. Hätte nichts dagegen.


Klabautermann - So 30.06.02 20:06

Das erkläre ich dir in der pm die grade geschrieben habe ;).

Gruß
Klabautermann


m-werk - Di 09.07.02 16:53

Hi, so leute, ich bitte jetzt um eure hilfe.

Ich kann einen Wert aus der Registry herauslesen.
Wie kann ich jetzt aber, den wert bzw. den Ordner in die Connection-String so inkludieren, dass mein programm auf die Datenbank zugreift?


Quelltext
1:
2:
3:
4:
ADOConection.ConectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=' + 
  ExtractFilePath(Application.ExeName) + 
  'Datenbank\Kundendaten.mdb;Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password=qx99;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False'; 
ADOConection.IsConnected := TRUE;


So sieht meine connection-String aus.

In der Registry habe ich unter \Software\Arius\Settings den String: DBPath, und darunter ist der aktuelle Path der Datenbank. Ich möchte dies jetzt in die ConnectionString einbauen, nur wie?


Klabautermann - Di 09.07.02 17:09

Hallo,

setze einfach anstelle von ExtractFilePath(Application.ExeName) deinen aus der Regestry gelesenen String ein.

Gruß
Klabautermann


m-werk - Do 11.07.02 16:36

Hi, und wie? Ich hab mir mal nen Code zusammengeschnipselt:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure ..............(Sender: TObject);
var
path: String;
begin
  REG := TRegistry.Create;
  try
    try
      REG.RootKey := HKEY_CURRENT_USER;
      if REG.OpenKey('\Software\Arius\Settings', True) then
      begin
        if REG.ValueExists('DBPath') then a:=StrToInt(REG.ReadString('DBPath'))
        else a := 0;
        REG.CloseKey;
      end;
    except
       a := 0;
    end;
          end;
        end;
      end;
end;


Kann ich so die registry auslesen?
(hab leider meine Beschreibung für die Registry verlooren!)

Was setzte ich dann anstelle von "ExtractFilePath(Application.ExeName)" ein?

Und muß ich den Registry-Code in die Gleiche Procedure wie die Connection-String setzen?


Klabautermann - Do 11.07.02 16:52

Hallo,

m-werk hat folgendes geschrieben:

Quelltext
1:
2:
3:
[...]
        if REG.ValueExists('DBPath') then a:=StrToInt(REG.ReadString('DBPath'))
[...]


Erkläre mir doch bitte mal diese Logik? Path ist ein Sting der so aussieht: 'C:\XXX\Datenbank\MyDate.mdb'. Was willst du da in eine Zahl umwandeln?

Der Connection String muss so aufgebaut werden:

Quelltext
1:
2:
3:
ADOConection.ConectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=' + 
 REG.ReadString('DBPath') + 
 'Datenbank\Kundendaten.mdb;Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password=qx99;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';


Natürlich mus das ganze drumherum bestehen bleiben.

Gruß
Klabautermann


m-werk - Do 11.07.02 16:59

Hi, UPS, da hab ich mich vertan, ich hab diesen code aus meinem Programm wo ich es mit Zahlen brauche.

Ich hab jetzt folgenden Code drin:


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:
procedure TDM.DataModuleCreate(Sender: TObject);
var REG:TRegistry;
    a:string;
begin
REG:=Tregistry.create;
  try
    REG.RootKey := HKEY_CURRENT_USER;
    if REG.OpenKey('Software\Arius\SettingsDB', True) then
      begin
        a:=REG.ReadString('DBPath');
      end;
  finally
    REG.CloseKey;
    REG.Free;
    inherited;
  end;

  ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=' +
                          REG.ReadString('DBPath') + 'Kundendaten.mdb;Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password=qx99;'+
                         'Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;' +
                         'Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don''t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
  ADOConnection1.Connected := TRUE;
  DM.ADOSHaupt.Open; DM.ADOSKinder.Open; DM.ADOSGeschaeft.Open; DM.ADOSFinanzierung.Open;
  DM.ADOSHaushalt.Open; DM.ADOSAnlageprofiel.Open; DM.ADOSEmpfehlung.Open; DM.ADODataSet1.Open;
  DM.ADODataSet2.Open;
end;


Wenn ich jetzt das Programm installiere, und ich die Datenbank auf 'E:\Datenbank\Kundenverwaltung.mdb' speichere und dann das Programm Starte, kommt folgende Meldung:

Datei 'C:\Dokumente und Einstellungen\Steinkellner\Desktop\Kundendaten.mdb' nicht gefunden.

Warum fragt mich jetzt das Programm danach?
Ich hab doch bei der connectionstring 'REG.Readstring('DBPath') eingegeben.
PS. Ich arbeite auf Windows XP, aber dass ist sicherlich nicht der grund!


m-werk - Sa 13.07.02 19:16

Hi, hat niemand eine Idee, was da falsch sein kann (siehe beitrag oben)