Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: datekk am November 28, 2016, 09:25:00

Titel: Bild aus Hyperlink anzeigen
Beitrag von: datekk am November 28, 2016, 09:25:00
Hallo,

ich möchte gern in Formularen einen Hyperlink zu einem Bild hinterlegen. Der Link ala http://adresse.de/bild.png soll in ein Textfeld eingefügt werden und das Bild dann in einem Bild-Steuerelement erscheinen. Via VBA lege ich me.Bild.picture = me.txtFeld fest.

Leider erhalte ich Laufzeitfehler 2220: Access kann die Datei 'http://......' nicht öffnen. Ich hatte es auch mal mit dem Webbrowser Steuerelement probiert. Dieses öffnet mir zwar problemlos Webseiten, jedoch auch nicht Direktlinks auf Bilder.


If Me.TxtBildLink > 0 Then

   Dim objWebbrowser As Webbrowser
   Set objWebbrowser = Me.Webbrowser.Object
   objWebbrowser.Object.Navigate2 Me.TxtBildLink

End If


Was mache ich falsch?

LG
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: crystal am November 28, 2016, 12:25:34
Hallo dattek,
probier doch mal, das Bild in einen mini-HTML-Rahmen zu packen, etwa so
<html><a href="<bild>"</html>

lg
crystal
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: datekk am November 28, 2016, 13:15:53
Also...

If Me.TxtBildLink > 0 Then

   Dim objWebbrowser As Webbrowser
   Set objWebbrowser = Me.Webbrowser.Object
   objWebbrowser.Object.Navigate2 "<html><a href=" & me.txtbildlink & "</html>"

End If


... funktioniert nicht. Wie soll ich das "in einen mini-HTML-Rahmen" packen?
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: DF6GL am November 28, 2016, 13:19:08
Hallo,

was passiert, wenn die URL (!, nicht Link)  direkt in das Adressfeld eines Browsers eingegeben wird?

Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: datekk am November 28, 2016, 13:37:57
Weiß es nicht genau was Du meinst mit URL, nicht Link.....
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: datekk am November 28, 2016, 13:38:25
Ihr könnt es ja damit mal ausprobieren: http://www.access-o-mania.de/forum/images/aomlogo.jpg
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: DF6GL am November 28, 2016, 13:47:32
Hallo,

naja, eine URL ist nun mal kein Link und auch kein HTML....


Und dies funktioniert nicht?:

objWebbrowser.Object.Navigate2  "http://www.access-o-mania.de/forum/images/aomlogo.jpg"
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: datekk am November 28, 2016, 14:06:00
Hallo Franz,

wenn ich es so eingebe wie Du es geschrieben hast, funktioniert es tadellos.... Nur wenn ich anstatt der URL den Inhalt des Textfeldes oder den Inhalt einer Variablen ausgebe, erhalte ich den Fehler, obwohl z.B. der Inhalt der Variablen der gleiche ist wie die URL...

Wie kann ich also die oben genannte URL gegen eine Variable tauschen?
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: DF6GL am November 28, 2016, 14:43:01
Hallo,

das Textfeld (und das entspr. Tabellenfeld )  darf nicht als Hyperlink definiert sein....
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: datekk am November 28, 2016, 14:46:30
... ist es auch nicht.. Es sind ganz normale Textfelder....
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: DF6GL am November 28, 2016, 14:54:43
Hallo,


Dim strURL as String
strURL =  "http://www.access-o-mania.de/forum/images/aomlogo.jpg"
.
.
objWebbrowser.Object.Navigate2 strURL
.
.


Es könnte aber auch sein, dass der WB nicht mit Variant zurecht kommt:

Zitat.
.
If not IsNull(Me!TxtBildLink) Then

   Dim objWebbrowser As Webbrowser
   Set objWebbrowser = Me.Webbrowser.Object
   objWebbrowser.Object.Navigate2 cStr(Me!TxtBildLink)
End If
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: crystal am November 28, 2016, 14:56:06
Hallo,
also bei mir klappt es mit


dim WB As WebBrowser
WB.Navigate2  "http://www.access-o-mania.de/forum/images/aomlogo.jpg"


lg
crystal
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: datekk am November 28, 2016, 17:06:22
Lieber Franz, es geht leider immer noch nicht... Das Webbrowser Steuerelement zeigt immer an "Die Adresse ist ungültig.".

@crystal: Wenn ich Die Adresse so eingebe wie Du, dann läuft es bei mir auch. Ich muss aber die Adresse aus einem Textfeld oder einer Variablen übergeben. Leider schlagen alle Versuche damit leider fehl.

Noch eine Idee?

Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: DF6GL am November 28, 2016, 17:45:27
Hallo,

schreib mal die Variable oder das Textfeld mit Debug.print in den Direktbereich und kopier das hierher.

Debug.Print Me!txtBildLink
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: datekk am November 28, 2016, 17:49:36
Hier das Ergebnis von debug.print:

http://www.access-im-unternehmen.de/fileadmin/images/accessbasics.gif
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: crystal am November 28, 2016, 18:44:25
Hallo,
jetzt klappt's. Sorry - ich hatte die Codeschnipsel aus einer Applikation kopiert, aber nicht vollständig.

Ich habe eine Tabelle1 angelegt, die nur eine Id und ein Textfeld "url" enthält.
In dieses Feld habe ich dann die Werte
http://www.access-o-mania.de/forum/images/aomlogo.jpg
und im 2. DS
http://www.access-im-unternehmen.de/fileadmin/images/accessbasics.gif
eingetragen.

Dann habe ich Formular1 angelegt mit
zwei Textfeldern
Id und url und
einem Webbrowser-Element mit Namen WB1.
In WB1.Steuerelement-Inhalt habe ich eingetragen "fgfg", also irgendeinen Quatsch.

Im Code steht


Option Compare Database
Option Explicit
Public WithEvents WB2 As WebBrowser
'
Private Sub Form_Current()
    WB2.Navigate url
End Sub
Private Sub Form_Load()
    Set WB2 = WB1.Object
End Sub
Private Sub url_AfterUpdate()
    WB2.Navigate url
End Sub


Im ursprünglichen Code hatte ich noch

Public WithEvents HDoc As HTMLDocument

Private Sub WB2_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    If WB2.ReadyState = READYSTATE_COMPLETE Then
        Set HDoc = WB2.Document
    End If
End Sub


weil ich später mit HDoc gearbeitet habe (HDoc enthält den Quelltext).

Etwas seltsam ist:

1. wenn im WB1 als Inhalt nix steht, kommt die Fehlermeldung "Ungültige Adresse..." (wohlgemerkt im Browser-Fenster).
2. wenn in WB1 als Inhalt "fgfg" steht, klappt es.

(WB2 und HDoc habe ich public deklariert, weil ich in verschiedenen Subs darauf zugreife. WithEvents ist nötig, um den ReadyState abfangen zu können. Ist bei dir vermutlich entbehrlich.)

Interessant ist noch, dass die Navigation in WB2 erfolgt, aber in WB1 angezeigt wird.

Egal, Hauptsache es klappt und hilft dir weiter.

lg
crystal
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: datekk am November 29, 2016, 09:06:52
Das ist seltsam.. Sobald im Steuerelementinhalt tatsächlich irgendwas steht, funktioniert es. Danke Crystal.

Leider ist jedoch das Webbrowser Steuerelement nicht so geeignet um nur Bilder anzuzeigen. Es fehlen wie bei einem Bild Steuerelement Funktionen wie "dehnen" oder "zoomen". Weiterhin will ich mich mit dieser Lösung noch nicht so ganz abfinden.

Es muss doch unter Access möglich sein, Bilder aus einer URL anzuzeigen - und zwar als Bilder in einem Bild-Steuerelement....
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: DF6GL am November 29, 2016, 15:14:46
Hallo,

benutze die folgende Funktion (Public in einem Standardmodul), um ein Bild an einer URL in eine Datei herunterzuladen.  Die Datei kann dem Steuerelementinhalt des Bild-Steuerelementes anschließend zugewiesen werden.

Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
ByVal szURL As String, ByVal szFileName As String, _
ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Public Function fktDlPic2File(URL As String, Filename As String)
    fktDlPic2File = URLDownloadToFile(0, URL, Filename, 0, 0)
End Function
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: crystal am November 29, 2016, 15:54:04
Hallo,
nach meiner Kenntnis ist es durchaus möglich, mit HTML-Anweisungen ein Bild in dessen Größe anzupassen und z.B. in einem genau bemessenen Rahmen darzustellen. Das ist dann aber HTML-Programmierung und die URL des Bildes müsste dazu in entsprechende HTM-Statements geschachtelt werden.

Der Ansatz, das Bild einfach herunterzuladen und dann in einem Bild-Steuerelement darzustellen, ist zunächst natürlich einfacher. Aber man muss dann auch noch etwas "Verwaltung" betreiben, um das (bereits gespeichrte) Bild beim nächsten Aufruf des Datensatzes wieder zu finden und darzustellen - oder man müsste es jedesmal als temporäre Datei speichern und anzeigen.

Das muss alles abgewogen werden...

lg
crystal
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: datekk am November 29, 2016, 16:00:56
Ich werde es nach Franz seinem Code von der URL runterladen und die Datei dann in eine FileStream Spalte Streamen und es so in der Datenbank speichern. Also lieben Dank an Euch beide.
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: crystal am November 29, 2016, 16:16:09
Hi datekk,
es ist mir (inzwischen) durchaus klar, dass du eher dazu neigst, Bilder in die Datenbank zu speichern.
Ich persönlich tendiere eher dazu, sie im Filesystem abzulegen und in der Datenbank nur einen Verweis (also Pfad und Namen) zu speichern.
Aber jeder ist seines eigenen Glückes Schmied...

lg
crystal
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: datekk am November 29, 2016, 18:03:35
Hi Crystal,

das würde ich auch so machen, allerdings wird die DB von Mitarbeitern an verschiedenen Standorten genutzt und läuft im Backend nicht mit Access Tabellen sondern mit SQL. SQL bietet sog. FileTables. Diese agieren wie ein extra Verzeichnis, bzw. werden die Dateien tatsächlich in ein extra Verzeichnis, halt auf dem SQL Server abgelegt. Die Filetable speichert Filename, Art, Größe, Speicherort und vergibt noch eine ID pro File. Diese ID lässt sich dann mit einem Datensatz verbinden. Es ist also irgendwie das beste aus allem :)

Bei dem Bildprojekt geht es um kleine Logos von Firmen. Diese Logos sollen im Fenster der Firma mit angezeigt werden. Es sind also keine riesengroßen Datenmengen.

Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: crystal am November 29, 2016, 18:17:49
Hi datekk,
lieben Dank für diese Zusatzinfo!
Gruß
crystal
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: datekk am Juni 02, 2019, 21:43:34
Ich muss das Thema nochmal aufgreifen.

Wenn ich ein Formular erstelle und dort ein Bild Steuerelement zufüge, erscheint ein Explorer-Fenster in dem ich meine Bilddatei zum anzeigen auswählen soll.

Gebe ich dort aber eine URL ein.. z.B. https://www.access-o-mania.de/forum/images/aomlogo.jpg so wird das Bild auch im Steuerelement angezeigt. In den Eigenschaften steht bei Bild dann aber statt aomlogo.jpg aomlogo[1].jpg

Ich bin alle auffindbaren Eigenschaften dieses Steuerelements durchgegangen, nirgends finde ich die anderen Teile der URL...

Wie kann es sein, dass ich beim Einfügen des Steuerelements eine URL angeben kann, später aber nicht mehr. Oder muss man das irgendwie als Array irgendwo übergeben oder als Collection?

Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: Josef P. am Juni 02, 2019, 22:08:24
Hallo!

Stehen die von dir gesuchten Bilder in der Tabelle MSysResources?
... dann hast du das Steuerelement vermutlich die Bildtyp-Eigenschaft auf "Freigegeben" eingestellt.

mfg
Josef
Titel: Re: Bild aus Hyperlink anzeigen
Beitrag von: datekk am Juni 03, 2019, 08:04:34
Kannst Du etwas näher erklären, was das mit der Problemstellung zu tun hat und ggf. aufzeigen, wie man Bilder aus URL-Quellen anzeigen kann?