我正在尝试更改查询的SQL语句。
这是以下代码:
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim sqlString As String
Set db = CurrentDb()
Set qdf = db.QueryDefs("Query1")
sqlString = "SELECT *all the Tables* FROM tab WHERE (((tab.columname)=*Variable*;"
qdf.SQL = sqlString
所以我的问题是变量的值没有显示......
但它必须从字符串中删除,所以我尝试了这个:
sqlString = "SELECT *all the Tables* FROM tab WHERE (((tab.columname)= " & " *Variable*" & " ;"
我必须添加"变量" (引号)
这样就可以了一半。
然后使用它设置的变量的值,但缺少引号......
此代码的目标是更改显示查询中数据的条件。 变量值为样本LA-85995561。
我想要更改值的方式是通过SQL语句。
我不能从这里进一步了解。谢谢你的帮助!
(我是VBA新手)
答案 0 :(得分:0)
如果columname
是文字,那么您可以使用以下内容:
sqlString = "SELECT * FROM tab WHERE tab.columname='" & strVariable & "'"
对于数字数据类型:
sqlString = "SELECT * FROM tab WHERE tab.columname=" & str(lngVariable)
答案 1 :(得分:0)
您可以使用PARAMETERS
:
这会传递一个文本字符串:
Sub Test()
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim rst As DAO.Recordset
Set db = CurrentDb
Set qdf = db.CreateQueryDef("", "PARAMETERS MyNamedSearchValue TEXT; " & _
"SELECT * FROM MyTable WHERE columname = MyNamedSearchValue")
With qdf
.Parameters("MyNamedSearchValue") = "A"
Set rst = .OpenRecordset
End With
With rst
MsgBox .Fields("MyDateField")
.Close
End With
qdf.Close
End Sub
这传递了一个数字:
Sub Test()
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim rst As DAO.Recordset
Set db = CurrentDb
Set qdf = db.CreateQueryDef("", "PARAMETERS MyNamedSearchValue LONG; " & _
"SELECT * FROM MyTable WHERE columname = MyNamedSearchValue")
With qdf
.Parameters("MyNamedSearchValue") = 100
Set rst = .OpenRecordset
End With
With rst
MsgBox .Fields("MyDateField")
.Close
End With
qdf.Close
End Sub
您必须更新SQL以满足您的需求。您也可以传递存储查询的名称,而不是在过程中编写SQL。
答案 2 :(得分:0)
使用参数化的经典示例,这是在VBA等应用程序层使用SQL时的行业最佳实践。由于您已经使用了querydef,因此您可以使用stopAccessingSecurityScopedResource()
子句轻松传递参数来定义数据类型和占位符。
SQL (另存为存储的查询)
PARAMETERS
<强> VBA 强>
PARAMETERS VariableParam Text(255);
SELECT * FROM tab WHERE tab.collumname = [VariableParam];
答案 3 :(得分:0)
Anser是我必须使用它作为cose:
WHERE (((tab.collumname)=""" & strVariable& """));"
关于&#34;&#34;&#34; &安培;从来没有做过&#34;在SQL中感谢所有的握手!把我带到我的解决方案! &LT; 3