将MS-Access列表框链接到YES / NO类型字段时遇到麻烦

时间:2014-02-05 10:18:35

标签: vba ms-access listbox access-vba

我有一个包含2个列表框(list1和list2)的表单,它显示2个YES / NO类型字段的值。在表格中,字段数据由复选框表示,但在列表框中显示为True / False 我还有2个组合框,其中包含Yes和No值,用于填充/编辑表中的字段。

我正在尝试编辑此表单的VBA代码,使得2个列表框(以及字段中的值)不能同时为true。即如果用户在combo1上选择true并命中save,程序将检查list2中的值,如果它也为true,则显示错误消息并退出sub。

我发现这些值实际上在列表框中保存为0和-1,但我的问题是即使更改了表上的值,列表框的值也不会改变。即使True / False值在表字段上的值发生变化时会有所变化,0和1也不会改变(通过msgboxing列表框中的值来找到它),这使得在保存之前无法比较值。

我正在使用的代码示例如下

...   

 List2.Requery
'MsgBox List2

 'MsgBox Combo1
If Combo1 = "True" And List2.Value = "-1" Then
MsgBox "List1 and List2 cannot be TRUE at the same time. Please adjust or cancel edit"     
Exit Sub
Else
myr.Edit
myr![Y/Nfield] = Combo1
myr.Update


Set myr = Nothing 'Close the recordeset 


End If

...

(...表示此位之前和之后有代码)

2 个答案:

答案 0 :(得分:1)

只是因为一个人来到这里,真的需要回答这里我是如何解决这个问题的。

而不是使用list2.value属性(请参阅相关代码)我使用list.itemdata(0)指向列表框的第一列

它就像一个魅力。

答案 1 :(得分:0)

您是否检查了列表框属性值。 在Properties Windows上,然后选择Data选项卡,您需要检查以下属性:

  1. 行源类型,应为表/查询
  2. 行来源,应填写相应的表名
  3. 绑定列,应填入您希望在列表框中查看的表的列索引