![]() |
Kompatibilität
hi leute!
ich hab da ein progamm, dass mit einer ADOConnection und ADODataSet komponente mit einer mdb(acces-Datenbank) arbeitet.. naja ich hab bei meinem programm es so eingestellt, dass er meine ADO-DSN in die Registry schreibt/liest(natürlich sind Hauptprogramm und Datanbank-Datei im selben Ordner), damit es beim öffnen des Programms keine Probleme gibt. Also beim starten des Programms liest er die DSN vom der Registry und beim schließen schreibt er in die Registry die DSN... Nur das Problem ist, als ich das Programm anderen Leuten geben wollte und die das dann installiert haben, dann wollte das progamm nicht starten, alles was man dann sehen konnte ist der Splashscreen des programms und als der splashscreen dann verschwand kam nix mehr. Doch warum gehts denn bei mir, ich hab auch oft bei mir installiert und es läuft einwandfrei. ich hab denn mal recherchiert und hab gesehen, dass beim Registry-Eintrag beim "Wert" also da wo die DSN eigentlich stehen sollte, auf einmal nix mehr steht...sehr seltsam kann mir jemand vielleicht helfen? ich probiers schon seit tagen aber das Resultat ist immer das selbe... danke MfG LkZ! |
Re: Kompatibilität
Es sind noch ein paar Fragen offen:
1, Wird in der DNS der komplette Pfad angegeben bzw. dieser dynamisch ergänzt. Falls nicht, so kann dies ein Problem darstellen, da ohne Pfadangabe immer der aktuelle Pfad zu suche genommen wird und dieser nicht immer der Anwendungspfad ist 2, Wo wird in die Registry geschrieben? Hoffentlich unter HKEY_CURRENT_USER. Unter HKEY_LOCAL_SYSTEM benötigt man Admin-Rechte für den schreibzugriff. Falls diese Tipps nichts helfen, solltest Du noch etwas Code posten, was bei deiner Programminitialisierung passiert. |
Re: Kompatibilität
Ein paar zusätzliche Infos wären nicht schlecht.
- schreibst den registry key mit dem connectionstring wärend des setups un die registry oder machst du das, wie ich es vermute, im onCreate deiner Mainform ? Wenn das so ist, schau dir mal an wir ich das gemacht habe ... //TAdoConnection.WillConnect(...);
Delphi-Quellcode:
[edit=Christian Seehase]Code-Tags durch Delphi-Tags ersetzt. Mfg, Christian Seehase[/edit]
Procedure TData.connWillConnect(Connection: TADOConnection;
var ConnectionString, UserID, Password: WideString; var ConnectOptions: TConnectOption; var EventStatus: TEventStatus); var reg:tregistry; begin reg:=Tregistry.Create; try try reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('\Software\ESS\DaxoKal',true); if reg.ValueExists('DBDir') then DataPath:=reg.ReadString('DBDir') else Datapath:=Programmpfad; if reg.ValueExists('altDBDir') then altDataPath:=reg.ReadString('altDBDir') else altDatapath:=Programmpfad; finally reg.Free; end; except end; if Fileexists(Datapath+'\data.mdb') then begin if connectionstring<>DataPath+'\data.mdb' then Connectionstring:=DataPath+'\data.mdb'; main.DBLabel.Caption:='Datenbank: '+Connectionstring; end else begin if Fileexists(altDatapath+'\data.mdb') then begin if connectionstring<>altDataPath+'\data.mdb' then Connectionstring:=altDataPath+'\data.mdb'; main.DBLabel.Caption:='Datenbank: '+Connectionstring; end else begin Showmessage('DaxoKal konnte keine Verbindung zu der Primären und Alternativen Datenbank herstellen.'+#13#10+ 'Bitte Überprüfen Sie Ihre Installation und die Zugriffsrechte auf die Datenbankverzeichnisse.'+#13#10+ 'Primäre Datenbank : '+Datapath+'\data.mdb'+#13#10+ 'Alternative Datenbank : '+altDatapath+'\data.mdb' ); Abort; end; end; end; |
Re: Kompatibilität
Hallo jensw,
du solltest Dein Registry-Key von HKEY_LOCAL_MACHINE nach HKEY_CURRENT_USER verschieben. In Zeiten von Täglich zig-Neuen Viren und Würmern sollte kein (unbedarfter) User mehr mit Admin-Rechten seinen Rechner im Normalfall betreiben. Und als Nicht-Admin hast du in der Regel keinen Schreibzugriff auf HKEY_LOCAL_MACHINE. |
Re: Kompatibilität
Ja Ok das mit dem HKEY_CURRENT_USER hab ich jetzt geämdert...
zu 1. das mit der DSN: er sollte eigentlich den ganzen connenctionstring in die Registry schreiben, was er ja nicht tut. Mein ConnectionString ist: "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Projekts\CHEMIE_datenbank\Data.mdb;Mode= ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password=offbyte;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=True;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=True;Jet OLEDB:SFP=False" naja gut weiss jetzt nicht, ob dir das hilft aber naja.. MfG |
Re: Kompatibilität
Zitat:
|
Re: Kompatibilität
@Bernhard Geyer
Du hast "für den Normalfall" Recht. Aber in diesem Fall mache ich es gerade weil die User keine Adminrechte haben und somit die Werte nicht verändern können. Die Datenbankverzeichnisse (DBDir - normales Datenbankverzeichnis auf dem Server, AltDBDir - ein alternatives Datenbankverzeichnis, z.B. in c:\programme\irgendwas für Notebook Nutzer) werden während der Installation, bei der man ohnehin Adminrechte benötigt, geschrieben. Die Pfade kann man aus dem Programm heraus Ändern, wenn man lokale Adminrechte hat, normale User dürfen das halt nicht ... :wall: Habe gerade gesehen, dass das nicht der aktuelle Code war. Die Änderung ist da noch nicht drin ...
Code:
:hi:
reg.OpenKeyReanOnly('\Software\ESS\DaxoKal');
|
Re: Kompatibilität
Ja weiss nicht...was ist denn jetzt die lösung des problems? bin jetzt total konfuss..
|
Re: Kompatibilität
@LkZ
Zitat:
Wenn du den gesammten Connectionstring speichern willst, dann musst du im TAdoConnection.WillConnect prüfen, ob die data.mdb die im CS angegeben ist, auch wirklich im dem Pfad steht, und falls nicht, den CS ggf. abändern ... " ExtractfilePath(application.Exename)+'\Data.mdb' " Warum willst du das überhaupt in die Registry schreiben und dann wieder laden ? :gruebel: gib doch einfach im TAdoConnection.Willconnect (...) folgendes ein Connectionstring:=ExtractfilePath(application.Exen ame)+'\Data.mdb' ; Das passt immer :cyclops: |
Re: Kompatibilität
dankE! Hat echt geholfen!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:15 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