Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: smily68 am September 02, 2014, 19:45:13

Titel: Fehler bei FollowHyperlink
Beitrag von: smily68 am September 02, 2014, 19:45:13
Hallo

Auf meinem Formular habe ich ein Listenfeld, das mir mehrere Einträge zeigt (Einträge von Angehängten Dokumenten mit dem Speicherpfad). Das Listenfeld ist ungebunden. Mit dem unten aufgeführten Code schreibe ich das ausgewählte Datei in ein Feld in der Tabelle die dem Formular hinterlegt ist. Danach wir das Dokument geöffnet und angezeigt. Funktioniert soweit. Wenn ich aber das geöffnete Formular schliesse und erneut öffnen will kommt eine Fehlermeldung (Anhang).

Code:
Private Sub lstAnhang_DblClick(Cancel As Integer)
'Abgespeichertes Dokument öffnen

    Dim ctlAnhang As Control
    Dim vntItem As Variant

    Set ctlAnhang = Me!lstAnhang
   
    For Each vntItem In ctlAnhang.ItemsSelected
        db.Execute "Update tblMail Set mail_Anhang = '" & ctlAnhang.ItemData(vntItem) & "' WHERE mail_ID = 1"
    Next vntItem
    FollowHyperlink Me.mail_Anhang
    Me.Refresh
   
End Sub
Titel: Re: Fehler bei FollowHyperlink
Beitrag von: smily68 am September 02, 2014, 19:55:53
Ich habe nun ganz am Anfang vor dem Set Befehl ein Me.Refresh eingebaut und nun geht es. Ich weiss nicht ob dies eine sehr elegante Lösung ist oder ob mein Code nicht ganz das Gelbe vom Ei ist.
Titel: Re: Fehler bei FollowHyperlink
Beitrag von: MaggieMay am September 02, 2014, 23:24:39
Hallo,

was bezweckst du mit dem Code?

Du überschreibst den (einzigen?) Datensatz in der Tabelle so oft wie eine Auswahl im Listenfeld getätigt wurde und am Ende öffnest du die zuletzt ausgewählte Datei.
Ist das Listenfeld überhaupt für die Mehrfachauswahl vorgesehen? Oder könntest du das Listenfeld nicht ebensogut an das Datenfeld "mail_Anhang" binden und dir das Update sparen?

Der parallele Zugriff auf einen Datensatz via Formular und Recordset sollte nach Möglichkeit vermieden werden.

PS:
Das Refresh wirkt vermutlich wie das Speichern des aktuellen Datensatzes, der zunächst manuell und anschließend per VBA bearbeitet wird, wodurch ein Schreibkonflikt entsteht.
Die eigentliche Aktion könnte also ebensogut mit den Befehlen "DoCmd.RunCommand acCmdSaveRecord" oder "Me.Dirty = False" bewirkt werden.
Titel: Re: Fehler bei FollowHyperlink
Beitrag von: smily68 am September 03, 2014, 08:36:35
Das Feld ist ungebunden, da es als Mehrfachauswahl eingestellt ist. In einer anderen Subroutine gebe dem Benutzer die Möglichkeit mehrer Einträge (Anhänge) miteinander zu löschen.

Mit Me.Dirty = false am Anfang des Codes funktioniert es einwandfrei.

Gruss Daniel