Member
Beiträge: 19
| Hallo Karl,
Sorry, ich arbeite mit Access2007.
Zum Ablauf:
Zuerst zeige ich die Auswertung in einem Formular an. Wo wie gesagt die Formatierung der Datentabelle mittels VBA funktioniert.
Der Bericht wird dann über ein Button im Formular aufgerufen. Hinter dem Button steht folgender Code:
Private Sub Befehl4_Click()
Application.Echo False
DoCmd.OpenReport "ber_dia_periode", acViewDesign
Reports![Ber_Dia_periode]!ole_absolut_linie.RowSource = Forms![For_dia_Periode]!ctr_Sqlstr_Dia1
Reports![Ber_Dia_periode]!ole_absolut_balken.RowSource = Forms![For_dia_Periode]!ctr_Sqlstr_Dia1
Reports![Ber_Dia_periode]!ole_absolut_balken_vk.RowSource = Forms![For_dia_Periode]!ctr_Sqlstr_Dia2
'Reports![ber_diagramme]!ctr_Überschrift.Caption = Forms![For_diagramme]!ctr_Überschrift.Caption
'Reports![ber_diagramme]!ctr_Periode.Caption = Forms![For_diagramme]!ctr_Periode.Caption
'Formatieren der Datentabelle im Diagramm. Hintergrund:
'Egal wie die Herkunftsdaten formatiert wurden, werden diese in der Datentabelle des Diagramms in der "Roh"-version dargestellt
'und müssen somit nach der Zuweisung des RowSource programmtechnisch formatiert werden!
Dim objGraph As Object, objDS As Object, rsData As Recordset
Dim intRowMax As Integer, intColMax As Integer
Dim i As Integer, j As Integer
Set objGraph = Reports![Ber_Dia_periode]!ole_absolut_linie.Object
Set objDS = objGraph.Application.DataSheet
Set rsData = CurrentDb.OpenRecordset(Reports![Ber_Dia_periode]!ole_absolut_linie.RowSource)
rsData.MoveLast
intRowMax = rsData.RecordCount
rsData.Close
For i = 0 To intRowMax - 1
For j = 0 To ErmPer
objDS.cells(i + 2, j + 1) = Format(objDS.cells(i + 2, j + 1), "#,###.00")
Debug.Print objDS.cells(i + 2, j + 1)
Next j
Next i
Set objDS = Nothing
DoEvents
objGraph.Refresh
Set objGraph = Nothing
DoCmd.Close acReport, "ber_Dia_Periode", acSaveYes
DoCmd.OpenReport "ber_dia_Periode", acViewPreview
Application.Echo True
End Sub
Hier Kurz zur Erklärung:
Der Bericht besteht aus insges. 3 Diagrammen, wobei nur das Diagramm "ole_absolut_linie" mit einer Datentabelle angezeigt wird.
Die Debug.print_Anweisung dient nur zum Prüfen ob die formatierten Werte übernommen werden. (Was momentan nicht der Fall ist!)
Danke schon mal für Deine Hilfe
Gruß
Willi
Anhänge ---------------- Screenshot's_Dia.docx (51KB - 3 downloads)
|