【发布时间】:2012-11-30 10:34:03
【问题描述】:
我已经多次遇到这个问题,直到现在都能够解决它。万能的搜索引擎也没有帮助我。
问题是,当我从 ADODB 记录集填充列表框或组合框时,所有十进制数据元素在框中都不可见,例如以下内容(conn 是 ADODB 连接):
Private Sub GetFilteredRecords()
Dim strSQL As String
Dim arr As Variant
'create the SQL
strSQL = "SELECT * FROM vwStandard_Fee2"
'execute the SQL and fill the rs ( rsFiltered )
Set rsFiltered = conn.Execute(strSQL)
'Apply recordset to the listbox on the form
If Not (rsFiltered.EOF = True And rsFiltered.BOF = True) Then
arr = rsFiltered.GetRows()
With lbDeeper
.ColumnCount = rsFiltered.Fields.Count
.List = TransposeArray(arr)
End With
With cbDeeper
.ColumnCount = rsFiltered.Fields.Count
.List = TransposeArray(arr)
End With
End If
End Sub
上面包含 6 列 Ids(都显示 Type = Variant/Decimal),其中包含的值由于某种奇怪的原因都没有“显示”。只有字符串和日期列正常显示,小数点在那里但为空!
这里有一些sn-ps:
现在,如果是组合框,当我选择该列表项时,如果它们的列是 BoundColumn,我可以获得一列的值,但仅在组合框的值中(所以仍然不在列表中)。
我最初的解决方法是在添加到 Listbox/Combobox 之前将它们转换为 String 值,但是在这种情况下,我想直接将查询结果链接到 Box.List 而不查看详细信息。因此,我正在寻找解决方案而不是解决方法。
简而言之:由于某种奇怪的原因,我的数字字段项默认不可见。解决方法是使项目字符串值。我现在正在寻找解决此错误/问题的方法:
- 这是什么原因造成的?
- 如何解决?
【问题讨论】:
-
你的 ColumnWidths 属性是什么样的?
-
您是否在控件的其他位置完成了 .visible=false ?您能否用不可见数据的组合框和列表框的外观来更新您的问题?
-
COlumnWidths 未设置(因此所有列的宽度相同,我已通过设置 ColumnHeads = True 进行了验证)。 Box 是可见的,我刚刚尝试使用另一个 .Visible=True 来查看这是否重要,但是唉。日期也和文本一样显示没有问题。