gpt4 book ai didi

database - MS-Access VBA Listbox.ItemData 底层数据类型

转载 作者:搜寻专家 更新时间:2023-10-30 23:41:50 27 4
gpt4 key购买 nike

请考虑下面的小片段:

 If rs!Manufacturer = myListbox.ItemData(Index) Then

还有这两只 watch :

Watch :  rs!Manufacturer.Value            :  1    : Variant/Long
Watch : Me.myListbox.ItemData(Index) : "1" : Variant/String

rs!Manufacturer.ValuemyTable 中的一个整数值,由记录集 rsMe.myListbox.ItemData 检索(Index) 完全相同的数据,但显示在我表单的 ListBox 控件中,并从同一个表中检索。

很明显,listbox 正在将原始数据类型转换为原始值的字符串表示形式,因此,与给定值的比较失败了,而我期望它会成功...

所以问题是:是否有一种(简单的)方法可以使用原始数据类型(换句话说,与我的表中的数据类型相同)从我的列表框中检索数据?

许多人指出,我可以使用 CInt()CLng() 轻松地将列表框值转换回整数,但这会使我的代码严重绑定(bind)到每个特定的在以原始类型检索数据的情况下,无论哪种情况,都会使代码更清晰且仍然完全可靠。

好的,另一个想法是将记录集值也转换为 string,但从 C 程序员的角度来看,这对我来说太痛苦了,所以我宁愿避免它。

提前致谢!

最佳答案

List - 和 ComboBox 总是返回一个字符串。

这真的没什么大不了的。您将知道记录集字段的数据类型,因此只需在需要时进行转换 - 如:

rs!Manufacturer.Value = Val(Me!myListbox.ItemData(Index))

附录

如果您希望继承数据类型,只需将一列添加到您填充列表框时使用值的 VarType 填充的列表框即可。

当从列表框中读取一个值时,还要读取包含数据类型的(隐藏)列,并使用一个带有Select .. Case 构造的函数将文本值转换为原始数据类型。

关于database - MS-Access VBA Listbox.ItemData 底层数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34179018/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com