Dokumente in DB verlinken

Hallo zusammen!

Ich bin verzweifelt, vielleicht kann mir ja jemand helfen.

Un zwar habe ich eine Datenbak von meinem Vorgänger „geerbt“ und diese DB bietet die Funktionalität, einem Kunden mit Dokumenten zu „verlinken“.

Diese Funktion soll ich nun auch in eine andere DB einbauen… meine VBA-Kenntnisse reichen leider dafür nicht aus. Hmm, nun dachte ich, ich könnte ja den VBA-Code von der „alten“ DB übernehme. Das müsste ja klappen - dachte ich.

Aber ich bekomme immer die Fehlermeldung „Typen unverträglich“, wenn ich ein Dokument hinzufügen möchte.

nachfolgend der Code beim Klicken auf „Dokument hinzufügen“

Hat jemand einen Tipp für mich?

Ach Ja, wir arbeiten mit Access 2003.

Danke & Grüße

________________________________________________
Private Sub Befehl2_Click()

On Error GoTo fehler

Dim db As Database
Dim rs As Recordset
Dim DocPfad As String
Dim a As Variant

Set db = CurrentDb()
Set rs = db.OpenRecordset(„tblDokumente“, dbOpenDynaset)

a = DateiOeffnen(„H:\C“, „Bitte Dokument auswählen:“, „ALLE“)
If IsNull(a) Or a = „“ Then
Else
DocPfad = a
rs.AddNew
rs!DocPfad = DocPfad
rs!KndNr = Me.KndNr
rs.Update
End If
Me.UForm.Requery

rs.Close
db.Close

ende:
Exit Sub

fehler:
MsgBox Err.Description, 16, „“
Resume ende

End Sub

__________________________________________

Und hier noch die Funktion „Dateioeffnen“:

________________________________________________

Function DateiOeffnen(strVerzeichnis As String, strTitel As String, FilterArt As String) As String

Dim strFilter As String
Dim strDateinameUndPfad As String
Dim strDateiname As String
Dim lngErgebnis As Long

’ Angebotene Dateifilter in der Dropdownliste „Dateityp“
Select Case FilterArt
Case „Access“
strFilter = „Access-DB (*.mdb; *.mde)“ & Chr$(0) & „*.MDB; *.MDE“ & Chr$(0)
Case „Wave“
strFilter = „Wav-File (*.wav)“ & Chr$(0) & „*.wav“ & Chr$(0)
Case „Wordvorlage“
strFilter = „Wordvorlage (*.dot)“ & Chr$(0) & „*.dot“ & Chr$(0)
Case „ALLE“
strFilter = „Alle Dateien (*.*)“ & Chr$(0) & „*.*“ & Chr$(0)
strFilter = strFilter & „Worddokument (*.doc)“ & Chr$(0) & „*.doc“ & Chr$(0)
strFilter = strFilter & „Exceltabelle (*.xls)“ & Chr$(0) & „*.xls“ & Chr$(0)
strFilter = strFilter & „Textdatei (*.txt)“ & Chr$(0) & „*.txt“ & Chr$(0)
strFilter = strFilter & „Acrobatdatei (*.pdf)“ & Chr$(0) & „*.pdf“ & Chr$(0)
strFilter = strFilter & „Bitmap (*.bmp)“ & Chr$(0) & „*.bmp“ & Chr$(0)
strFilter = strFilter & „GIF-Bild (*.gif)“ & Chr$(0) & „*.gif“ & Chr$(0)
strFilter = strFilter & „JPG-Bild (*.jpg)“ & Chr$(0) & „*.jpg“ & Chr$(0)
End Select

’ Vorgegebenes Verzeichnis
If strVerzeichnis = „“ Then
strVerzeichnis = CurDir$ & Chr$(0) ’ Wenn leer, dann das aktuelle Verzeichnis verwenden
Else
strVerzeichnis = strVerzeichnis & Chr$(0) ’ ANSI „0“ an übergebenes Verzeichnis anhängen
End If

If strTitel = „“ Then
strTitel = „Datei-Öffnen“ ’ Wenn kein Titel übergeben, Standardtitel festlegen
Else
strTitel = strTitel & Chr$(0) ’ ANSI „0“ an übergebenen Titel anhängen
End If

’ Speicherplatz für Dateinamen & Pfad reservieren
strDateinameUndPfad = Space$(255) & Chr$(0)

’ Speicherplatz für Dateinamen ohne Pfad reservieren
strDateiname = Space$(255) & Chr$(0)

'Datenstruktur von pOPENFILENAME festlegen

pOpenfilename.lStructSize = Len(pOpenfilename)
pOpenfilename.hwndOwner = 0&
'pOpenfilename.hwndOwner = Application.hWndAccessApp
pOpenfilename.lpstrFilter = strFilter
pOpenfilename.nFilterIndex = 1
pOpenfilename.lpstrFile = strDateinameUndPfad
pOpenfilename.nMaxFile = Len(strDateinameUndPfad)
pOpenfilename.lpstrFileTitle = strDateiname
pOpenfilename.nMaxFileTitle = Len(strDateiname)
pOpenfilename.lpstrInitialDir = strVerzeichnis
pOpenfilename.lpstrTitle = strTitel
pOpenfilename.flags = OFN_FILEMUSTEXIST Or OFN_PATHMUSTEXIST Or OFN_HIDEREADONLY
pOpenfilename.nFileOffset = 0
pOpenfilename.nFileExtension = 0
pOpenfilename.lCustData = 0
pOpenfilename.lpfnHook = 0
pOpenfilename.lpTemplateName = „“

lngErgebnis = API_DateiOeffnen(pOpenfilename)

If lngErgebnis 0 Then
DateiOeffnen = Left(pOpenfilename.lpstrFile, InStr(pOpenfilename.lpstrFile, Chr$(0)) - 1)
Else
DateiOeffnen = „“
End If

’ If lngErgebnis 0 Then
’ DateiOeffnen = Left(pOpenfilename.lpstrFile, pOpenfilename.nFileOffset - 1) & _
’ „*“ & Mid$(pOpenfilename.lpstrFile, pOpenfilename.nFileOffset + 1, _
’ pOpenfilename.nFileExtension - pOpenfilename.nFileOffset - 1) & „*“ & _
’ Mid$(pOpenfilename.lpstrFile, pOpenfilename.nFileExtension + 1, Len(pOpenfilename.lpstrFile) - pOpenfilename.nFileExtension)
’ Else
’ DateiOeffnen = „“
’ End If

End Function

_________________________________________

Hallo,

Private Sub Befehl2_Click()

On Error GoTo fehler

Dim db As DAO.Database ’ UND Verweis auf die DAO3.6-Library setzen (VBA-Editor Extras/Verweise)
Dim rs As DAO. Recordset
Dim DocPfad As String
Dim a As Variant

Set db = CurrentDb()
Set rs = db.OpenRecordset(„tblDokumente“, dbOpenDynaset)

a = DateiOeffnen(„H:\C“, „Bitte Dokument auswählen:“,
„ALLE“)
If nz(a,"") „“ Then
DocPfad = a
rs.AddNew
rs!DocPfad = DocPfad
rs!KndNr = Me!KndNr
rs.Update
End If
Me!UForm.Requery

rs.Close
set rs=Nothing
set db=Nothing ’ NICHT: db.close

ende:
Exit Sub

fehler:
MsgBox Err.Description, 16, „“
Resume ende

End Sub

Hi!

Es hat geklappt, bin echt begeistert!

Danke schön!