Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Fehler bei FollowHyperlink

Begonnen von smily68, September 02, 2014, 19:45:13

⏪ vorheriges - nächstes ⏩

smily68

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

smily68

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.

MaggieMay

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.
Freundliche Grüße
MaggieMay

smily68

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