大家好。只是想知道是否有人知道在 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-图形访问报告.aspx
他们有一个 .mdb 和一个 .accdb 示例文件可用,所以我猜它可以跨多个版本工作。
我从VBA 驱动的迷你图开始,但不喜欢它看起来分辨率低,而且我不能在连续表单上使用它(它只适用于报表)。我想出的解决方案是在 Excel 中构建图表并将图表图像保存在子文件夹中。然后很容易将图像链接到报告或连续表格上。我的图表每晚都会更新,尽管 Excel 图表构建循环非常快。缓慢的部分是生成图表所需的数据,这可能会因您绘制的图表而异。
我在 Excel 中创建了一个模板,该模板具有我想要的外观和分辨率的图表。我在 Access 中编写了一个 VBA 例程来打开一个 Excel 工作表并循环遍历我想要绘制图表的每条记录。工作表被传递给此函数(如下),该函数加载图表数据记录并将其传递到 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 视频,解释我如何构建这个数据质量仪表板来绘制数据趋势图表。如果您有兴趣,请告诉我,我可能会被鼓励这样做。