如何使用 QueryDef 从传递查询中获取数据?
How do I use QueryDef to get data from a pass-through query?
我有一个 SQL 直通查询 returns 我是一个 table 基于 "FROM... WHERE='variable'" 结构中的变量。我想在 VBA 代码上使用该传递查询并从表单中获取变量。在简历中:我将在表单上输入变量,运行 VBA 代码和传递查询,并将结果返回到相同的表单。我该怎么做?
Dim rst As DAO.Recordset
With CurrentDb.QueryDefs("qryPass")
.SQL = "select * from dbo.tblCustomers where City = '" & Me!City & "'"
.ReturnsRecords = True
Set rst = .OpenRecordset
End With
以上将使用名为 City 的当前表单文本框。为了防止 SQl 注入,那么你可以使用这个:
.SQL = "select * from dbo.tblCustomers where City = " & qu(me!City)
并且您有一个通用例程,用于在表达式周围放置引号:
Function qu(vText As Variant) As String
qu = Chr$(34) & vText & Chr$(34)
qu = Replace(qu, ";", "")
qu = Replace(qu, "(", "")
qu = Replace(qu, ")", "")
qu = Replace(qu, "=", "")
End Function
我有一个 SQL 直通查询 returns 我是一个 table 基于 "FROM... WHERE='variable'" 结构中的变量。我想在 VBA 代码上使用该传递查询并从表单中获取变量。在简历中:我将在表单上输入变量,运行 VBA 代码和传递查询,并将结果返回到相同的表单。我该怎么做?
Dim rst As DAO.Recordset
With CurrentDb.QueryDefs("qryPass")
.SQL = "select * from dbo.tblCustomers where City = '" & Me!City & "'"
.ReturnsRecords = True
Set rst = .OpenRecordset
End With
以上将使用名为 City 的当前表单文本框。为了防止 SQl 注入,那么你可以使用这个:
.SQL = "select * from dbo.tblCustomers where City = " & qu(me!City)
并且您有一个通用例程,用于在表达式周围放置引号:
Function qu(vText As Variant) As String
qu = Chr$(34) & vText & Chr$(34)
qu = Replace(qu, ";", "")
qu = Replace(qu, "(", "")
qu = Replace(qu, ")", "")
qu = Replace(qu, "=", "")
End Function