Hallo Zusammen,
wir haben das Problem, dass wir in unserer Access Anwendung Dateien in den Formularen hinterlegen konnten. (PDF, Word etc.)
Nun haben wir die Datenbank auf SQL Server umgestellt und diese Funktion funktioniert nicht mehr.
Wie geht man nun am Besten vor? Wir können die Dateien auch in einem UNC Pfad speichern und den Link im Formular hinterlegen.
Komplettes Speichern in der Datenban wäre auch denkbar.
aber wie ?
Grüße aknirsch
Hallo,
ich weiss zwar nicht, wie "Dateien in den Formularen hinterlegen" funktionieren soll, aber eine empfehlenswerte (gängige) Lösung ist, nur den UNC-Pfad (mit Dateiname) als solchen in einem Tabellen-Textfeld zu speichern. Das Anzeigen (Öffnen) der jeweiligen Datei könnte mit der Followhyperlink-Methode oder (evtl. besser) mit der Shellexecute-Funktion erfolgen.
"Komplettes Speichern in der Datenban wäre auch denkbar." Wenn das heißen soll, das der gesamte Datei-Inhalt in einem BLOB-Feld (Long Binary) in die Tabelle abgespeichert wird, wäre davon abzuraten.
Hallo,
danke für die Info. Als Blob abspeichern wäre auch nicht meine erste Wahl!
Wenn ich das mit den relativen Links realisiere, wie kann dann ein Anwender "unkompliziert" ein Dokument "anhängen"?
Hast Du da eine Idee?
Grüße
Hallo,
versteh den Sinn der Frage nicht...
Wenn der Dateiname im UNC-Format als Text in ein Tabellenfeld gespeichert werden soll, welche "Kompliziertheit" gibt es da? Zudem habe ich nicht von "relativen Links" gesprochen...
Der UNC-PFAD (ohne Dateiname) ist konzept-abhängig (der Servername und das Haupt-Ablageverzeichnis wird ja wohl nicht vom User ausgewählt werden müssen..) und ist als Konstante anzusehen. Ein evtl. von einem Tabellenfeld abhängiges Unterverzeichnis (z. B. abhängig von der Kundennummer) kann aus den abgelegten Tabellen-Daten ermittelt werden, wobei der eigentliche Dateiname ( einschl. Extension) vom User über einen Filedialog ausgewählt wird...
Mein Problem ist, dass das meine Datenbankbenutzer nicht hinbekommen, also den UNC Pfad von Hand einzugeben.
Die bekommen (maximal) hin, das gewünschte Dokument über den Explorer auszuwählen...
Hallo,
naja, wie gesagt, der UNC-Pfad (z. B. \\Servername\Freigabe\Hauptverzeichnis) ist doch eine Konstante, oder nicht? Den braucht der User doch gar nicht bearbeiten/wissen. Um eine Datei aus diesem oder einem darunterliegenden Verzeichnis auszuwählen, kann dem User ein Filedialog(!, nicht "Explorer") präsentiert werden, der auf das Hauptverzeichnis eingestellt wird und die Auswahl der gewünschten Datei erlaubt. Vor dem Speichern wird der ausgewählte Dateiname separiert und mit dem UNC-Pfad "verkuttelt" ...
Wo ist da das Problem?
Darauf würde ich gere heraus.. Kannst Du mir erklären, wie das mit dem File Dialog geht?
Gruss
Hallo,
Access (Office) bringt einen Filedialog von Haus aus mit:
Setze den Verweis auf die MS Office Object xx Library
Danach kann mit
Application.Filedialog
und nach Setzen einiger Voreinstellungen das Datei-Auswahl-Fenster angezeigt und eine oder mehrere Dateien ausgewählt werden....
Siehe auch: http://support.microsoft.com/kb/824272/de
Super, dass geht nun...
Jetzt füllt sich das List Element mit den Pfadangaben und Datei Namen
Wie bekomme ich diese Angaben nun in einer Tabelle gespeichert und beim Auslesen aus der Tabell per Klick geöffnet??
Auf jeden Fall kommen wir weiter :-)
Hallo,
was ist bei Dir das "List-Element"? Wenn das das Filedialog-Fenster ist, in dem man Dateien auswählen kann, dann siehst Du doch im Beispiel, wie man den Dateinamen einer Variablen oder einem gebundenen Formular-Textfeld ("txtFileName") zuweist. Das Form-Textfeld wird, weil es an das entspr. Tabellenfeld gebunden ist, den Dateinamen speichern. Vorher sollte aber, wenn der UNC-Pfad relevant ist, der reine Dateiname (plus Ext.) mit dem UNC-String verkettet werden.
Soll diese Datei in Folge angezeigt, bzw. mit dem der Dateiendung assoziierten Programm geöffnet werden, so nutz (auch wie schon erzählt) die FollowHyperlink-Methode oder die ShellExecute-Funktion..
Sub btnShowFile_Click()
Followhyperlink Me!txtFileName
End If
http://www.dbwiki.net/wiki/VBA_Tipp:_Anwendung_mit_ShellExecute_starten