2016-08-29 46 views
1

我有这个查询可以正常工作。MS访问,在VBA中写入查询并在文本框中显示结果

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

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

虽然编写和运行VBA中的SQL查询是相当简单的,你不能只是简单地将输出(通常是一个二维表或记录集)“打印”到文本字段(通常只保存一个值)。 你可以考虑使用一个GridView,一个列表框或一个拆分窗体,它显示Access datasheetview和UserForm –

+0

但在文本字段中,我只需要一个值。这将是我查询中的总行数。例如,总行数为530.因此在该字段中,它会喊530.这只是统计数据,所以我不需要在数据库中写入数据。那可能吗? – user3788491

+0

检出域聚合函数,特别是DCount和DlookUp。您可以将文本框控件源设置为域聚合函数。 – Fionnuala

回答

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 
+0

MJH,这里写?我是否使用VBA编写代码?什么代码写在文本字段?谢谢 – user3788491

+0

为了清晰起见,我更新了答案。 – MJH

+0

非常感谢我成功 – user3788491

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 
+0

谢谢。好吧,我需要用VBA写这段代码。但是在文本框中写什么代码? – user3788491