Я начал с VBA на базе спарклайна , но мне не понравилось, что он выглядел в низком разрешении, и я не мог использовать его в непрерывной форме (он работает только в отчетах). Решение, которое я придумал, состояло в том, чтобы построить диаграммы в Excel и сохранить изображения диаграмм во вложенной папке. Тогда легко связать изображение в отчете или в непрерывной форме. Мои диаграммы обновляются каждую ночь, хотя цикл построения диаграмм в Excel действительно быстрый. Медленная часть генерирует данные, которые нужны диаграммам, которые могут варьироваться в зависимости от того, что вы составляете.
Я создал шаблон в Excel, в котором была диаграмма с нужным мне видом и разрешением. Я написал подпрограмму VBA в Access, чтобы открыть лист Excel и просмотреть каждую запись, которую я хотел построить. Лист передается в эту функцию (ниже), которая загружает записи данных диаграммы и передает их в Excel, который автоматически обновляет объект SparkChart. Затем он сохраняет изображение в подпапку. Лист Excel остается открытым и повторно используется с каждым циклом. Я не включил функцию в цикл.
Вот как выглядит моя диаграмма в Excel:
Вот пример Спарклайнов, показанных в непрерывной форме:
Public Function fCreateSparklineChart(pDQ_ID As Long, pChartSheet As Object) As Boolean
' Pass in a Dashboard Query ID for data that has already compiled into the top-n
' temp table and the data will be copied to the passed pChartSheet in Excel. This
' will update a chart object, then the chart is saved as a .png file.
Dim strSQL As String
Dim strChartPath As String
Dim rs As DAO.Recordset
On Error GoTo ErrorHandler
' Get chart data from a table that has already been compiled with
' min and max values as percentages so the lowest value is 0
' and the highest value is 100.
strSQL = " SELECT DQ_ID, Trend_Value, " & _
" IIf(Trend_Value=0,0,Null) AS Min_Point, " & _
" IIf(Trend_Value=100,100,Null) AS Max_Point " & _
" FROM " & DASHBOARD_TMP_TABLE & _
" WHERE (DQ_ID=" & pDQ_ID & ") "
strSQL = strSQL & " ORDER BY RowNo "
Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
If rs.RecordCount > 0 Then
pChartSheet.Range("A1").CurrentRegion.Clear
pChartSheet.Range("A1").CopyFromRecordset rs
pChartSheet.ChartObjects("SparkChart").Chart.SetSourceData pChartSheet.Range("rngData")
' Use a filename that includes the record ID.
strChartPath = CurrentProject.Path & "\Images\Sparkline_DQ_ID_" & Format(pDQ_ID, "0000") & ".png"
' Delete the file if it already exists.
DeleteFile strChartPath
' Save the Excel chart as a png file.
pChartSheet.ChartObjects("SparkChart").Chart.Export strChartPath, "png"
fCreateSparklineChart = True
End If
Exit_Function:
Exit Function
ErrorHandler:
fCreateSparklineChart = False
MsgBox "Error #" & err.Number & " - " & err.Description & vbCrLf & "in procedure fCreateSparklineChart of basSparkline"
GoTo Exit_Function
End Function
Я думал о создании видео на YouTube, объясняющего, как я создал эту панель управления качеством данных для составления графика трендов данных. Дайте мне знать, если вы заинтересованы, и меня могут попросить сделать это.