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 VBA Access从级联列表框传递和编辑记录并重新查询列表框_Ms Access_Vba_Ms Access 2007_Listboxitem - Fatal编程技术网

Ms access VBA Access从级联列表框传递和编辑记录并重新查询列表框

Ms access VBA Access从级联列表框传递和编辑记录并重新查询列表框,ms-access,vba,ms-access-2007,listboxitem,Ms Access,Vba,Ms Access 2007,Listboxitem,我有一个特别困难的问题要处理。 我正在制作一个访问表单。此表单包含大量级联数据连接。 它用作数据库的过滤、选择、查看和编辑界面 以下是我对设计的基本描述; -ComboBox1从引用表填充其数据,并将更新级联到Combox2。 -ComboBox2根据ComboBox1的选择进行填充,然后将信息级联到ListBox1,ListBox1运行查询以生成记录列表。 -在Listbox1中选择一条记录会将列表中的各种隐藏列填充到匹配的文本和组合框字段中,以便显示/编辑。它还可以单击cascade,使用查

我有一个特别困难的问题要处理。 我正在制作一个访问表单。此表单包含大量级联数据连接。 它用作数据库的过滤、选择、查看和编辑界面

以下是我对设计的基本描述; -ComboBox1从引用表填充其数据,并将更新级联到Combox2。 -ComboBox2根据ComboBox1的选择进行填充,然后将信息级联到ListBox1,ListBox1运行查询以生成记录列表。 -在Listbox1中选择一条记录会将列表中的各种隐藏列填充到匹配的文本和组合框字段中,以便显示/编辑。它还可以单击cascade,使用查询从与ListBox1中所选记录相关的不同表中提取记录来填充Listbox2。 -我有许多按钮来处理添加、删除和编辑ListBox1查询其信息的表的记录。 到目前为止,一切正常(部分要感谢回答我其他问题的人的帮助) 我现在陷入困境的地方是试图创建类似的按钮,这些按钮与ListBox2提取记录的表具有相同的功能(添加/编辑/删除) 我已经成功添加了添加按钮,但是编辑功能被卡住了

我有一个按钮,我正试图为它构建一个“OnClick”事件。它需要从列表框中提取所选记录,并将其打开的表单设置为该特定记录。
我知道我可以使用listbox.selected.value从列表框中提取所选值,但这如何转换为DoCmd.OpenForm语法?

要调整的DoCmd.OpenForm参数是可选的
WhereCondition
DataMode
WhereCondition
接受不带Where的SQL Where子句。此限制在窗体打开之前应用于窗体的行源。
DataMode
可以覆盖窗体为AllowEdits和DataEntry保存的设置。在这种情况下,听起来您希望使用acFormEdit

Private Sub CommandFoo_OnClick()
Dim strWhere As String

'Do yourself a favor and build the WhereCondition in a string variable so that you can see what you've built. 
'Surround text values in double quotes. 
'Surround dates with # and specify in m/d/yyyy or yyyy-mm-dd
'Make sure you build in spaces in as necessary.
strWhere = "NumberField1=" & ListBox1.Columns(0) & " AND TextField2=" & Chr(34) & ListBox1.Columns(1) & Chr(34)
Debug.Print strWhere

DoCmd.OpenForm FormName:="YourFormName", WhereCondition:=strWhere, DataMode=acFormEdit
End Sub

好的,我正试图让它工作,但我有一个语法错误;我可以通过代码检查来纠正语法吗?strWhere=“ForcastTrans.TransID=“+”&me.lstTrans.Column(0)&“如果
TransID
是数字的,那么使用`strWhere=“TransID=“&me.lstTrans.Column(0)”如果
TransID
是数字的,那么使用
strWhere=“TransID=“&me.lstTrans.Column(0)
。如果
TransID
是文本,请使用
strWhere=“TransID=“&Chr(34)&Me.lstTrans.Column(0)&Chr(34)
。您可能需要将列表框的行源的列号从零改为从零开始的列号。谢谢,我已经计算出来了。非常感谢你的帮助。