Database MS Access VBA Listbox.ItemData基础数据类型 请考虑下面的小片段: If rs!Manufacturer = myListbox.ItemData(Index) Then
这两块手表:Database MS Access VBA Listbox.ItemData基础数据类型 请考虑下面的小片段: If rs!Manufacturer = myListbox.ItemData(Index) Then,database,ms-access,vba,type-conversion,Database,Ms Access,Vba,Type Conversion,这两块手表: Watch : rs!Manufacturer.Value : 1 : Variant/Long Watch : Me.myListbox.ItemData(Index) : "1" : Variant/String 是rs!Manufacturer.Value由recordsetrs和Me.myListbox.ItemData(Index)检索的表myTable中的整数值。ItemData(Index)完全相同的数据,但以我的形式显
Watch : rs!Manufacturer.Value : 1 : Variant/Long
Watch : Me.myListbox.ItemData(Index) : "1" : Variant/String
是rs!Manufacturer.Value
由recordsetrs
和Me.myListbox.ItemData(Index)
检索的表myTable
中的整数值。ItemData(Index)完全相同的数据,但以我的形式显示在ListBox
控件中,并从同一个表中检索
很明显,listbox正在将原始数据类型转换为原始值的字符串表示形式,因此,与给定值的比较失败,而我希望它会成功
所以问题是:有没有一种(简单的)方法可以从我的列表框中检索原始数据类型的数据(换句话说,与我的表中的数据类型相同)?
许多人可能会指出,我可以使用CInt()
或CLng()
轻松地将listbox值转换回整数,但这会使我的代码在检索原始类型的数据时严重绑定到每种特定情况,无论是哪种类型,都会使代码更干净,并且仍然完全可靠
好的,另一个想法是将记录集值也转换为字符串
,但是从C程序员的角度来看,这对我来说太痛苦了,所以我宁愿避免它
提前谢谢 列表和组合框始终返回字符串
这真的没什么大不了的。您将知道记录集字段的数据类型,因此只要根据需要进行转换即可-如:
rs!Manufacturer.Value = Val(Me!myListbox.ItemData(Index))
附录
如果您希望继续使用数据类型,只需在填充列表框时向列表框中添加值的VarType
列即可
从列表框中读取值时,还要读取保存数据类型的(隐藏)列,并具有一个带有
Select。。Case
构造将文本值转换为原始数据类型。Hello Gustav。谢谢你的回答。不幸的是,Val()Val()
仅用于从字符串
到数字的转换,并且严格限制了本地化数字。最后,我没有原始信息,而是经过解析的信息。我不知道“你在找什么”。我从1.0版开始就在Access中编程,从未遇到过这样的问题,你无法轻松解决,所以我感觉你在追逐幽灵Val
适用于您提到的任何整数/长整数。如果小数没有点作为小数分隔符,请使用CCur
或CDbl
。