我有两个相关的问题。首先,如何将查询结果的值分配给文本框?
这是我目前分配给按钮点击事件的代码:
Private Sub SeatCount_Click()
Dim db As Database
Dim qdf As QueryDef
Dim sql As String
Dim rs As Recordset
sql = "SELECT Count([Switch Port Matrix].[End Device Type]) AS [CountOfEnd Device Type] FROM [Switch Port Matrix] WHERE ((([Switch Port Matrix].[End Device Type])=""Seat"" Or ([Switch Port Matrix].[End Device Type])=""6AB"") AND (([Switch Port Matrix].Enabled)=1)) GROUP BY [Switch Port Matrix].[Switch Name] HAVING ((([Switch Port Matrix].[Switch Name]) Like """ & Me![Switch Name] & """))"
Set db = CurrentDb()
With db
On Error Resume Next
.QueryDefs.Delete "SeatCount"
Set qdf = .CreateQueryDef("SeatCount", sql)
DoCmd.OpenQuery "SeatCount"
.QueryDefs.Delete "SeatCount"
End With
db.Close
qdf.Close
End Sub
这有效,但它会打开查询并在数据表中显示结果。我想要做的是在表单上的文本框中显示结果,而不是单击按钮并查看数据表。首先,如何将结果检索为字符串而不是执行查询以打开数据表?我在网上发现的似乎指向使用dlookup而不是执行查询,因为我已经写了,但是从我发现的,dlookup似乎适合运行简单的查询,我没有找到任何表明你可以添加更复杂的要求,例如count和groupby。
其次,如何在打开表单时执行查询?我假设我想触发它在一个事件上运行但是在文本框的属性下似乎没有适当的事件。
我是一名网络工程师,不是程序员或数据库分析师,但我已经涉足到所有这些工作都被丢弃在我的腿上。如果有人能帮助一个苦苦挣扎的工程师,我当然会很感激。
答案 0 :(得分:3)
在这种情况下,最好使用DCount:
=DCount("End Device Type","Switch Port Matrix","[End Device Type] IN ('Seat','6AB') AND [Enabled]=1 AND [Switch Name] = '" & [Switch Name] & "'")
您可以直接将文本框的控件来源设置为此语句。
然而,供将来参考:
Private Sub SeatCount_Click()
Dim db As Database
Dim rs As DAO.Recordset ''Requires reference to Microsoft DAO x.x Library
Dim sSQL As String
sSQL = "SELECT Count(s.[End Device Type]) AS CountOfEndDeviceType " _
& "FROM [Switch Port Matrix] s " _
& "WHERE s.[End Device Type] IN ('Seat,'6AB') AND s.Enabled=1 " _
& "s.[Switch Name] = '" & Me![Switch Name] & "'"
Set db = CurrentDb
Set rs = db.OpenRecordset(sSQL)
If rs.recordCount>0 Then
Me.txtTextbox=rs!CountOfEndDeviceType
Else
Me.txtTextbox="N/A"
End If
Set rs=Nothing
Set db=Nothing
End Sub
答案 1 :(得分:0)
使用记录源创建一个新表单作为此查询而不计数,让我们给出所有结果,然后在表单页脚中创建一个文本框并将其文本设置为“= Count([Switch Port Matrix]。[End Device]型])“
将此表单作为子表单放到要显示结果的表单中,您可以从主表单中引用它,您可以在此链接中找到类似的想法 http://office.microsoft.com/en-us/access-help/about-calculating-a-total-in-a-subform-and-displaying-it-on-a-form-HP005187909.aspx?CTT=1