Neuigkeiten:

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

Mobiles Hauptmenü

Bilder verwenden und kopieren aus Access Formular

Begonnen von Lisa0011, August 29, 2011, 11:09:11

⏪ vorheriges - nächstes ⏩

Lisa0011

Hallo zusammen  :)

Ich bräuchte da mal dringend Hilfe bei nem Access Formular  ??? ???

Ich erstelle zur Zeit eine Datenbank, die internen Zwecken dienen soll, sprich es soll möglich sein, Informationen für z.B. Angebote oder Ähnliches aus dem Forum zu nutzen. Da wir meistens zusätzlich mit Bildern arbeiten, würde ich gerne auch Bilder mit in das Formular nehmen. --> Soweit kein Problem..das Bild ist drin, aber leider kann ich das Bild nicht rauskopieren und z.B. für Word oder Ähnliches benutzen. :-\

Hat da zufällig jemand ne Idee, wie man das Bild nicht nur angezeigt wird, sondern wie ich es auch verwenden/ rauskopieren kann?

Ich wäre euch sehr sehr sehr dankbar   :D  :)

Jonny

Hallo,
ich speicher die Bilder ungern in Acc sondern speicher nur den Pfad und Dateinamen.

Um das Bild dann anzuzeigen kannst Du folgendes als Beispiel machen.

Private Sub Form_Current()
    If Not IsNull(PfadDatei1) Then PlatzhalterBild1.Picture = PfadDatei1
End Sub

Hier ist der komplette Pfad und Dateiname im Feld PfadDatei1 gespeichert.
Im Form gibt es das ungebundene Feld PlatzhalterBild1.

Beim Anzeigen wird das Bild in das Feld angezeigt.

Das hat zwei Vorteile:
1. Deine DB wird nicht so groß.
2. Das Bild steht überall (also auch für Word etc.) zu Verfügung.

Gruß

Johann

Lisa0011

Vielen lieben Dank für Deine schnelle Antwort.. :)

leider bin ich doch noch ein ziemlicher Amateur in Sachen Acces.. :(
Wenn ich (umzu Visual Basis zu kommen) z.B. beim Klicken wähle kommt:
Private Sub Bild__Click()
(bei Dir steht da aber Private Sub Form --> mach ich da schon was falsch?)

Könnte vllt. erklären, warum bei der der Pfadeingabe eine Fehlermeldung kommt?

Ach und eins noch.. ist es mit  deinem Vorschlag denn auch möglich, bei jedem Datensatz ein anderes Bild zu benutzen?

schonmal vielen lieben dank, dass du dich hier mit nem Anfänger rumschlagen musst  :-[

Jonny

Hallo Lisa,
da müssen wir halt etwas weiter vorn beginnen.

Erstmal brauchst du in deine Tabelle ein Textfeld für den Dateinamen (natürlich komplett mit Laufwerk und Pfad).
Dadurch hast Du die Möglichkeit immer unterschiedliche Bilder zu haben.

Im Formular machst Du das ungebundene Feld für das Bild.

Bei den Formulareigenschaften (nicht die Eigenschaften vom Feld) hast du das Ereignis "Beim Anzeigen".
Hier kommt der VBA-Code rein.

Gruß

Johann

Lisa0011

So.. ich sehe Licht am Ende :P

nur nochmal zum Verständis (falls falsche Angaben dabei, nicht wundern :P)

Ich habe in der Tabelle ein Feld angelegt. Hab es beispielsweise Dateiname genannt. (nur zum Test)
Weiterhin habe ich in dem Formular ein Textfeld angelegt. (zum Test einfach mal Bild genannt)
In das neue Feld "Dateiname" habe ich nun bei einem Datensatz den Pfad eingegeben.

--> Dann die Formulareigenschaften geöffnet -> Beim Anzeigen --> VBA:
If Not IsNull(Dateinamen) Then Bild = Dateiname
eingegeben...

Da kann leider irgendwas noch nicht hinhauen..ich hoffe, ich liege nicht voll daneben? :)  :-[

(immer wieder: danke, danke danke :) )

Jonny

Das wird was, behaupte ich jetzt einfach mal.

War von mir nicht gut beschrieben. Im Form nimmst du kein Textfeld sondern aus der Toolbox ein Bild.
Der Assi will dann von dir ein Bild haben. Nimm einfach irgendeins. Bei den Eigenschafte löscht du den
bei der Zeile Bild das Bild weg. Als Namen für das Feld nimmst du dann Bild.

Danach sollte es klappen.

Gruß

Johann

Lisa0011

Soweit habe ich alles abgeändert. Bekomme aber von VBA immer noch eine Fehlermeldung

If Not IsNull(Dateinamen) Then Bild = Dateiname
(ist gelb hinterlegt ab: Bild = Dateiname)

stimmt da noch iwas nicht dran? eigentlich müsste ich soweit alles nach deiner Anleitung gemacht haben :)

Jonny

Hallo Lisa,
Bild.Picture = Dateiname

das muss es sein.

Gruß

Johann

DF6GL

Hallo,

es wäre gut, den kompletten Code zu posten...


Weiterhin sollten die Steuerelemente mit expliziten Verweis auf das akt. Form(-Objekt)  (Me) versehen werden. Und am Besten noch testen, ob der DateiPfadname auch wirklich existiert:


Sub Form_Current()
If Dir(nz(Me!Dateiname,"~~~~") )  <> "" Then
  Me!Bild1.Visible=true
  Me!Bild1.Picture = Me!Dateiname
Else
  Me!Bild1.Visible=false
End If
End Sub


Dabei ist

Me!Dateiname   das Form-Textfeld, in dem der (komplette) PfadDateiname des Bildes steht
Me!Bild1  der Name des Bild-Steuerelementes

Lisa0011

Guten Morgen zusammen  :)

Ich bin euch wirklich super dankbar, dass ihr euch damit rumschlagt..

Leider funktioniert es immer noch nicht  :(
Vielleicht liegt es auch daran, dass ich das falsche Element benutze um das Bild anzuzeigen.. Ich wähle einfach "Bild" und dann schließe ich das Feld ohne mir ein Bild auszusuchen.
Und verstehe ich das richtig, dass ich das Feld: Me!Dateiname nennen soll? ein "!" ist doch aber in der Tabelle gar nicht zulässig?

Schonmal sorry für die vllt. peinlichen Fragen  :P :-[
Aber mein Gefühl bleibt, dass ich vllt. nur noch ein kleines bisschen von dem Ergebis entfernt bin. :)

DF6GL

Hallo,



Dateiname  ist ein Tabellenfeld sowie ein Textfeld in einem Formular, das an die Tabelle gebunden ist (Datenherkunft: Tabellenname) . In diesem Form-Textfeld steht der komplette PfadDateiname der Bilddatei.  Bild1  ist der Name des Bild-Steuerelementes, das im Formular eingebaut wurde.

Der ganze Code stellt die Ereignisprozedur dar, die bei Auftreten des Form-Ereignisses "Beim Anzeigen" ausgeführt wird.

Me  steht für das aktuelle Form, in dem der Code ausgeführt wird. Das "!"-Zeichen ist ein Trennzeichen (mit etwas besonderer Bedeutung) zwischen dem Fomular(-Objekt) und dem Steuerelement(-Objekt).


Die Namen der Steuerelemente findest Du in den Eigenschaften des Steuerelementes unter "Andere/Name".


Lisa0011

Hallo :)

leider immer noch keine positiven nachrichten...

Das habe ich soweit alles verstanden.
Also ich habe bei mir auch "Me" stehen oder muss ich dort den Namen meines Formulars benutzen.. heißt mein Formular also z.B. Test muss ich dann

If Dir(nz(Test!Dateiname,"~~~~") )  <> "" Then
  Test!Bild1.Visible=true
  Test!Bild1.Picture = Test!Dateiname

nehmen oder bleibt es bei

If Dir(nz(Me!Dateiname,"~~~~") )  <> "" Then
  Me!Bild1.Visible=true
  Me!Bild1.Picture = Me!Dateiname

Und zur Frage mit dem Bild Element.. da ist es auch richtig einfach das Bild-Element zu wählen und dann zu schließen, so dass das Feld vorhanden ist?

(Ich hoffe ihr könnt mir nochmal helfen, würde mich tierisch freuen, wenn wir es schaffen  :P und hoffe ihr seid noch nicht genervt  :( :) )

Jonny

Hallo Lisa,

ich nehme immer diesen Code ohne die Funktion NZ:

If Dir(Me!Dateiname)  <> "" Then 
      Me!Bild1.Visible=true 
      Me!Bild1.Picture = Me!Dateiname
Else 
     Me!Bild1.Visible=false
End If

Das Me steht stellvertretend für den aktuellen Formularnamen.
Willst du mit Nz arbeiten mußt du die ~~~~ ersetzten.

Gruß

Johann

Lisa0011

Hallo Jonny  :)

jetzt wirds richtig peinlich: was ist denn Nz? :P bzw. wofür steht das?
Also würde ich dann "Me" durch meinen  Formularnamen ersetzen?  :)

Grüße

DF6GL

Hallo,

Me bleibt stehen , wie es ist. Lediglich die Namen der Steuerelemente mußt Du richtig einsetzen, so, wie Du sie genannt hast, oder der Steuerelement-Assistent....

Wie ch schon gesagt habe: Schau in die Eigenschaften der jeweiligen Steuerelemente unter "Andere"Name", dort steht der Name , den Du auch im Code einsetzen mußt. Bei meinem Code ist also z B.   Bild1   zu ersetzen mit dem Namen, den Du in der Name-Eigenschaft lesen kannst.


Dito für Dateiname usw...


NZ()    ist eine Funktion, die ein Steuerelement  (oder eine Variant-Variable) dahingend testet, ob deren Wert NULL ( also nix, leer, undefiniert) ist.  Es könnte ja sein, dass in der Tabelle in "Dateiname" nix drinsteht, denn dann geht der Code "in die Hose", sprich , es tritt ein Laufzeifehler auf, der eben mit NZ() abgefangen wird, weil diese Funktion den angegebenen Wert (bei mir den willkürlichen Wert "~~~~", weil es solch einen Dateinamen vermutlich nicht auf Deiner Festplatte gibt.)  bei leerem Textfeld  zurückliefert. Damit kann die DIR-Funktion versuchen, diesen Dateinamen zu finden, den es aber nicht geben wird.
Jedenfalls tritt so dann kein Laufzeitfehler mehr auf.