请考虑下面的小片段:
If rs!Manufacturer = myListbox.ItemData(Index) Then
这两只手表:
Watch : rs!Manufacturer.Value : 1 : Variant/Long
Watch : Me.myListbox.ItemData(Index) : "1" : Variant/String
rs!Manufacturer.Value
来自记录集myTable
和rs
检索到的表Me.myListbox.ItemData(Index)
中的整数值完全相同的数据但显示在我的ListBox
控件中表格并从同一张表中检索。
似乎很清楚,listbox正在将原始数据类型转换为原始值的字符串表示形式,因此,当我期望它成功时,与给定值的比较失败...
所以问题是:是否有一种(简单)方法从我的列表框中检索原始数据类型的数据(换句话说,与我的表格中的数据类型相同)?
许多人可以指出我可以轻松地将列表框值转换回CInt()
或CLng()
的整数,但是在检索原始类型的数据时会使我的代码严重绑定到每个特定情况,不会这会使代码更清晰,更完整可靠。
好的,另一个想法是将记录集值转换为string
,但从C程序员的角度来看,这对我来说似乎太痛苦了,所以我宁愿避免它。
提前致谢!
答案 0 :(得分:1)
列表 - 和 ComboBox 始终返回一个字符串。
这真的没什么大不了的。您将知道记录集字段的数据类型,因此只需转换即可 - 例如:
rs!Manufacturer.Value = Val(Me!myListbox.ItemData(Index))
<强>附录强>
如果您希望继续使用数据类型,只需在填充列表框时在列表框中添加一列填充VarType
值即可。
从列表框中读取值时,还要读取包含数据类型的(隐藏)列,并使用带有Select .. Case
构造的函数将文本值转换为原始数据类型。