Диаграммы / графики в Access VBA - PullRequest
0 голосов
/ 19 сентября 2018

Как инициализировать диаграмму с данными в MS Access VBA?В конце концов я нашел предложение здесь , которое с небольшой модификацией сделало intellisense счастливым и привело к следующему коду:

Dim objchart As Chart

Dim arrData(3, 1) As Double

arrData(0, 0) = 1
arrData(1, 0) = 1
arrData(2, 0) = 1
arrData(3, 0) = 1

arrData(0, 1) = 1
arrData(1, 1) = 1
arrData(2, 1) = 1
arrData(3, 1) = 1

Set objchart = Me.Chart1

With objchart
    .ChartTitle = "test"
    .ChartType = acChartLine
    .ChartValues = arrData
End With

Но это выдает

Ошибка компиляции: Несоответствие типов

в строке

    .ChartValues = arrData

Я пробовал это как "row-first" (arrData (1, 3)), а также просто передавал в одном массиве(arrData (3)).Это приводит к одной и той же ошибке несоответствия типов.В то время как intellisense говорит мне, что Chart1 существует, и что .ChartValues ​​является допустимым полем, он не сообщает мне, какой объект он ожидает.Я много гуглил по этому поводу и выдохся.Лучшими ссылками, которые я мог найти для Access VBA, были Создание приложений VBA и this , но они не вдавались в подробности в диаграммах или объектах ChartObjects.

Очевидно, я бы хотел обойти эту ошибку несоответствия типов.Еще лучше было бы, если бы кто-то мог дать мне несколько общих советов о том, как это сделать, когда самая близкая вещь к языку ссылка молчит о той части языка, которая вам нужна.

1 Ответ

0 голосов
/ 20 сентября 2018

Это один из способов сделать это.Во-первых, создайте новую таблицу и добавьте некоторые данные:

Private Sub Form_Load()

  Dim db As DAO.Database
  Dim rec As Recordset
  Dim tbl As DAO.TableDef

  Set db = CurrentDb
  Set tbl = db.CreateTableDef("tbl")

  With tbl
    .Fields.Append .CreateField("first", dbInteger)
    .Fields.Append .CreateField("second", dbInteger)
  End With

  db.TableDefs.Append tbl
  db.TableDefs.Refresh

  Set rec = db.OpenRecordset("tbl")

  rec.AddNew
  rec("first").Value = 0
  rec("second").Value = 2
  rec.Update

  rec.AddNew
  rec("first").Value = 1
  rec("second").Value = 2
  rec.Update

  rec.AddNew
  rec("first").Value = 2
  rec("second").Value = 2
  rec.Update

  rec.AddNew
  rec("first").Value = 3
  rec("second").Value = 2
  rec.Update

  Set rec = Nothing
  Set db = Nothing

End Sub

Во-вторых, построите график этих данных, ссылаясь на новую таблицу:

Private Sub command0_click()

  Dim objchart As Chart
  Set objchart = Me.Chart1

  With objchart
    .ChartTitle = "tbl: second ~ first"
    .RowSource = "tbl"
    .ChartAxis = "first"
    .ChartValues = "second"
  End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...