Привет, ребята. Просто интересно, знает ли кто-нибудь метод создания графиков спарклайнов в форме в MS Access. Конструктор диаграмм не очень хорошо работает для создания спарклайновых диаграмм (таких маленьких диаграмм).
Просто любопытно, спасибо!
Привет, ребята. Просто интересно, знает ли кто-нибудь метод создания графиков спарклайнов в форме в MS Access. Конструктор диаграмм не очень хорошо работает для создания спарклайновых диаграмм (таких маленьких диаграмм).
Просто любопытно, спасибо!
Я не думаю, что в MS Access есть что-то встроенное для графиков Sparkline. Вы должны использовать сторонний элемент управления и развернуть его вместе со своим приложением для всех пользователей или использовать встроенный элемент управления MS Excel для отображения графика.
Совсем недавно в блоге Access появилось спарклайновое решение на основе VBA: http://blogs.office.com/b/microsoft-access/archive/2011/02/10/power-tip-add-sparkline-like-graphs-to-access-reports.aspx
У них есть .mdb, а также образец файла .accdb, поэтому я предполагаю, что он работает в нескольких версиях.
Я начал с спарклайна на основе 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, в котором объяснялось бы, как я построил эту панель мониторинга качества данных для отображения тенденций в данных. Дайте мне знать, если вы заинтересованы, и меня могут посоветовать сделать это.