Halli Hallo,
ich hab da mal ne Frage. Ich habe in einem Bericht einen Code eingebaut, mit dem ich ein Bild im Bericht anzeigen lassen möchte. Das hat auch mal funktioniert. Jetzt habe ich das selbe in einer anderen Datenbank versucht und es funzt nicht. Hab ich irgendwas übersehen?
Public Sub form_Current()
BildAktualisieren1
End Sub
Public Sub BildAktualisieren1()
On Error GoTo BildAktualisieren1_Err
Dim strpfad As String
strpfad = Nz(Me!Pfad & Me!VBild, "")
If Dir(strpfad) = "" Then
strpfad = ""
End If
BildAktualisieren1_Exit:
Me!picvorschaubild.Picture = strpfad
Exit Sub
BildAktualisieren1_Err:
MsgBox "Das Bild konnte nicht geladen werden." & vbCrLf & "Fehler-Nr: " & Err.Number & vbCrLf & "Fehler-Beschreibung: " & Err.Description
strpfad = ""
Resume BildAktualisieren1_Exit
End Sub
Private Sub Pfad_Click()
FollowHyperlink Me!Pfad
End Sub
Private Sub picvorschaubild_Click()
End Sub
Function FctNr()
'gibt eine laufende Nummer im Formular zurück
'Anzeige im Formular durch ein Feld mit Steuerelementinhalt: =FctNr()
On Error GoTo FctNr_Error
Me.RecordsetClone.Bookmark = Me.Bookmark
FctNr = Me.RecordsetClone.AbsolutePosition + 1
FctNr_Exit:
Exit Function
FctNr_Error:
If Err.Number = 3021 Then FctNr = 0 'bei neuem DS
Resume FctNr_Exit
End Function
Vielen Dank im Voraus für Eure Hilfe
carman0103
Hallo,
ZitatIch habe in einem Bericht einen Code eingebaut...
Wenn du ganz sicher bist, dass es sich dabei um einen BERICHT handelt, wirst mit ....
Public Sub form_Current()nicht ganz glücklich werden.
Schreib statt dessen Report_Current
Ups, ja das konnte ja nicht gehen. Hab das jetzt geändert, aber es funktioniert trotzdem nicht.
Momentan sieht der Code so aus:
Public Sub Report_Current()
BildAktualisieren1
End Sub
Public Sub BildAktualisieren1()
On Error GoTo BildAktualisieren1_Err
Dim strpfad As String
strpfad = Nz(Me!Pfad & Me!VBild, "")
If Dir(strpfad) = "" Then
strpfad = ""
End If
BildAktualisieren1_Exit:
Me!picbericht.Picture = strpfad
Exit Sub
BildAktualisieren1_Err:
MsgBox "Das Bild konnte nicht geladen werden." & vbCrLf & "Fehler-Nr: " & Err.Number & vbCrLf & "Fehler-Beschreibung: " & Err.Description
strpfad = ""
Resume BildAktualisieren1_Exit
End Sub
Private Sub picbericht_Click()
End Sub
Hi,
ein Bericht hat kein Current-Ereignis, statt dessen musst du das Format-Ereignis des zugehörigen Berichtsbereichs nehmen.
Merke: Ereignisprozeduren sollten stets aus der Entwurfsansicht initiiert werden.
Hallo,
"ein Bericht hat kein Current-Ereignis"
das stimmt so seit A2010 (A2007?) nicht mehr....
Danke für Eure Antworten.
Mit dem, was MaggieMay geschrieben hat komme ich nicht klar, sowas habe ich noch nicht gemacht.
@DF6GL:
Ok, da hast du recht (ab 2007 sogar!), aber das Ereignis tritt nur in der Berichtsansicht auf und ist für diese Aktion nicht geeignet.
@carman0103:
Gehe in den Berichtsentwurf, lass dir die Eigenschaften anzeigen, Register "Ereignis", markiere den Berichtsbereich in dem sich das Bild befindet, wähle beim Ereignis "Beim Formatieren" die Ereignisprozedur und gehe über die drei Punkte in den VBA-Editor.
@MaggieMay
Dankeschön für die Erklärung. Habe dort jetzt meinen Code eingegeben. Aber es passiert immer noch nichts. :'(
Du musst den Bericht in der Seitenvorschau öffnen.
Hab ich ja. Aber das Bild erscheint nicht. Muss ich bei dem Code irgendwas anders machen?
Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)
End Sub
Public Sub Report_Current()
BildAktualisieren1
End Sub
Public Sub BildAktualisieren1()
On Error GoTo BildAktualisieren1_Err
Dim strpfad As String
strpfad = Nz(Me!Pfad & Me!VBild, "")
If Dir(strpfad) = "" Then
strpfad = ""
End If
BildAktualisieren1_Exit:
Me!picbericht.Picture = strpfad
Exit Sub
BildAktualisieren1_Err:
MsgBox "Das Bild konnte nicht geladen werden." & vbCrLf & "Fehler-Nr: " & Err.Number & vbCrLf & "Fehler-Beschreibung: " & Err.Description
strpfad = ""
Resume BildAktualisieren1_Exit
End Sub
Private Sub picbericht_Click()
End Sub
ZitatHabe dort jetzt meinen Code eingegeben.
Nein, hast du nicht.
Fällt dir hierbei gar nichts auf:
Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)
End Sub
Public Sub Report_Current()
BildAktualisieren1
End Sub
;D
Ich bin leider kein VBA-Genie. :-D
Ich schätze mal, dass das Public Sub weg muss ?
Ich dachte eher daran, dass die Prozedur leer ist... ::)
Also so?
Private Sub Detailbereich_Format()
End Sub
Public Sub Report_Current()
BildAktualisieren1
End Sub
Die Prozedur beginnt mit "Private Sub" und endet mit "End Sub" und dazwischen passiert nichts.
Ist das wirklich so schwer zu verstehen???
Wie gesagt, ich rede hier vom Format-Ereignis.
Wie gesagt, bin da nicht so bewandert. Ich hab es mal so versucht, aber das geht auch nicht.
Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)
BildAktualisieren1
End Sub
Public Sub BildAktualisieren1()
On Error GoTo BildAktualisieren1_Err
Dim strpfad As String
strpfad = Nz(Me!Pfad & Me!VBild, "")
If Dir(strpfad) = "" Then
strpfad = ""
End If
BildAktualisieren1_Exit:
Me!picbericht.Picture = strpfad
Exit Sub
BildAktualisieren1_Err:
MsgBox "Das Bild konnte nicht geladen werden." & vbCrLf & "Fehler-Nr: " & Err.Number & vbCrLf & "Fehler-Beschreibung: " & Err.Description
strpfad = ""
Resume BildAktualisieren1_Exit
End Sub
Private Sub picbericht_Click()
End Sub
Wie würdest Du denn den Code umbauen?
"Pfad" und "VBild" sind Steuerelemente im Detailbereich des Berichts und "picbericht" befindet sich ebenfalls dort?
Ja, ganz genau
Teste den Code im Unterbrechungsmodus, indem du vor dem Öffnen des Berichts einen Haltepunkt in die Prozedur setzt. Danach geht es mit F8 von Zeile zu Zeile. Schau dir an, ob die Zusammensetzung des Bildpfades korrekt ist oder was sonst noch passiert.
Ich hab das mal versucht. Ohne Ergebnis... :'(
Dann lade eine Beispiel-DB hoch - komprimiert und gezippt - damit wir der Sache auf die Spur kommen.
Hi,
ZitatIch hab das mal versucht. Ohne Ergebnis... :'(
Ohne Ergebnis heißt was genau bitte ... ?
War die Variable strpfad mit Daten gefüllt oder war sie beim Durchspringen des Codes leer?
Stehen in den beiden Feldern Pfad und VBild
am Bericht Daten drin, wenn dieser angezeigt wird oder ist eines oder beide leer?
Wenn was drin steht, was steht genau in Pfad drinnen?
Was steht genau in VBild drinnen?
Woher kommen die Daten in Pfad und VBild ?
Wenn sie aus der Datenherkunft des Berichts kommen sollten - sind die Daten in der zugrundeliegenden Abfrage / oder Tabelle für den aktuell angezeigten Datensatz vorhanden?
Ich hab den Fehler gefunden. Im Feld VBild treffe ich nur die Auswahl der Bildnummer zu einem Datensatz. In diesem Feld steht noch keine Dateierweiterung dabei. Die wird in der Abfrage über ein weiteres Feld hinzugefügt. Also habe ich dieses Feld in den Code eingesetz und siehe da, nun geht es. Manchmanl steht man eben voll auf dem Schlauch ;). Aber vielen Dank für Eure Hilfe.
Vielen Dank nochmal für die Hilfe
Hallo,
schön dass dir geholfen werden konnte.
Wenn du die Daten in einer Abfrage zusammenstellst, kannst du die Dateiendungen auch gleich in der Abfrage an den Inhalt des Feldes VBild anhängen, heißt du benötigst nicht unbedingt ein zusätzliches Feld im Formular oder im Code.
In der Abfrage schreibst du dann sinngemäß:
VBildX:[VBild] & ".jpg" ... wenn du immer die gleichen Endungen im Einsatz hast (hier eben *.jpg)
oder
VBildX:[VBild] & "." & [FeldMitDerDateiendung] ... wenn du diese Endungen in einem eigenen Feld erfasst hast
Am Formular verwendest du dann statt VBild das Feld VBildX und ebenso im Code
Genau so hab ich das ja auch gelöst. Aber danke für den Hinweis.