我有一个查询,我不想在Application.ExportXML中使用。但是查询需要一个参数,这个参数必须是我表单中textbox的值。现在我有这样的事情。
sql = "SELECT * FROM Reports WHERE Reports.Ref_Q ='" & txtRef & "';"
Set qd = CurrentDb.QueryDefs("getReports")
qd.sql = sql
Application.ExportXML acExportQuery, getReports, strPath
当我运行此代码时,我收到以下错误:
The command or action '|' isn't avaible now
我也试过这样做
Set qd = CurrentDb.QueryDefs("getReports")
qd.Parameters("prm") = txtRef.Value
但是参数的提示屏幕一直在屏幕上显示。
答案 0 :(得分:0)
Set qd = CurrentDb.QueryDefs("getReports")
希望找到一个名为getReports
的已保存查询,该查询可能不存在。
您需要以下内容:
sql = "SELECT * FROM Reports WHERE Reports.Ref_Q ='" & txtRef & "';"
Set qd = CurrentDb.CreateQueryDef("getReports", sql)
DB.QueryDefs.Refresh
Application.ExportXML acExportQuery, getReports, strPath
或者:
sql = "SELECT * FROM Reports WHERE Reports.Ref_Q = [prm];"
Set qd = CurrentDb.CreateQueryDef("getReports", sql)
qd.Parameters("[prm]") = txtRef.Value
DB.QueryDefs.Refresh
Application.ExportXML acExportQuery, getReports, strPath
DB.QueryDefs.Refresh
通常是必要的,因为没有它,Access将无法找到您新创建的查询。
当您需要使用不同的参数重复使用查询时,最好使用参数,因为创建查询比仅使用不同的参数调用查询有更多的开销。
如果您不希望查询闲置,可能需要添加DB.QueryDefs.Delete "getReports"
。