【问题标题】:MS access, write query in VBA and show result in text boxMS 访问,在 VBA 中编写查询并在文本框中显示结果
【发布时间】:2016-08-29 13:21:07
【问题描述】:

我有这个可以正常工作的查询。

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

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

【问题讨论】:

  • 虽然在 VBA 中编写和运行 SQL 查询相当简单,但您不能简单地将输出(通常是二维表或记录集)“打印”到文本字段中(通常只有一个值)。您可以考虑使用显示 Access 数据表视图和用户窗体的网格视图、列表框或拆分表单之一
  • 但在文本字段中我只需要一个值。这将是我查询的总行数。例如,总行数为 530。所以在该字段中它喊写 530。这只是统计数据,所以我不需要在数据库中写入。这可能吗?
  • 查看域聚合函数,尤其是 DCount 和 DlookUp。您可以将文本框控件源设置为域聚合函数。

标签: sql ms-access vba


【解决方案1】:

您不需要 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

【讨论】:

  • MJH,这个要写在哪里?我用 VBA 编写这段代码吗?在文本字段中写什么代码?谢谢
  • 非常感谢我成功了
【解决方案2】:

您可以将他的 Query 分配给一个字符串变量,然后使用 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

【讨论】:

  • 谢谢。好的,我需要用 VBA 编写这段代码。但是在文本框中写什么代码呢?
猜你喜欢
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多