1

大家好。只是想知道是否有人知道在 MS Access 中的表单上创建迷你图的方法。图表构建器在创建迷你图(很小的图)方面并不能很好地工作。

只是好奇,谢谢!

4

3 回答 3

1

我认为 MS Access 中没有内置任何用于 Sparkline 图表的内容。您必须使用第三方控件并将其与您的应用程序一起部署给所有用户,或者使用 MS Excel 嵌入式控件来显示图表。

于 2009-10-07T18:19:46.767 回答
1

最近 Access 博客上有一个 VBA 驱动的迷你图解决方案:http: //blogs.office.com/b/microsoft-access/archive/2011/02/10/power-tip-add-sparkline-like-图形访问报告.aspx

他们有一个 .mdb 和一个 .accdb 示例文件可用,所以我猜它可以跨多个版本工作。

于 2013-03-19T03:05:26.150 回答
0

我从VBA 驱动的迷你图开始,但不喜欢它看起来分辨率低,而且我不能在连续表单上使用它(它只适用于报表)。我想出的解决方案是在 Excel 中构建图表并将图表图像保存在子文件夹中。然后很容易将图像链接到报告或连续表格上。我的图表每晚都会更新,尽管 Excel 图表构建循环非常快。缓慢的部分是生成图表所需的数据,这可能会因您绘制的图表而异。

我在 Excel 中创建了一个模板,该模板具有我想要的外观和分辨率的图表。我在 Access 中编写了一个 VBA 例程来打开一个 Excel 工作表并循环遍历我想要绘制图表的每条记录。工作表被传递给此函数(如下),该函数加载图表数据记录并将其传递到 Excel,Excel 会自动刷新“SparkChart”对象。然后它将图像保存到子文件夹中。Excel 工作表保持打开状态,并在每个循环中重复使用。我没有在循环中包含该函数。

这是我的图表在 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 视频,解释我如何构建这个数据质量仪表板来绘制数据趋势图表。如果您有兴趣,请告诉我,我可能会被鼓励这样做。

于 2018-06-29T15:42:03.867 回答