内部に MSFlexGrid コントロールを含む Visual Basic 6 フォームがあり、レコード セット (ADODB) からデータを取得して表示します。
FlexGrid へのデータのコピーを開始する前に、レコード数に応じて行数を設定しようとしています。また、列の名前を含むコレクションがあり、ここから列の数を取得できます。
以下はコード スニペットです。
v_colsCount = UBound(aCols) + 2 // aCols = array with columns' names
v_regCount = rs.RecordCount // rs = my ADODB record set
myFlexGrid.Rows = 0 // for cleaning rows from a previous display
myFlexGrid.Rows = IIf(v_regCount > 0, v_regCount + 1, 2)
myFlexGrid.Cols = v_colsCount
myFlexGrid.FixedRows = 1
myFlexGrid.FixedCols = 0
7532 行と 52 列があります。アプリケーションを実行し、コードのこの部分を実行しようとすると問題が発生します (FlexGrid にレコード セットのデータを入力します)。
For iRow = 1 To v_regCount
For iCol = 0 To v_colsCount -2
sAux = ConvStr(rs.Fields(aCols(iCol)).Value)
myFlexGrid.TextMatrix(iRow, iCol) = sAux
私はそれに気づきます
v_regCount = 7532 ですが v_colsCount = 2 、
エラーが発生します("Substring out of range")
。設定の順序を入れ替えた場合 (つまり、myFlexGrid.Rows を設定した後に myFlexGrid.Cols を設定した場合)、
v_regCount = 0 および v_colsCount = 52
行数と列数を同時に設定できない理由がわかりません。
何か案は?前もって感謝します