VBA访问从级联列表框传递和编辑记录并重新查询列表框

时间:2013-12-12 19:57:38

标签: ms-access-2007 access-vba listboxitem

我有一个特别难以处理的问题。 我正在处理一个表单以进行访问。此表单包含大量级联数据连接。 它用作数据库的过滤,选择,审阅和编辑界面。

下面我列出了设计的基本描述;  -ComboBox1从参考表填充其数据,并级联更新到ComboBox2。  -ComboBox2根据ComboBox1的选择填充,然后将信息级联到ListBox1,ListBox1运行查询以生成记录列表。   - 在Listbox1中选择记录会将列表的各个隐藏列填充到匹配的text和comboBox字段中以进行显示/编辑。它还在点击级联Populate Listbox2上使用查询来从与ListBox1中的所选记录相关的不同表中提取记录。   - 我有许多按钮来处理添加,删除和编辑ListBox1查询其信息的表的记录。  到目前为止的一切都正常工作(部分原因是感谢人们回答我的其他问题) 我现在被卡住的地方是尝试创建类似的按钮,这些按钮与Table一起提供相同的功能,其中ListBox2绘制其记录(添加/编辑/删除) 我已经成功添加了“添加”按钮,但已经卡在编辑功能上。

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

1 个答案:

答案 0 :(得分:0)

您要调整的DoCmd.OpenForm参数是可选的WhereConditionDataModeWhereCondition接受没有单词where的SQL Where子句。在表单打开之前,此限制将应用于表单的rowsource。 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