Ole-Objekt: zentraler Speicherort

Hallo,

erstmal ein schönes neues und hoffentlich erfolgreiches Jahr 2010.

Ich stehe gerade vor dem Problem, dass Anwender Dateien zu einer Tabelle mit anfügen können. Die Dateien werden in einem Formular über ein OLE-Objekt eingefügt. Nun möchte ich, dass die Datei in einen zentralen Ordner (z.B. auf dem Server) gespeichert wird und NUR die Verknüpfung eingefügt wird.

Leider bekomme ich es nicht hin, dass ich den Pfad und Dateinamen der eingefügten Datei auslesen kann. Damit würde ich die Datei dann in den zentralen Ordner kopieren und die Verknüpfung erstellen.

Vielen Dank schon einmal für die Hilfe.

Schöne Grüße aus Württemberg,

Oliver.

Hallo Oliver,

erstmal ein schönes neues und hoffentlich erfolgreiches Jahr
2010.

das wünsche ich auch!

Ich stehe gerade vor dem Problem, dass Anwender Dateien zu
einer Tabelle mit anfügen können.

welche Access Version? In Access 2007 geht das sehr kompfortbel über „Anlagen“.

Die Dateien werden in einem Formular über ein OLE-Objekt eingefügt.

dann wird es wohl nicht Access 2007 sein :frowning:

Nun möchte ich, dass die Datei in einen zentralen Ordner (z.B. auf dem Server) gespeichert wird und NUR die Verknüpfung eingefügt wird.

nö, da solltest du dir erstmal darüber klar sein, was in der Tabelle gespeichert wird bzw. werden soll.

  • nur Dateiname um dann eine Verknüpfung extern zu erstellen
  • oder das komplette Dokument in einem OLE Feld

Leider bekomme ich es nicht hin, dass ich den Pfad und
Dateinamen der eingefügten Datei auslesen kann.

logisch, das gibt es nicht mehr! Der „Pfad“ ist jetzt dein Feld der Tabelle. Der Dateiname existiert nicht mehr, da der Inhalt des Dokuments als Datenklops in deinem OLE-Feld liegt.
Es gibt keinen Bezug mehr zur ursprünglichen Datei!

Damit würde ich die Datei dann in den zentralen Ordner kopieren und die Verknüpfung erstellen.

das wäre doppeltgemoppelt. Die Datei ist ja schon in deinem OLE-Feld gespeichert!

Grüße aus Rostock
Wolfgang
(Netwolf)

Hallo Wolfang,

dann wird es wohl nicht Access 2007 sein :frowning:

Nein, das ist Access 2002, SP3

Nun möchte ich, dass die Datei in einen zentralen Ordner (z.B. auf dem Server) gespeichert wird und NUR die Verknüpfung eingefügt wird.

nö, da solltest du dir erstmal darüber klar sein, was in der
Tabelle gespeichert wird bzw. werden soll.

  • nur Dateiname um dann eine Verknüpfung extern zu erstellen
  • oder das komplette Dokument in einem OLE Feld

Dort soll nur die Dateinamen (=Verknüpfung) und NICHT die Datei selbst gespeichert werden. Ich möchte die Datenbank klein halten und nicht aufblähen.

Leider bekomme ich es nicht hin, dass ich den Pfad und
Dateinamen der eingefügten Datei auslesen kann.

logisch, das gibt es nicht mehr! Der „Pfad“ ist jetzt dein
Feld der Tabelle. Der Dateiname existiert nicht mehr, da der
Inhalt des Dokuments als Datenklops in deinem OLE-Feld liegt.
Es gibt keinen Bezug mehr zur ursprünglichen Datei!

Das ist richtig. Aber in meinem Fall habe ich nur eine Verknüpfung. Und diese Pfadangabe müsste ich doch auslesen können?

Damit würde ich die Datei dann in den zentralen Ordner kopieren und die Verknüpfung erstellen.

das wäre doppeltgemoppelt. Die Datei ist ja schon in deinem
OLE-Feld gespeichert!

Nein, da ich nur die Verknüpfung speichern möchte. Der Anwender soll die Möglichkeit haben eine Datei von seinem Rechner auszuwählen. Würde nun ein anderer Benutzer von einem anderen Rechner zugreifen wollen, würde das nicht gehen. Aus diesem Grund möchte ich die ausgewählte Datei dann zentral speichern.

Schöne Grüße,

Oliver.

Hallo,

jetzt habe ich die Lösung für mein Problem gefunden. Nun kann ich endlich den Pfad auslesen.
Gefunden unter: http://support.microsoft.com/kb/170531/de

Function GetLinkedPath(objOLE As Variant) As Variant
Dim strChunk As String
Dim pathStart As Long
Dim pathEnd As Long
Dim path As String
If Not IsNull(objOLE) Then
’ Convert string to Unicode.
strChunk = StrConv(objOLE, vbUnicode)
pathStart = InStr(1, strChunk, „:“, 1) - 1

’ If mapped drive path not found, try UNC path.
If pathStart 0 Then
pathEnd = InStr(pathStart, strChunk, Chr(0), 1)
path = Mid(strChunk, pathStart, pathEnd - pathStart)
GetLinkedPath = path
Exit Function
End If
Else
GetLinkedPath = Null
End If
End Function

Schöne Grüße aus Württemberg,
Oliver