こんにちわ。
MSFlexGridコントロールの使用方法についてお教え下さい。
同コントロールのプロパティにて、初期表示時のセルの行数、列数等を指定することが出来ますが、
プログラムの中で行数等を指定することができるのでしょうか。
例えば、動的にSQLで取得した件数分のみを行数指定するなど・・・
プロパティで行数を100と設定しても、実際の表示結果が30件しかない場合は
残りの70行が必要ないため、画面上表示させたくありません。
コーディング上で設定可能なプロパティをご存知であればご教授お願いいたします。
行数ならRows,列数ならColsプロパティで変更できます。
例) XXX.Rows = 30
っつか、
>同コントロールのプロパティにて、初期表示時のセルの行数、列数等を指定することが出来ますが、
そのプロパティがコーディング上で設定可能なプロパティで、
Rows 、Cols プロパティだと思ってましたが…。
>コーディング上で設定可能なプロパティ
ヘルプにすべてかいてませんか?
このプロパティは、値の取得のみ可能ですとか?
返信が遅くなりすいません。
みいさん、特攻隊長まるるうさん、いなさん、レス有難うございます。
もちろん、行数ならRows,列数ならColsプロパティで変更できることは存じてます。当初、質問していた内容は少しずつ解消しつつあります。
・行数の初期設定値を下回る抽出データを表示⇒解決
・行数の初期設定値を上回る抽出データを表示⇒未解決
(例)
Private Sub Form_Load()
With MsGrid
.Rows = 10
.Cols = 3
End With
End Sub
上記の例は、画面上にあるMsGridオブジェクトのプロパティ設定(オブジェクト選択⇒プロパティ⇒〔全般〕"行"指定、"列"指定)と同様の設定です。
ですので、フォームが起動された時にデータが表示されていなくても10行3列の
セルがMsGrid上に表示されます。
以下の抽出結果よりMsGridにデータを表示させる出力部を記載します。
※MsGridの行列の初期設定は上記の(例)のままとします。
〔DB抽出結果1〕
取得レコード数:7
MsGrid出力部:
Dim i As Integer
i = 1
With MsGrid
Do While wDyn.EOF = False
.TextMatrix(i, 1) = wDyn.Fields("EMPNO").Value
wDyn.MoveNext
i = i + 1
Loop
End With
---------------------------------------------------------
−MsGrid表示結果−
・MsGridの1行目から7行目まで抽出データが表示
・Form_Load時にRows=10と設定している為、8行目以降に空白の行が
存在する。
⇒Loopを抜けた個所にてRowsを再設定することで解消
.Rows = i + 1
〔DB抽出結果2〕
取得レコード数:15
MsGrid出力部:
Dim i As Integer
i = 1
With MsGrid
Do While wDyn.EOF = False
'↓↓↓
.TextMatrix(i, 1) = wDyn.Fields("EMPNO").Value
'↑↑↑
wDyn.MoveNext
i = i + 1
Loop
End With
---------------------------------------------------------
−MsGrid表示結果−
・「インデックスが有効範囲ではない」とエラー表示される。
⇒当初、初期設定していた行数をオーバーして抽出データを表示
させようとしているため、エラーが発生する。
〔検証/対応〕
では、MsGridの初期設定を2に設定し、1行した後にRowsも
カウントアップさせるようにしたが、結果は上記同様エラーと
なってしまう。
DB抽出結果2について、他にどのような対応が考えられるのでしょうか。
ブレークつけて1行ずつ動きを追っていった方がよいと思いますよ。
With MsGrid
.rows=1
i=1
Do While wDyn.EOF = False
.AddItem "",i
.TextMatrix(i, 1) = wDyn.Fields("EMPNO").Value
wDyn.MoveNext
i = i + 1
Loop
End With
Dim i As Integer
i = 1
With MsGrid
Do While wDyn.EOF = False
.Rows = i
.TextMatrix(i, 1) = wDyn.Fields("EMPNO").Value
wDyn.MoveNext
i = i + 1
Loop
End With
試してないけどこんな感じ?
オラクルのダイナセットは RecordCount のようなプロパティが無かった
と思うから、順に増やすか、一度コレクションみたいなものに格納して
数を調べるとか…まぁ ReDim とかで同じような質問なら過去ログに
あったけど…
>もちろん、行数ならRows,列数ならColsプロパティで変更できることは存じてます。
の発言でウンザリ。
最初の質問では明らかにそれを質問してるのに、…知ってるなら質問するな。
先の回答を丸っきり無駄にしてるよね?。他人の時間を無駄に浪費して何も
思わないような人間は、質問する資格無し。
123
参考まで
http://www.redout.net/data/osietekun.html
以下引用
>上級テクニックとして、
>「そんなことはもう試しました。」とか、
>「そこまで初心者じゃありません。」などと言って、
>回答者の神経を逆なでしておけば完璧である。
教えて君上級者と思われ
ツイート | ![]() |