Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access MS Access根据按钮筛选并使多个复选框为真/假_Ms Access_Vba_Ms Access Forms - Fatal编程技术网

Ms access MS Access根据按钮筛选并使多个复选框为真/假

Ms access MS Access根据按钮筛选并使多个复选框为真/假,ms-access,vba,ms-access-forms,Ms Access,Vba,Ms Access Forms,我有一个简单的库存数据库,带有一个简单的搜索文本选项,可以将其过滤到那些特定的项目。我想根据当前筛选的内容“签出/签入”多个项目 因此,如果我查找“float”,在拆分形式中,它将只显示描述中包含“float”的任何内容的所有信息。从那里我想有一个按钮(“签出”),将检查这个文本框过滤器的所有结果为真,而不是点击每个项目。我已经附上了一张我的表单的照片。为那些执行一些SQL的按钮添加一些代码,以更新复选框后面记录的状态。下面是一个带有打印语句的示例,用于显示查询字符串在执行前的变化: Priva

我有一个简单的库存数据库,带有一个简单的搜索文本选项,可以将其过滤到那些特定的项目。我想根据当前筛选的内容“签出/签入”多个项目


因此,如果我查找“float”,在拆分形式中,它将只显示描述中包含“float”的任何内容的所有信息。从那里我想有一个按钮(“签出”),将检查这个文本框过滤器的所有结果为真,而不是点击每个项目。我已经附上了一张我的表单的照片。

为那些执行一些SQL的按钮添加一些代码,以更新复选框后面记录的状态。下面是一个带有打印语句的示例,用于显示查询字符串在执行前的变化:

Private Sub CheckInButton_Click()

DoCmd.SetWarnings False

sqlString = "UPDATE tbl_inventory SET tbl_inventory.Packed = False WHERE tbl_inventory.Item like '" & Me.txtFilter & "'" 

debug.print sqlString

DoCmd.RunSQL sqlString 

DoCmd.SetWarnings True

Me.SubForm.Requery

End Sub

杰肖特给了我答案。我就是这样做的,万一有另一个新手

按照建议,我创建了两个更新查询(qry\u CheckIn/qry\u CheckOut)。
在我的字段“打包”(复选框)中,我将更新设置为:0(删除复选标记)/-1(添加复选标记)

在我的字段“项目”中,我输入:

它在我的表格中的“我的文本过滤器”搜索框中查找(请参见“问题中的图像”部分)

下一部分:(如果您有较新版本的access,请打开“显示所有操作”),我按以下顺序为每个按钮添加了“单击”宏命令:

  • 设置警告

    警告-否

  • OpenQuery

    查询名称-qry_签入(或签出)

  • RunMenuCommand

    命令-刷新

  • 设置警告

    警告-是


  • 谢谢您的帮助。

    谢谢,结束了。你能告诉我我错过了什么吗?我得到:运行时错误“3075”:查询表达式“tbl_inventory.item”中的语法错误(缺少运算符),如“float”。我从来没有使用过SQL命令,所以我复制/粘贴并修改了您给我的命令:Private Sub cmd_checkout_Click()DoCmd.SetWarnings False DoCmd.RunSQL“UPDATE tbl_inventory SET tbl_inventory.Packed=False WHERE tbl_inventory.Item,比如“&me.txtFilter&”DoCmd.SetWarnings True Me.Requery End SubPrivate Sub cmd\u checkout\u Click()DoCmd.SetWarnings False DoCmd.RunSQL“UPDATE tbl\u inventory SET tbl\u inventory.Packed=False,其中tbl\u inventory.Item类似于“&Me.txtFilter&.”DoCmd.SetWarnings True Me.Requery End SubFor在VBA中调试sql查询我喜欢将它们打印到即时窗口以查看其确切结果:sqlString=“UPDATE tbl\u inventory SET tbl\u inventory.Packed=False,其中tbl\u inventory.iter类似于“&Me.txtFilter&”的项目debug.print sqlString DoCmd.RunSQL sqlstrings道歉,但是当您尝试代码时,什么都没有发生。我的桌子名为“tbl_库存”,所以看起来不错。我试图更改的字段名是“打包的”,所以所有这些对我来说都很好,但我想如果我遗漏了一些小而重要的内容,我会重新键入此字段名。我实际上没有子表单(我用一个拆分表单向导创建了它,所以我很高兴),但我只是把它改成了我。重新查询。我在手动选中一个框并不选中另一个框后点击我的按钮,它所做的只是刷新(me.requery?)。想法?试着写一个常规的查询来完成你想要的更新行为。这通常是一个很好的起点。我们的VBA查询将模拟您的常规查询。很高兴您能在@ESmith中使用它。谢谢,请将问题标记为已回答;)
        Like "*" & [Forms]![frm_inventory]![txtFilter] & "*"