Sql 如何使用QueryDef从传递查询中获取数据?

Sql 如何使用QueryDef从传递查询中获取数据?,sql,ms-access,pass-through,Sql,Ms Access,Pass Through,我有一个SQL传递查询,它根据“FROM…WHERE='variable'”结构中的变量返回一个表。我想对VBA代码使用传递查询,并从表单中获取变量。在resume中:我将在表单上输入变量,使用pass-through查询运行VBA代码,并将结果返回到同一表单。我该怎么做 Dim rst As DAO.Recordset With CurrentDb.QueryDefs("qryPass") .SQL = "select * from dbo.tblCustomers where

我有一个SQL传递查询,它根据“FROM…WHERE='variable'”结构中的变量返回一个表。我想对VBA代码使用传递查询,并从表单中获取变量。在resume中:我将在表单上输入变量,使用pass-through查询运行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
上面将使用名为“城市”的当前表单文本框。要防止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