Discussion:
Access-Datenbank weitergeben
(zu alt für eine Antwort)
Micha
2005-04-29 17:20:08 UTC
Permalink
Hallo zusammen

Als blutiger Anfänger habe ich folgendes Problem:

Ich habe in Visual Basic.net eine Anwendung geschrieben, die auf eine
Access-Datenbank zugreift.

Auf meinem Entwicklungsrechner funktioniert alles einwandfrei.

Wenn ich die Anwendung aber auf einen anderen Rechner installiere kommt beim
Start des Programms folgende Fehlermeldung:
"C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studios
Projects\DruKo\data.mdb" ist kein zulässiger Pfad. Stellen Sie sicher, dass
der Pfad richtig eingegeben wurde und dass Sie mit dem Server, auf dem sich
diese Datei befindet, verbunden sind.

Vermutlich liegt es daran wie man die Access-Datenbank mit weitergibt.
Aber Ich habe keine Ahnung wie ich das machen soll.

Kann mir da vielleicht jemand weiterhelfen???
Elmar Boye
2005-04-29 20:16:47 UTC
Permalink
Hallo Micha,
Post by Micha
Ich habe in Visual Basic.net eine Anwendung geschrieben, die auf eine
Access-Datenbank zugreift.
Auf meinem Entwicklungsrechner funktioniert alles einwandfrei.
Wenn ich die Anwendung aber auf einen anderen Rechner installiere
"C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual
Studios Projects\DruKo\data.mdb" ist kein zulässiger Pfad. Stellen
Sie sicher, dass der Pfad richtig eingegeben wurde und dass Sie mit
dem Server, auf dem sich diese Datei befindet, verbunden sind.
Vermutlich liegt es daran wie man die Access-Datenbank mit weitergibt.
Aber Ich habe keine Ahnung wie ich das machen soll.
Das hängt von den Ansprüchen ab.
Zunächst sollte eine gemeinsam genutzte Datenbank nicht gerade in
einem privaten Verzeichnis eines Benutzers (bei Dir Administrator) liegen.
Das beschwört Rechteprobleme herauf.
Ein gemeinsames (Netzwerk)-Verzeichnis ist da besser.
Ist sie je Benutzer privat wäre Application.UserAppDataPath eine Alternative,
ansonsten lokal auf dem Rechner Application.CommonAppDataPath.

Dann kommt es darauf an, ob Du eine neue Datenbank erstellen willst
oder Dich nur mit einer bestehenden verbinden. Wenn Du immer fest auf
eine Datenbank zugreifen willst, so solltest Du die Verbindungszeichen in einer
App.Config hinterlegen. Z. B:
http://www.google.de/groups?hl=de&lr=&selm=2shmprF1k5snnU1%40uni-berlin.de

Solls dynamisch erfolgen, ginge ein Verbindungsdialog ginge wie in
http://www.google.de/groups?hl=de&threadm=O0YqsMPsEHA.3336%40tk2msftngp13.phx.gbl
beschrieben (ist C# sollte aber nicht allzu schwierig in VB.NET umzuschreiben sein).
Und wenn Du den Provider auf "Microsoft.Jet.OLEDB.4.0" voreinstellst
so kann der Benutzer direkt die Datenbank-Datei auswählen.

Wenn Du eine neue Datenbank als Vorlage mitgeben willst, so könntest Du sie
als Resource ins Programm einbinden und bei Bedarf daraus installieren.
Oder aber in ein .NET Setup Projekt einbinden und dabei in ein gemeinsames
Verzeichnis kopieren. Siehe z. B.:
http://www.vbcity.com/forums/faq.asp?fid=15&cat=Deployment+Projects&#TID83630

Gruss
Elmar
Micha
2005-05-02 14:19:06 UTC
Permalink
Vielen Dank für die umfassende und schnelle Hilfe.

Jetzt funktioniert alles wie ich es mir vorgestellt habe.

Viele Grüße aus dem Allgäu
Post by Elmar Boye
Hallo Micha,
Post by Micha
Ich habe in Visual Basic.net eine Anwendung geschrieben, die auf eine
Access-Datenbank zugreift.
Auf meinem Entwicklungsrechner funktioniert alles einwandfrei.
Wenn ich die Anwendung aber auf einen anderen Rechner installiere
"C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual
Studios Projects\DruKo\data.mdb" ist kein zulässiger Pfad. Stellen
Sie sicher, dass der Pfad richtig eingegeben wurde und dass Sie mit
dem Server, auf dem sich diese Datei befindet, verbunden sind.
Vermutlich liegt es daran wie man die Access-Datenbank mit weitergibt.
Aber Ich habe keine Ahnung wie ich das machen soll.
Das hängt von den Ansprüchen ab.
Zunächst sollte eine gemeinsam genutzte Datenbank nicht gerade in
einem privaten Verzeichnis eines Benutzers (bei Dir Administrator) liegen.
Das beschwört Rechteprobleme herauf.
Ein gemeinsames (Netzwerk)-Verzeichnis ist da besser.
Ist sie je Benutzer privat wäre Application.UserAppDataPath eine Alternative,
ansonsten lokal auf dem Rechner Application.CommonAppDataPath.
Dann kommt es darauf an, ob Du eine neue Datenbank erstellen willst
oder Dich nur mit einer bestehenden verbinden. Wenn Du immer fest auf
eine Datenbank zugreifen willst, so solltest Du die Verbindungszeichen in einer
http://www.google.de/groups?hl=de&lr=&selm=2shmprF1k5snnU1%40uni-berlin.de
Solls dynamisch erfolgen, ginge ein Verbindungsdialog ginge wie in
http://www.google.de/groups?hl=de&threadm=O0YqsMPsEHA.3336%40tk2msftngp13.phx.gbl
beschrieben (ist C# sollte aber nicht allzu schwierig in VB.NET umzuschreiben sein).
Und wenn Du den Provider auf "Microsoft.Jet.OLEDB.4.0" voreinstellst
so kann der Benutzer direkt die Datenbank-Datei auswählen.
Wenn Du eine neue Datenbank als Vorlage mitgeben willst, so könntest Du sie
als Resource ins Programm einbinden und bei Bedarf daraus installieren.
Oder aber in ein .NET Setup Projekt einbinden und dabei in ein gemeinsames
http://www.vbcity.com/forums/faq.asp?fid=15&cat=Deployment+Projects&#TID83630
Gruss
Elmar
Peter Götz
2005-04-30 09:43:48 UTC
Permalink
Hallo Micha,
Post by Micha
Ich habe in Visual Basic.net eine Anwendung geschrieben, die auf eine
Access-Datenbank zugreift.
Auf meinem Entwicklungsrechner funktioniert alles einwandfrei.
Wenn ich die Anwendung aber auf einen anderen Rechner installiere kommt beim
"C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studios
Projects\DruKo\data.mdb" ist kein zulässiger Pfad.
Ich rate mal, dass es auf dem bewussten Rechner kein Verzeichnis

"C:\Dokumente und Einstellungen\Administrator\
Eigene Dateien\Visual Studios Projects\..."

gibt. Vermutlich hast die bei der Programmentwicklung Deine
Datenbankverbindung mit irgendeinem "Assistenten" erstellt und dabei diesen
Pfad, den es nur auf Deinem Entwicklungsrechner gibt, fest im Programm
verdrahtet. Damit funktioniert die Sache natürlich nur noch dann, wenn auf
dem jeweiligen Zielrechner die *.mdb mit exakt dem gleichen Namen und im
gleichen Pfad liegt. Einen Pfad ".\Visual Studios Projects\..." dürfte es
aber auf den meisten der möglichen Zielrechner wohl gar nicht geben.
Post by Micha
Stellen Sie sicher, dass
der Pfad richtig eingegeben wurde und dass Sie mit dem Server, auf dem sich
diese Datei befindet, verbunden sind.
Und ...?
Hast Du mal geprüft, ob es diesen Pfad auf besagtem Rechner gibt?
Ich bin fast sicher, es gibt ihn nicht.
Post by Micha
Vermutlich liegt es daran wie man die Access-Datenbank mit weitergibt.
Daran wie man die DB weitergibt, liegt es eigentlich nicht.
Post by Micha
Aber Ich habe keine Ahnung wie ich das machen soll.
Eine Access.mdb ist eine simple Datei und somit ist es kein grosses Problem,
im Programm dem Benutzer einen Dateidialog bereitzustellen, mit dem er erst
mal den Pfad zu seiner Datenbankdatei (*.mdb) selbst auswählen kann. Hat er
das gemacht und anschliessend die *.mdb erfolgreich geöffnet, ist klar, dass
es der richtige Pfad war und Du kannst diesen z.B. in einer Ini-Datei, in
der Registry oder in einer sonstigen Datei speichern und ihn von dort beim
nächsten Programmstart wieder auslesen, um damit dann die *.mdb wieder zu
öffnen. Der Benutzer muss also nur nach dem ersten Programmstart seine *.mdb
via Dateidialog suchen, bei späteren Programmstart aber nicht mehr, weil das
Programm dann die gespeicherte Pfadangabe aus der entsprechenden Datei oder
Registry selbst auslesen kann.
Für den Fall, dass der zuständige Admin die *.mdb mal woanders hin
verlagert, liest Dein Programm den zuletzt gespeicherten Pfad und versucht
damit die *.mdb zu öffnen. Da sie verlagert worden ist, funktioniert das
nicht mehr, Dein Programm reagiert darauf und zeigt dem Benutzer wieder den
DateiDialog mit dem er den neuen Pfad zur *.mdb auswählen kann. Dieser neue
Pfad wird nach dem erfolgreichen Öffnen der *.mdb wieder gespeichert und
steht damit beim nächsten Programmstart wieder zur Verfügung.

Unter www.gssg.de/adonetdmo.zip findest Du ein Programm, das mit einem
solchen Auswahldialog für die *.mdb arbeitet. Dieses Programm erstellt auch
die erforderliche *.mdb selbst und gibt dem Benutzer dabei ebenfalls mit
einem Dateidialog die freie Wahl, an welchem Speicherort er die neu zu
erzeugende *.mdb ablegen will.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tips u. Beispielprogrammen)
Loading...