将查询结果分配给MS Access中的文本框

时间:2010-12-03 17:16:30

标签: sql ms-access

我有两个相关的问题。首先,如何将查询结果的值分配给文本框?

这是我目前分配给按钮点击事件的代码:

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。

其次,如何在打开表单时执行查询?我假设我想触发它​​在一个事件上运行但是在文本框的属性下似乎没有适当的事件。

我是一名网络工程师,不是程序员或数据库分析师,但我已经涉足到所有这些工作都被丢弃在我的腿上。如果有人能帮助一个苦苦挣扎的工程师,我当然会很感激。

2 个答案:

答案 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