MS访问,在VBA中写入查询并在文本框中显示结果

时间:2016-08-29 13:21:07

标签: sql vba ms-access access-vba

我有这个查询可行。

我想在Access VBA中编写此查询,当我执行此查询以在表单中向我显示结果时显示文本字段。 在我的表格上,我有一个名为“结果”的文本框 所以我想在执行此查询时在我的文本框中显示名称为“Result”但是我想在VBA中写这个。怎么做?

SELECT ORDINACIJA.Exam, Count(*) AS total
FROM ORDINACIJA
WHERE ORDINACIJA.Exam='EHO ABDOMENA' AND ORDINACIJA.month='JANUARY'
GROUP BY ORDINACIJA.Exam;

2 个答案:

答案 0 :(得分:2)

你不需要SQL。在VBA中,您可以使用DCount函数:

Dim lngCount As Long

lngCount = DCount("Exam", _
                  "ORDINACIJA", _
                  "ORDINACIJA.Exam='EHO ABDOMENA' AND ORDINACIJA.month='JANUARY'")

Result.Text = lngCount


但更好的解决方案是设置文本框"控制源"属性如下:

=DCount("Exam", "ORDINACIJA", "ORDINACIJA.Exam='EHO ABDOMENA' AND ORDINACIJA.month='JANUARY'")

这样,当表单打开时,文本框的值将是正确的,此外,每当需要更新值时(例如,如果表的数据已更改),只需执行在VBA中关注:

Result.Requery

答案 1 :(得分:0)

您可以将查询分配给字符串变量,然后使用CurrentDB.OpenRecordset执行查询,如下所示:

sub DoMyQuery()
dim S as String
dim R as recordset
  S = "SELECT ORDINACIJA.Exam, Count(*) AS total "& _
      "FROM ORDINACIJA "& _
      "WHERE ORDINACIJA.Exam='EHO ABDOMENA' AND ORDINACIJA.month='JANUARY' "& _
      "GROUP BY ORDINACIJA.Exam;"
  Set R = CurrentDB.OpenRecordset(S)
  ' do what ever needs to be done with data returned here
  R.close
end Sub