MS Access 2003 - Microsoft Access中的迷你图

时间:2009-10-07 17:01:00

标签: ms-access vba charts ms-access-2003

嘿伙计们。只是想知道是否有人知道在MS Access中的表单上创建迷你图的方法。图表构建器在创建迷你图表(图表很小)方面效果不佳。

好奇,谢谢!

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

最近在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示例文件,所以我猜它适用于多个版本。

答案 2 :(得分:0)

我从VBA-powered sparkline开始,但不喜欢它看起来分辨率很低,而且我不能以连续形式使用它(仅适用于报表)。我想到的解决方案是在Excel中构建图表并将图表图像保存在子文件夹中。然后,很容易将图像链接到报表或连续表单上。我的图表每晚更新一次,尽管Excel图表构建循环确实非常快。最慢的部分是生成图表所需的数据,该数据可能会根据您所绘制的图表而有所不同。

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

这是我的图表在Excel中的样子:

Excel file with chart

以下是以连续形式显示的迷你图的示例:

Data Quality Dashboard example

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视频,解释如何构建此数据质量仪表板以绘制数据趋势图。如果您有兴趣,请告诉我,我们可能会受到鼓舞。