Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   USER DIR bei ADO ConnectionString angeben? (https://www.delphipraxis.net/152960-user-dir-bei-ado-connectionstring-angeben.html)

Hallo_Thomas 14. Jul 2010 18:30

Datenbank: Access • Version: 2003 • Zugriff über: Ado

USER DIR bei ADO ConnectionString angeben?
 
Hallo, ich möchte mich auf einem Serveranmelden in einem bestimmten Verzeichnis. Wenn ich beim User den Verzeichnispfad kommt die
Fehlermeldung:
"Kein zulässiger Kontoname oder kein zulässiges Kennwort"

wenn ich das User-Verzeichniss weglasse kommt die Fehlermeldung:
"Die Informationsdatei für die Arbeitsgruppe fehlt oder ist exklusiv von einem anderen Benutzer geöffnet"

Bin ratlos? Was kann ich machen?

Code:
ConnectionString:=
'Provider=Microsoft.ACE.OLEDB.12.0;Password=dasPW;Persist Security Info=True;User ID=[User Dir]derUser;Initial Catalog=derDBName';
Delphi-Quellcode:
  Form1.ADOConnection1.ConnectionString:=Form1.Edit1.Text;
  ADOConnection1.Open;
  ADOTable1.Open;
  ADOTable1.Append;
  ADOTable1['Muster']:='5';
  ADOTable1.Post;
  ADOTable1.Close;;
  ADOConnection1.Close;

sx2008 15. Jul 2010 01:52

AW: USER DIR bei ADO ConnectionString angeben?
 
"Die Informationsdatei für die Arbeitsgruppe" ist das sog. Workgroup File in dem
Benutzer, Benutzergruppen, Passwörter und Rechte für die Tabellen und Views gespeichert sind.
Die Dateiendung ist .MDW
Um auf das workgroup file zu verweisen muss der Connectionstring so erweitert werden:
Code:
Jet OLEDB:System database=X:\pfad\xxx.mdw
Das gilt aber nur für Access 2000 bis 2007 und dessen Jet-Engine (mdb-Dateien).

Du verwendest aber den neueren OLE DB-Provider von dot NET.
Es gibt einen Trick, wie du den ConnectionString selbst herausfinden kannst.
Auf dem Desktop eine neue Txt-Datei erzeugen und die Endung auf .UDL ändern.
Dann doppelklicken - es öffnet sich ein Dialog, in dem du alle Verbindungsparamter eintragen kannst.
Wichtig: zuerst auf Seite Provider den passenden Eintrag wählen.
Ausserdem lässt kann man testen, ob die Verbindung erfolgreich ist.
Nach dem Speichern die Datei mit einem Unicode-fähigen Editor (z.B. Notepad) öffnen und schon sieht man den ConnectionString.

Hallo_Thomas 15. Jul 2010 13:39

AW: USER DIR bei ADO ConnectionString angeben?
 
Ok Danke, irgendwie habe ich hier ein Verständnsproblem. Ich erstelle die mdw, kann auch über diese zugreifen, sobald aber das Server-Verzeichnis(Der Datenbank) nur noch mit PW und User(andere Bezeichnung bzw ich habe sogar den gelichen User benannt) zu öffnen ist, crasht es. Ich habe die mdw ja frei zugäglich in einem öffentlichen Ordner, aber die Datenbank soll es nicht sein.
Wie Teile ich dem Server den User und das PW für das Verzeichnis der Datenbank mit?

Gruss Thomas

Fehlermeldung nun:
Fehler beim Testen der Verbindung durch einen Fehler beim Initialisieren des Providers. Das Microsoft Office Access-Datenbankmodul kann die Datei [Pfad Access Datenbank] nicht öffnen und nicht in die Datei schreiben. Sie ist bereits von einem anderen Benutzer exklusiv geöffnet, oder Sie benötigen eine Berechtigung, um die Daten anzeigen und schreiben zu können.

sx2008 21. Jul 2010 00:44

AW: USER DIR bei ADO ConnectionString angeben?
 
Datenbanken lassen sich in zwei Gruppen einteilen:
  • Desktop Datenbanken: nur für einen User und Prozess
  • richtige DBMS: Multiuser und Multiprozessfähig
MS Access ist eine Desktop-Datenbank.
Man kann nur mit einem Prozess venünftig damit arbeiten.
Die Datenbankdatei *.mdw muss auf der lokalen Platte liegen;
andernfalls kommt es zu einer starken Verschlechterung der Performance.
Nur bei Gigabit Ethernet bleibt die Leistung so einigermasen gleich wie auf der lokalen Platte.
Wenn zwei oder mehr Prozesse auf die gleiche MDB-Datei zugreifen, kommt es
zu Problemen, da sich die Prozesse gegenseitig nicht kennen.

Fazit:
für Multiuserzugriffe brauchst du eine andere Datenbank.
Wenn du auf den MS SQL Server 2005 oder 2008 Express Edition gehst,
dann muss in deiner Anwendung wahrscheinlich kaum etwas geändert werden
(ausser dem Connection String).

Bernhard Geyer 21. Jul 2010 07:36

AW: USER DIR bei ADO ConnectionString angeben?
 
Zitat:

Zitat von sx2008 (Beitrag 1036520)
Wenn du auf den MS SQL Server 2005 oder 2008 Express Edition gehst,
dann muss in deiner Anwendung wahrscheinlich kaum etwas geändert werden
(ausser dem Connection String).

Kommt darauf an wie intensiv mit "komplexen" SQL-Statements gearbeitet wird. Hier ist Access teilweise meilenweit von jedlicher Kompatiblität mit anderen DB entfernt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:25 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