基于表单文本框SID值执行Access删除查询的问题求助
解决Access删除查询引用表单控件时的参数输入问题
你遇到的核心问题是:独立保存的查询无法直接识别Me!SID——Me是表单自身代码里的引用关键字,仅在表单的VBA或嵌入表单的查询中有效。单独运行保存的查询时,系统会把Me!SID当成未定义的参数,所以弹出输入框要求填写。
下面给两种可行的解决办法:
方案一:在VBA中执行动态SQL(推荐)
直接在按钮点击事件里构建带表单参数的删除语句,不用依赖保存的查询,更灵活且不易出错:
Private Sub delSYS_Click() Dim strSQL As String ' 注意:如果SID是文本类型,用单引号包裹值;如果是数字类型,去掉单引号 strSQL = "DELETE [tbl-planung].SID, [tbl-apartner].* " & _ "FROM [tbl-planung] INNER JOIN [tbl-apartner] ON [tbl-planung].SID = [tbl-apartner].SID " & _ "WHERE [tbl-planung].SID = '" & Me!SID & "';" ' 数字类型SID的写法: ' strSQL = "DELETE [tbl-planung].SID, [tbl-apartner].* " & _ ' "FROM [tbl-planung] INNER JOIN [tbl-apartner] ON [tbl-planung].SID = [tbl-apartner].SID " & _ ' "WHERE [tbl-planung].SID = " & Me!SID & ";" DoCmd.RunSQL strSQL ' 可选:执行后添加提示 ' MsgBox "关联记录已删除" End Sub
方案二:修改保存的查询,使用完整表单控件引用
如果想继续用qry-delSystem这个保存的查询,把WHERE子句里的Me!SID改成表单的完整路径引用(替换成你的实际表单名称):
DELETE [tbl-planung].SID, [tbl-apartner].* FROM [tbl-planung] INNER JOIN [tbl-apartner] ON [tbl-planung].SID = [tbl-apartner].SID WHERE ((([tbl-planung].SID)=Forms![你的表单名称]!SID));
⚠️ 注意:执行这个查询时,必须确保对应的表单处于打开状态,否则系统还是会报错或要求输入参数。
内容的提问来源于stack exchange,提问作者rel0aded0ne
相关产品推荐
相关产品推荐

