Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

pdf-Datei in Webbrowsersteuerelement

Begonnen von Guenther, August 30, 2015, 14:29:51

⏪ vorheriges - nächstes ⏩

Guenther

Hallo liebe Helferinnen und Helfer!

ich habe einen Datenbank, bei der für jeden Benutzer ein Verzeichnis auf der Festplatte eingerichtet wird. In dieses werden verschiedene pdf-Dateien gespeichert.
Nun möchte ich über ein Webbrowsersteuerelemt eine der Dateien auswählen können und auch anzeigen.


Hiefür habe ich den folgenden Code erstellt. Leider findet er den Pfad nicht, bzw. kann diesen nicht korrekt zusammenbauen. Die MsgBox ist nur zur Kontrolle! Sollte später dann dafür verwendet werden, den Hinweis zu geben, dass keine pdf-Datei vorhanden ist.

Private Sub Webbrowser262_Click()
    Dim strPath As String, strFile As String, strFoundFile As String
    strPath = "C:\Users\SSA\Bestand\"
    strFile = Me.SuS_Name & "*" & "*.pdf"
    strFoundFile = Dir(strPath & strFile)
    If strFoundFile <> "" Then
    Application.FollowHyperlink strFoundFile
       'Application.FollowHyperlink strPath & strFoundFile
    Else
    MsgBox "Finde keinen Pfad!"
    End If
End Sub
Leider kann ich nicht herausfinden, warum der Code nicht funktioniert. Im Moment kommt immer die MsgBox!


Bin dankbar, wenn mir jemand den Fehler aufzeigen kann.

Günther

DF6GL

Hallo,

Debuggen hilft vermutlich weiter...  (Haltepunkt setzen, Code im >Einzelschritt durchlaufen und dabei akt... die Variablen prüfen)


Private Sub Webbrowser262_Click()
    Dim strPath As String, strFile As String
    strPath = "C:\Users\SSA\Bestand\"
    strFile = StrPath & Me.SuS_Name & ".pdf"
    If Dir(strFile) <> "" Then
    Application.FollowHyperlink strFile

    Else
    MsgBox "Finde keine Datei!"
    End If
End Sub
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Guenther

Lieber DF6GL!

Danke für die rasche Antwort! Leider bleibt das Problem vorhanden.
Ich bekomme keine Fehlermeldung! Der Code stimmt in beiden Fällen. Leider ist mir unklar, warum der Pfad nicht korrekt gebildet werden kann.

Eventuell bin ich aber auch komplett auf dem Holzweg  :-\

Zur Situation:
Ich hätte gerne nach dem Klick auf das Feld, dass ich wie im Dateimanager auswählen kann, welche pdf-Datei innerhalb des Ordners für die im Formular ausgewählte Person angezeigt werden soll.
Das kann es auch mehrere pdf-Dateien geben!

Nochmals Danke für jede Hilfe und ebenfalls Grüße vom direkten Umfeld des Bodensees  :)

Günther

DF6GL

Hallo,

naja, das wäre ja eine ganz andere Aufgabenstellung.....


Der Code prüft lediglich, ob es im Verzeichnis   "C:\Users\SSA\Bestand\"  eine PDF-Datei gibt, deren Name im Textfeld Me.SuS_Name angezeigt wird.  Falls vorhanden, wird die Datei angezeigt.. Evtl. ist jedoch noch das Protokoll erforderlich:

Application.FollowHyperlink "file://" & strFile

Such mal hier nach "Filedialog", damit könntest Du dann ein Datei-Auswahl-Dialogfenster öffnen und die gewünschte Datei auswählen...
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MaggieMay

Hi,

du kannst die FollowHyperlink-Methode nur in Verbindung mit einem konkreten Dateinamen mit vollständigem Zugriffspfad einsetzen.
Du aber scheinst Dateien eines bestimmten Dateityps in einem bestimmten Verzeichnis suchen zu wollen.
Freundliche Grüße
MaggieMay

Senate1987

#5
Hallo
Ich bin bei meiner Suche nach einem Weg eine URL aufzurufen, die zum Teil aus der Eingabe in ein Textfeld besteht, auf diesen Beitrag gestossen.
Die URL ist immer gleich aufgebaut bis auf eben den Teil aus dem Textfeld. Ed geht dabei um Busfahrpläne, ins Textfeld kommt die gesuchte Linie. Hier mal mein Code:

Private Sub cmdBusGo_Click()
    Dim strPath As String, strFile As String, strFoundFile As String
    strPath = "http://www.mobiliteit.lu/sites/default/files/horaires/rgtr/"
    strFile = Me.txtBus & ".pdf?v97"
    strFoundFile = strPath & strFile
    Application.FollowHyperlink strFoundFile
End Sub


Wenn die eingegebene Linie existiert klappt diese Methode aus tadellos. Existiert sie allerdings nicht öffnet ein Klick an Stelle der auf der Homepage dafür vorgesehen Seite eine Fehlermeldung mit Vorschlag zum Debuggen.

Könnt ihr mir sagen woran das liegt? Und wie ich das verhindern kann, denn für den User ist diese Fehlermeldung wohl eher unnütz.

database

Hallo,

Zitatfür den User ist diese Fehlermeldung wohl eher unnütz
Wie wahr - aber die Fehlermeldung enthält auch eine Fehlernummer - oder?
Die könnte man für eine Fehlerbehandlungsroutine heranziehen.
Oder du versuchst das mal:



Private Sub cmdBusGo_Click()
    Dim strPath As String, strFile As String, strFoundFile As String
    strPath = "http://www.mobiliteit.lu/sites/default/files/horaires/rgtr/"
    strFile = Me.txtBus & ".pdf?v97"
    strFoundFile = strPath & strFile
   
    On Error GoTo ErrHandler
    Application.FollowHyperlink strFoundFile

    Exit Sub

    ErrHandler:
    MsgBox "Die eingegebene Linie existiert nicht!"

End Sub



ZitatKönnt ihr mir sagen woran das liegt?
Liegt daran, dass das File welches in strFile definiert ist in den Verzeichnissen am Webserver nicht existiert

Senate1987

Vielen Dank erstmal

Zitat von: database am Februar 19, 2016, 19:54:35
aber die Fehlermeldung enthält auch eine Fehlernummer

Ja: Run-time Error '8' Cannot download the information you requested

Mit deinem Code erscheint zwar jetzt der Dialog dass die Linie nicht existiert, aber nicht nur bei nicht existierenden Linie sondern bei allen

database

Hi,

hast du das   Exit Sub  geschrieben?

Senate1987

ja hab ich, es scheint als würde er jetzt einfach zum ErrHandler übergehen ohne dem Link überhaupt zu folgen

database

Das kann ja nicht sein ...


Private Sub cmdBusGo_Click()
    Dim strPath As String, strFile As String, strFoundFile As String
    strPath = "http://www.mobiliteit.lu/sites/default/files/horaires/rgtr/"
    strFile = Me.txtBus & ".pdf?v97"
    strFoundFile = strPath & strFile
   
    On Error GoTo ErrHandler
    Application.FollowHyperlink strFoundFile

    ProcExit:
    Exit Sub

    ErrHandler:
    MsgBox "Die eingegebene Linie existiert nicht!"
    Resume ProcExit

End Sub



Bau noch die beiden neuen Zeilen ein und spring dann mal mit F8 durch den Code - Haltepunkt bei 'Private Sub' setzen!

Senate1987

Zitat von: database am Februar 19, 2016, 20:23:31
Bau noch die beiden neuen Zeilen ein und spring dann mal mit F8 durch den Code - Haltepunkt bei 'Private Sub' setzen!

Beide Zeilen sind eingebaut, aber mit F8 tut sich bei mir überhaupt nichts. Und auch der Dialog taucht noch bei allen Eingaben auf

database

Hast du den Haltepunkt in der Zeile 'Private Sub cmdBusGo_Click()' gesetzt,
bleibt das Programm nach dem Klicken des Buttons dort stehen.
Mit F8 springst du dann bei jedem Drücken der Taste eine Zeile weiter.
So kannst du feststellen ob das 'Exit Sub' angesprungen wird oder nicht, auch ist zu sehen ob FollowHyperlink ausgeführt wird.

Und schreib bei der MsgBox noch folgendes dazu ...

    MsgBox "Die eingegebene Linie existiert nicht! - Fehlernummer: " & Err.Number

Mal sehen was da ausgegeben wird, wenn bei jeder Eingabe die Meldung kommt

Ach ja und 'On Error GoTo ErrHandler' verschiebst du gleich unter die Variablendeklaration, damit das Ding ganz am Anfang der Prozedur bekannt ist - so sollte dein Code dann aussehen:


Private Sub cmdBusGo_Click()
    Dim strPath As String, strFile As String, strFoundFile As String
    On Error GoTo ErrHandler
    strPath = "http://www.mobiliteit.lu/sites/default/files/horaires/rgtr/"
    strFile = Me.txtBus & ".pdf?v97"
    strFoundFile = strPath & strFile
   
    Application.FollowHyperlink strFoundFile

    ProcExit:
    Exit Sub

    ErrHandler:
    MsgBox "Die eingegebene Linie existiert nicht! - Fehlernummer: " & Err.Number
    Resume ProcExit

End Sub




Senate1987

#13
Also FollowHyperlink wird nicht ausgeführt, er übergeht es einfach und zeigt mir den Dialog mit der Fehlernummer 8

Damit das Formular jetzt trotzdem schon benutzbar ist habe ich alle neuen Codeteile wiedern entfernt, leider wird FollowHyperlink jetzt nicht mal mehr bei existierenden Linien ausgeführt...

MaggieMay

Hallo,

und was passiert, wenn du "rgtr/" weglässt? So wie ich das sehe, gehört dieser Eintrag gar nicht zum Link.

klappt:
http://www.mobiliteit.lu/sites/default/files/horaires/l130.pdf?v97

klappt nicht:
http://www.mobiliteit.lu/sites/default/files/horaires/rgtr/l130.pdf?v97

BTW:
Was hat es mit dem Anhang "?v97" auf sich? In Wirklichkeit sind das doch immer verschiedene Nummern. Und ohne diesen Zusatz funktioniert es auch.
Freundliche Grüße
MaggieMay