私はすでにこの問題に数回遭遇しており、今まで回避できました。また、万能の検索エンジンも役に立ちませんでした。
問題は、ADODB レコードセットからリストボックスまたはコンボボックスを作成したときに、たとえば次のように、すべての Decimal データ要素がボックスに表示されないことです (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 列の Id が含まれており (すべて Type = Variant/Decimal と表示されます)、そのうちの含まれている値はすべて何らかの奇妙な理由で「表示」されていません。通常、文字列と日付の列のみが表示されます。小数は表示されますが、空です!
ここにいくつかのスニペットがあります:
コンボボックスの場合、そのリストアイテムを選択したときにその列が BoundColumn の場合に表示される 1 つの列の値を取得できますが、コンボボックスの値でのみ表示されます (まだリストにはありません)。
私の最初の回避策は、リストボックス/コンボボックスに追加する前にそれらを文字列値に変換することでしたが、この場合、詳細を確認せずにクエリ結果を Box.List に直接リンクしたいと考えています。したがって、回避策ではなく解決策を探しています。
要するに、私の数値フィールド項目は、何らかの奇妙な理由でデフォルトで非表示になっています。回避策は、項目を文字列値にすることでした。代わりに、このバグ/問題の解決策を探しています:
- これは何が原因ですか?
- それを解決する方法は?