MS Access 2003 - Спарклайновые графики в Microsoft Access

Привет, ребята. Просто интересно, знает ли кто-нибудь метод создания графиков спарклайнов в форме в MS Access. Конструктор диаграмм не очень хорошо работает для создания спарклайновых диаграмм (таких маленьких диаграмм).

Просто любопытно, спасибо!


person Justin    schedule 07.10.2009    source источник
comment
Службы отчетов SQL Server бесплатны и поддерживают эту функцию.   -  person Aaron Kempf    schedule 15.01.2011
comment
Аарон, как встроить отчет SQL Server в приложение Access? Если это возможно, это был бы хороший ответ на этот вопрос, если бы не исходный вопросник, а другие, кто пришел к нему.   -  person David-W-Fenton    schedule 17.01.2011
comment
Рассматривали ли вы возможность встраивания таблицы Excel в форму? Я знаю, что это возможно, но понятия не имею, насколько это удобно.   -  person David-W-Fenton    schedule 17.01.2011


Ответы (3)


Я не думаю, что в MS Access есть что-то встроенное для графиков Sparkline. Вы должны использовать сторонний элемент управления и развернуть его вместе со своим приложением для всех пользователей или использовать встроенный элемент управления MS Excel для отображения графика.

person Raj More    schedule 07.10.2009
comment
Я так не думал, потому что никогда не слышал и не читал ничего о доступе к нему. да ладно .... спасибо! - person Justin; 08.10.2009

Совсем недавно в блоге 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, поэтому я предполагаю, что он работает в нескольких версиях.

person Yawar    schedule 19.03.2013
comment
Ссылка больше не работает. Полагаю, вы имели в виду эту идею: accessforums.net/showthread.php?t = 10851 - person Ben; 29.06.2018
comment
@Ben действительно, предоставлено Филиппом Боннарделлом. Спасибо! - person Yawar; 29.06.2018

Я начал с спарклайна на основе VBA, но мне не понравилось, что он выглядел с низким разрешением, и я не мог использовать его в непрерывной форме (работает только с отчетами). Решение, которое я придумал, заключалось в том, чтобы построить диаграммы в Excel и сохранить изображения диаграмм во вложенной папке. Тогда легко связать изображение в отчете или непрерывной форме. Мои диаграммы обновляются каждую ночь, хотя цикл построения диаграмм в Excel выполняется очень быстро. Медленная часть генерирует данные, которые нужны диаграммам, которые могут варьироваться в зависимости от того, что вы рисуете.

Я создал шаблон в Excel, в котором была диаграмма с желаемым мне видом и разрешением. Я написал процедуру VBA в Access, чтобы открыть лист 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, в котором объяснялось бы, как я построил эту панель мониторинга качества данных для отображения тенденций в данных. Дайте мне знать, если вы заинтересованы, и меня могут посоветовать сделать это.

person Ben    schedule 29.06.2018