Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Long binary-Daten Pfad auslesen

173 views
Skip to first unread message

Hubert Holler

unread,
Oct 16, 2010, 3:56:22 AM10/16/10
to
Ich habe in einer MS-Access Tabelle ein OLE Datenfeld, wo ich Long
binary-Daten abgelegt habe.

Ich möchte nun über eine Funktion den Pfad dieses long binary
Objektes, dass in diesem Feld gespeichert ist auslesen.

Ich habe die Funktion von http://support.microsoft.com/kb/q170531/
ausprobiert. Bekomme aber da nur lauter binäre Zeichen mit der
Funktion GetLinkedPath.

Hoffe da kann mir jemand weiterhelfen.
Vielen Dank für jede Antwort

Wolfgang Badura

unread,
Oct 17, 2010, 7:30:44 AM10/17/10
to
Hallo Hubert!
"Hubert Holler" <haif...@gmx.net> wrote in message
news:a3b6f2c2-340f-43f7...@l8g2000yql.googlegroups.com...

>Ich habe die Funktion von http://support.microsoft.com/kb/q170531/
>ausprobiert.
Einleitend steht dort:
"Microsoft Access bietet keine M�glichkeit festzustellen, den Pfad f�r ein
verkn�pftes OLE-Objekt in einer Tabelle gespeichert. Daher ist die
empfohlene Vorgehensweise erstellen Sie ein zus�tzlicher Text-Feld in der
Tabelle und den Pfad zum verkn�pften OLE-Objekt in das Feld speichern.

Dieser Artikel beschreibt wie Sie eine Visual Basic f�r
Applikationen-Prozedur, um den Pfad f�r ein verkn�pftes OLE-Objekt aus
OLE-Header das Objekt abzurufen. Allerdings ist es m�glich, dass dieses
Verfahren in einigen F�llen m�glicherweise nicht funktioniert. Den Pfad in
ein separates Textfeld speichern, wenn Sie das Objekt verkn�pfen ist am
besten um sicherzustellen, dass Sie den Pfad sp�ter abrufen werden."

Ich kann OLE-Objekte einer Tabelle zwar exportieren, aber auch in diesen
Daten ist kein Pfad zum Objekt gespeichert.
Also speichere den Pfad des Objektes in einem eigenem Textfeld.

Wolfgang


Wolfgang Badura

unread,
Oct 17, 2010, 8:52:08 AM10/17/10
to
Hallo Hubert!
"Hubert Holler" <haif...@gmx.net> wrote in message
news:a3b6f2c2-340f-43f7...@l8g2000yql.googlegroups.com...
>Ich habe in einer MS-Access Tabelle ein OLE Datenfeld, wo ich Long
>binary-Daten abgelegt habe.
Noch etwas:
Um welche Objekte handelt es sich? Nur um Bilder desselben Typs, oder
verschiedenste Dateien, die mit jeweils eigenen Programmen ge�ffnet werden?
Ich frage deshalb, da OLE-Objekte immer die gesamte Datei im OLE-Datenfelder
speichern, egal ob Du im Form verkn�pft oder eingebettet einstellst.
Wenn Du also das Bild auf deinem Rechner hast, ist es damit ein zweites Mal
gespeichert.
Deshalb w�rde ich grunds�tzlich auf OLE-Datenfelder verzichten und nur
Dateinamen speichern,
wobei mit Doppelklick die zugeh�rige Anwendung gestartet wird.
Weiters ist mir aufgefallen, da� in dem MS-Beipiel unter
http://support.microsoft.com/kb/q170531/
nicht der Header der OLE-Daten untersucht wird, sondern gehofft wird, da�
irgendwo in den Felddaten
":/" oder ein UNC-Pfad enthalten ist. Das ist nicht sehr effizient, deshalb
auch die Anmerkung,
da� der Code nicht immer funktioniert.
Speichere also besser den Dateinamen.

Anbei noch der Code zum �ffnen der mit einer Dateispezifikation verkn�pften
Anwendung:

Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) _
As Long

' Fenster-Handle des Desktops (f�r ShellExecute)
Private Declare Function GetDesktopWindow Lib "user32" () As Long

Private Declare Function GetSystemDirectory Lib "kernel32" _
Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, _
ByVal nSize As Long) _
As Long

' Dokument �ffnen
Private Const SE_ERR_NOASSOC = 31
Private Const SE_ERR_NOTFOUND = 2

' Dokument �ffnen und ggf. autom. den "�ffnen mit..." - Dialog anzeigen
Sub DocumentOpen(sFilename As String)
Dim sDirectory As String
Dim lRet As Long
Dim DeskWin As Long

DeskWin = GetDesktopWindow()
lRet = ShellExecute(DeskWin, "open", sFilename, _
vbNullString, vbNullString, vbNormalNoFocus)

If lRet = SE_ERR_NOTFOUND Then
'Datei nicht gefunden

ElseIf lRet = SE_ERR_NOASSOC Then
'Wenn die Dateierweiterung noch nicht bekannt ist...
'wird der "�ffnen mit..."-Dialog angezeigt.
sDirectory = Space(260)
lRet = GetSystemDirectory(sDirectory, Len(sDirectory))
sDirectory = Left(sDirectory, lRet)
Call ShellExecute(DeskWin, vbNullString, _
"RUNDLL32.EXE", "shell32.dll,OpenAs_RunDLL " & _
sFilename, sDirectory, vbNormalFocus)
End If
End Sub


Sascha Trowitzsch

unread,
Oct 20, 2010, 5:46:58 AM10/20/10
to
Hi Haiflosse,

Wenn du schon crosspostest, dann erwartet man bitte wenigstens R�ckmeldungen
auf die vorgefundenen Antworten.
Entscheide dich, wo du weitermachen willst.

Ciao, Sascha

Hubert Holler wrote:
> Ich habe in einer MS-Access Tabelle ein OLE Datenfeld, wo ich Long
> binary-Daten abgelegt habe.
>

> Ich m�chte nun �ber eine Funktion den Pfad dieses long binary


> Objektes, dass in diesem Feld gespeichert ist auslesen.
>
> Ich habe die Funktion von http://support.microsoft.com/kb/q170531/

> ausprobiert. Bekomme aber da nur lauter bin�re Zeichen mit der


> Funktion GetLinkedPath.
>
> Hoffe da kann mir jemand weiterhelfen.

> Vielen Dank f�r jede Antwort

0 new messages