Hallo Accesgemeinde,
Bin dabei in meinem Bericht ein Wasserzeichen zu verwenden (z.B. für Demoversion)
Habe folgenden Code (aus Access für Unternehmer) in den Bericht eingefügt:
20 If Me.OpenArgs Then
30 Me.Picture = "C:\Ordnername\Wasserzeichen.bmp"
40 End If
das klappt hervorragend:
Habe nun das Bild in einer Tabelle (tblBildOLE) gespeichert.
Wie muss ich den Code in Zeile 30 ändern, um das Bild aus der Tabelle zu holen? Mit Dlookup bekomme ich eine Fehlermeldung (Error-Code 2176).
Gruß Hubert
Hallo
Wie liegt das Bild denn in der Tabelle vor? Als OLE (samt Server), als binäres Abbild oder nur als Dateipath? Der Name der Tabelle lässt auf erstere zwei vermuten.
Hallo daolix,
ich habe die Tabelle "tblBildOLE" wie folgt aufgebaut:
Bild_ID --> PrimeryKey, AutoWert
Bild_Ole--> OLE-Objekt
Bild_Bemerkungen--> Text
In einem Formular kann ich die Grafik ansehen.
Ich dachte zuerst, ich kann einfach mit dem Code:
Me.Picture = DLookup("Bild_Ole", "tblBildOLE")
auf das Bild verweisen.
Das brachte den besagten Fehler (Fehlernr. 2176). Ich vermute, das dieser Befehl nicht dazu geeignet ist, was ja auch logisch ist, da es sich dabei ja um den Datentyp "String" handeln muss.
Nur habe ich in meiner Literatur den passenden Befehl noch nicht gefunden.
Gruß Hubert
Hi,
ZitatHabe nun das Bild in einer Tabelle (tblBildOLE) gespeichert.
warum hast du das getan, was versprichst du dir davon?
Es gibt die Möglichkeit das Bild als Binärdatei in einem OLE-Objekt zu speichern und dies auch wieder zu extrahieren, um es schließlich als Hintergrundbild einsetzen zu können (Quelle: MS-Office-Forum, Access Code-Archiv).
Aber wozu der Umstand, warum nicht einfach das Bild (bzw. die Bilder), wenn es denn unbedingt variabel sein muss, mit der Anwendung ausliefern bzw. in einem Netzwerkordner ablegen?
Hallo MaggieMay,
Nun ja, wenn ich das Bild mit der Anwendung ausliefere, könnte man ja das Bild theoretisch ändern?
Falls meine Anwendung mal so weit sein sollte;-)
Nun ja, ich dachte, die Anwendung online als Demoversion anzubieten. Da kämme dann im Bericht die Grafik zum tragen.
Wenn das Bild (ist nicht groß, nur 25Kb) in der Tabelle fest hinterlegt ist, wäre es immer mit dabei uns auch vor Missbrauch geschützt. (So dachte ich mir jedenfalls).
Da ich mich mit den OLE-Objekten bislang noch nicht befasst habe, weiß ich natürlich nicht, wie groß der Aufwand ist.
Vielleicht gibt es auch noch alternativen?
Gruß Hubert
Hallo
die Frage war eher wie du das Bild in die Tabelle bringst. Wenn es sich um ein echtes OLE-Object handelt ist das Bildsteuerelemnt das falsche Ausgabecontrol.
Wenn es ein Abbild einer Bilddatei ist, must du entweder die datei bei jedem zugriff temporär auf die Festplatte auslagern oder im Speicher ein bmp erzeugen und das ausgelesene Array der Picturedata-Eigenschaft des Bildcontrols zuweisen.
Wenn du jetzt access neuergleich 2007 hast könntest du auch es mit den anlagefeldern probieren.
Hallo daolix,
Ouh... Jetzt wird es für mich kompliziert :o
Also ich benutze Access 2010.
Habe mal in der Bildtabelle ein extra Feld angelegt, und das Bild zugewiesen. Wie muss ich da in dem Fall weiter vorgehen?
Die Frage, ob das Bild dynamisch eingestellt werden muss (abhängig wovon?) hast du noch nicht beantwortet.
Warum kann es nicht fest in den Bericht integriert werden? Es ist nirgendwo zu lesen, dass es variabel sein soll.
Der Gedanke war, die Anwendung praktisch "freizuschalten"
Da es ja mehrere Berichte sind, bräuche ich auf diese Art und Weise nicht nochmal zusätzliche Berichte nur für die Demoversion anzulegen. Beim Aufruf der Berichte wird geprüft, ob die Anwendung freigeschaltet ist oder nicht (OpenArgs True oder False).
Hallo
dann schalte doch dementsprechend das BildControl im Bericht Sichtbar/nichtsichtbar.
@daolix:
Es handelt sich nicht um ein "Bild-Control", sondern um den Berichts-Hintergrund.
Aber auch das (bzw. der) sollte sich abh. vom Freischalt-Mechanismus per VBA beeinflussen lassen.
Hallo MaggieMay und daolix,
@ daolix
Wenn ich Dich richtig verstehe, meinst Du praktisch ein Bild in den Bericht einfügen und dieses sichtbar schalten oder nicht?
@ MaggieMay
Ja genau. Es handelt sich um den Berichtshintergrund. Dieser hat ja den Vorteil, das dieser auf jeder Seite mitgedruckt wird.
Hät nicht gedacht, dass das so kompliziert werden kann. Die OLE-Objekte in einem Formular anzeigen ist ja einfach. Nur blöd, dass das mit dem Hintergrundbild nicht so einfach ist. Muss mal drüber schlafen. Vielleicht fällt mir da noch eine andere Möglichkeit ein.
Gruß
Hallo
wenn immer das selbe Wasserzeichen gezeigt oder nicht gezeigt werden soll, dann erstelle eine bildcontrol mit dem eingebetteten wasserzeichen, setzte visible auf false und werte openargs beim laden aus
if me.openargs =trueOderFalse then me.picruredata = me.DasNichtSichtbareBildcontrol.pictureData
Hallo daolix und MaggieMay.
Ins Bett gehen und da richtige Buch lesen hilft anscheinend. Ich hab´s!!!!! ;)
Musste ich gleich nochmal testen und es hat auf anhieb geklappt.
Das Lösungswort heißt:
Me.PicturePages = 0
für alle Seiten bzw.
Me.PicturePages = 2
für keine Seiten im Ereignis "Beim Öffnen" des Berichts.
Hab das Bild im Bericht eingebettet und eine entsprechende If-Schleife beim öffnen des Berichtes gesetzt.
Vielen Dank euch Zwei´n für eure Mühe.
Und jetzt Gute Nacht.
Hubert
(PS: Jetzt schläfts sich besser) :D
Hi,
du hättest auch gleich von Anfang an sagen können, dass es dir lediglich darum geht, das Hintergrundbild ein- oder auszuschalten. Die Idee, das Bild in einer Tabelle zu speichern, legt nahe, dass du es variabel einstellen willst, bspw. abhängig vom Anwender.