Hallo,
ich habe einen Bericht erzeugt, dessen Code mit „beim Drucken“ ausgeführt wird. Auf diesem Bericht habe ich pro Seite ein Diagramm „selbst“ gebaut (mit der Me.line-Funktion), da die Diagrammfunktion mir nicht das bot was ich wollte. Nun möchte ich die einzelnen „Balken“ des Diagramms labeln. Dazu habe ich mir unsichtbare „Label“ erzeugt, die auf dem Bericht liegen und bei Bedarf sichtbar werden und die Beschriftung des Balkens annehmen. Leider kann ich die Position der Textfelder nicht verändern (label1.left oder label1.top ist nicht zulässig???).
Warum mache ich das so umständlich, statt die Diagrammfumnktion zu nutzen? Die Farben der Digrammbalken sind so wie ich es verstanden habe auf 56 beschränkt. Ich muss aber genaue RGB-Farben angeben können.
Kann mir jemand helfen?
Vielen Dank,
Hannes
Hi,
versuch mal die Labels/Textboxen im Ereignis „Beim Formatieren“ mit x.top, x.left zu verschieben.
Gruss
Joey
Hallo,
danke für die schnelle Antwort und Entschuldigung, das ich erst jetzt reagiere.
Prinzipiell funktioniert das mit der Verschiebung der Textfelder wenn ich es im Ereignis „Beim Formatieren“ versuche. Aber ich hole die Daten über das Ereignis „Beim Drucken“ in den Bericht und damit eben auch die Information wohin die Label verschoben werden sollen. Und ich wüsste auch nicht, wie ich die Information an das Ereignis „Beim Formatieren“ weitergeben könnte.
Gruß, Hannes
Hallo
danke für die schnelle Antwort und Entschuldigung, das ich
erst jetzt reagiere.Prinzipiell funktioniert das mit der Verschiebung der
Textfelder wenn ich es im Ereignis „Beim Formatieren“
versuche. Aber ich hole die Daten über das Ereignis „Beim
Drucken“ in den Bericht
?? Unklar.
und damit eben auch die Information
wohin die Label verschoben werden sollen. Und ich wüsste auch
nicht, wie ich die Information an das Ereignis „Beim
Formatieren“ weitergeben könnte.
Hol halt auch in diesem Ereignis die (benötigten) Daten in den Bericht.
Normalerweise „holt man Daten in den Bericht“ über die Datenherkunft (Tabelle, Abfrage) oder „feste Werte“ auch über den Openargs-Parameter und Zuweisung an Berichtsfelder/Variablen im Open-Ereignis des Berichtes.
Viele Grüße vom Bodensee
Franz, DF6GL
Hallo,
ich hatte versucht, die Datensätze auch in dem Ereignis „Beim_Formatieren“ in den Bericht zu laden, das hat aber nicht geklappt.
Ich poste mal den Code, der hinter dem Bericht steht, vielleicht ergibt sich daraus eine Möglichkeit. Bin für jegliche Hilfe und Ratschläge sehr dankbar.
Gruß, Hannes
Option Explicit
Option Compare Database
Public Function FileExists(ByVal BildPfad As String) As Boolean 'DatNameundPfad einsetzen
FileExists = (Dir$(BildPfad) „“)
End Function
Private Sub Detailbereich_Print(Cancel As Integer, PrintCount As Integer)
Dim Pfad As String, BildPfad128 As String, BildPfad256 As String, BildPfad1024 As String, keinBild As String
Dim strFndKurz As String
Dim FarbeLinie As Long, v As Long
Dim x As Double, y As Double
Me.ScaleMode = 7
Pfad = CurrentProject.Path
keinBild = Pfad & „\Magnetikbilder“ & „keinBild.png“
If Not IsNull(Me.Abkuerzung) Then
strFndKurz = Me.Abkuerzung
Else
strFndKurz = „ZZ“
End If
BildPfad128 = Pfad & „\Magnetikbilder“ & strFndKurz & Me!Jahr & „_an_“ & Me!Anomalie & „_128.png“
If FileExists(BildPfad128) = False Then
Me!PicAnzeige128.Picture = keinBild
Else
Me!PicAnzeige128.Picture = BildPfad128
End If
BildPfad256 = Pfad & „\Magnetikbilder“ & strFndKurz & Me!Jahr & „_an_“ & Me!Anomalie & „_256.png“
If FileExists(BildPfad256) = False Then
Me!PicAnzeige256.Picture = keinBild
Else
Me!PicAnzeige256.Picture = BildPfad256
End If
BildPfad1024 = Pfad & „\Magnetikbilder“ & strFndKurz & Me!Jahr & „_an_“ & Me!Anomalie & „_1024.png“
If FileExists(BildPfad1024) = False Then
Me!PicAnzeige1024.Picture = keinBild
Else
Me!PicAnzeige1024.Picture = BildPfad1024
End If
Me!Koordinaten = Me!XLOK & " / " & Me!YLOK & " / " & Me!ZLOK
x = 1.1
y = 5
'((***ScaleBar bauen Anfang****))
Me.DrawWidth = 0.7 ’ Breite der Linie (in Pixeln). Hinweis: Einige Drucker akzeptieren keine ungeraden Zahlen.
FarbeLinie = rgb(0, 0, 0) ’ Linie schwarz darstellen.
Me.Line (x - 0.2, 5)-Step(0, 20), FarbeLinie 'senkrechte linie
For v = 0 To 20 Step 2
Me.Line (x - 0.4, 5 + v)-Step(0.2, 0), FarbeLinie 'waagerechte Linien
Next v
For v = 0 To 19 Step 2
Me.Line (x - 0.3, 6 + v)-Step(0.1, 0), FarbeLinie 'waagerechte Linien
Next v
'((***ScaleBar bauen Ende****))
Dim pstrSQL As String, strrgb As String, Farbe As String
pstrSQL = „SELECT * FROM SuszWert WHERE Anomalie = " & Me.ID & " ORDER BY Untergrenze“
Dim rs As New ADODB.Recordset
rs.Open pstrSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
SuszWertDesc.Caption = „“
Farbwerte.Caption = „“
Dim LayerIndex As Integer
Dim r As Long, g As Long, B As Long, Ugr As Long, Dicke As Long
'hide boxes until data found
Dim iBox As Integer
For iBox = 1 To 10
Me(„layer“ & iBox).Visible = False
Next
LayerIndex = 0
With rs
If Not .EOF Then
.MoveFirst
Do While Not .EOF
LayerIndex = LayerIndex + 1
'((***Rechtecke bauen))
If Not IsNull(.Fields(„Farbe“)) Then
Farbe = .Fields(„Farbe“)
Else
Farbe = „weiß“
End If
Dim rsrgb As New ADODB.Recordset
strrgb = „SELECT ColorList.Farbe, ColorList.R, ColorList.G, ColorList.B FROM ColorList WHERE ColorList.Farbe = „““ & Farbe & „“""
rsrgb.Open strrgb, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
r = rsrgb.Fields(„R“)
g = rsrgb.Fields(„G“)
B = rsrgb.Fields(„B“)
Ugr = .Fields(„Untergrenze“)
Dicke = .Fields(„Dicke“)
Me.Line (x, y)-Step(1, Dicke / 5), rgb(r, g, B), BF
Farbwerte.Caption = Farbwerte.Caption & "R " & Format(rsrgb.Fields(„R“)) & ", "
Farbwerte.Caption = Farbwerte.Caption & "G " & Format(rsrgb.Fields(„G“)) & ", "
Farbwerte.Caption = Farbwerte.Caption & "B " & Format(rsrgb.Fields(„B“)) & ", "
Farbwerte.Caption = Farbwerte.Caption & "y " & y & vbCrLf & vbCrLf & vbCrLf
Set rsrgb = Nothing
y = y + (Dicke / 5)
'((***Rechtecke bauen ENDE))
Me(„layer“ & LayerIndex) = .Fields(„SchichtNr“)
Me(„layer“ & LayerIndex).Visible = True
'(** Textfeld auf der rechten Seite: **)
If .Fields(„SchichtNr“) 0 Then
SuszWertDesc.Caption = SuszWertDesc.Caption & "Schicht " & Format(.Fields(„SchichtNr“)) & ": "
Else: End If
If .Fields(„Schichtansprache“) 0 Then
SuszWertDesc.Caption = SuszWertDesc.Caption & Format(rs.Fields(„Schichtansprache“)) & "; " 'vbCrLf
Else: End If
If .Fields(„Material“) 0 Then
SuszWertDesc.Caption = SuszWertDesc.Caption & "ProbenNr: " & Format(.Fields(„Material“)) & "; " 'vbCrLf
Else: End If
If .Fields(„Farbe“) 0 Then
SuszWertDesc.Caption = SuszWertDesc.Caption & "Farbe: " & Format(.Fields(„Farbe“)) & vbCrLf
Else: End If
If .Fields(„Wert“) 0 Then
SuszWertDesc.Caption = SuszWertDesc.Caption & "ProbenNr " & Format(.Fields(„ProbeNr“)) & ": " 'vbCrLf
SuszWertDesc.Caption = SuszWertDesc.Caption & „Wert: " & Format(.Fields(„Wert“)) & " Magnetische Suszeptibilität (SI)“ & vbCrLf
Else: End If
If .Fields(„Untergrenze“) 0 Then
SuszWertDesc.Caption = SuszWertDesc.Caption & "Untergrenze: " & Format(.Fields(„Untergrenze“)) & " cm, "
Else: End If
If .Fields(„Dicke“) 0 Then
SuszWertDesc.Caption = SuszWertDesc.Caption & "Dicke: " & Format(.Fields(„Dicke“)) & " cm, "
Else: End If
SuszWertDesc.Caption = SuszWertDesc.Caption & vbCrLf & vbCrLf
.MoveNext
Loop
End If
.close
End With
Set rs = Nothing
End Sub
Hallo,
und wo werden nun überhaupt Textfelder verschoben?
Der Code weist nur Bild-Elementen Bilddateien zu und zeichnet Linien , bzw. Rechtecke.
Platzieren kann man Textfelder mit dem Einstellen der Left, Top, Height, Width-Eigenschaften (die sich dann an den Linien/Rechteck-Maßen orientieren müssen).
Viele Grüße vom Bodensee
Franz, DF6GL
Hi hi,
nach dem Zeichnen der Rechtecke möchte ich gerne mittig in die Rechtecke Zahlen schreiben. Bei dem durch die Rechtecke erzeugten „Diagramm“ handelt es sich um die Darstellung einer geologischen Bohrung - ein Bohrkern von einem Meter Länge. Die einzelnen Rechtecke stellen die verschiedenen geologischen Schichten dar. Die Zahlen liegen unsichtbar auf dem Dokument und werden sichtbar geschaltet und erhalten die Nummer der geologischen Schicht. Bei dem Verschieben der Schichten mit .Left oder .Top erhalte ich immer die Ansage, dass dies nicht zur Verfügung steht. So wie ich das verstanden habe, kann ich dies nicht benutzen, wenn ich „Beim_Formatieren“ nutze zur Ausführung des Codes.
Beste Grüße, Hannes
Hallo,
nach dem ich mir jetzt 4 Tage den Kopf zerbrochen habe, hat es endlich geklappt. Ich habe es geschafft, mir die entsprechenden Datensätze in das Beim_Formatieren Ereignis zu laden und dann klappt alles wunderbar. Vielen Dank für all die Ratschläge.
Beste Grüße, Hannes