■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#24828-0最終ページが理想どおりにならないももんが2001-11-23(金) 17:52
     #24833-0RE#24828:最終ページが理想どおりにならないZERRY2001-11-23(金) 18:36
     #24835-0RE#24833:最終ページが理想どおりにならないももんが2001-11-23(金) 19:41
     #24836-0RE#24835:最終ページが理想どおりにならないZERRY2001-11-23(金) 21:26
     #24837-0RE#24828:最終ページが理想どおりにならない魔界の仮面弁士2001-11-24(土) 00:47
     #24867-0RE#24837:最終ページが理想どおりにならないももんが2001-11-26(月) 12:52
     #24868-0RE#24867:最終ページが理想どおりにならない魔界の仮面弁士2001-11-26(月) 13:08
#24828-0
最終ページが理想どおりにならない
また質問させてもらいます。

前回「SQLのSELECT文について」という題名で質問をしました。
前回の質問は、まとめると "グリッドに表示するデータをページの概念で操作したい。"
という内容でした。

魔界の仮面弁士さんに掲示していただいたサンプルソース (#24758) を参考にして
一件落着!だと思ったのですが、また問題が発生してしまいました。


1ページ15レコード分データを表示できるフレキシブルグリッドがあるのですが、
表示対象データが、たとえば44件だったとします。
この際、サンプルソールを参考にさせてもらったプログラムだと3ページ目を表示した時、
15行目にデータの入っていないセルが表示されます。
これをどうにか、表示しないようにしたいのです。

自分なりに調べてみたのですが、MSDNの「AbsolutePage プロパティ」にて、
 「ただし、最終ページのレコード数は PageSize の値より小さい場合があります。
  このプロパティを使用するには、プロバイダで適切な機能がサポートされている
  必要があります。」
という文章をみつけました。

そこで、教えて欲しいのですが、具体的にどうすればできるのでしょうか?
#24833-0
RE#24828:最終ページが理想どおりにならない
> 15行目にデータの入っていないセルが表示されます。
> これをどうにか、表示しないようにしたいのです。
> 
少し考えましょう。
EOFとなったときに行が足りなければ、空白をセットするだけです。
#24835-0
RE#24833:最終ページが理想どおりにならない
ZERRYさん、返事ありがとうございます。

最終ページに表示するレコードの件数を「画面のリフレッシュ」部分に引数として渡しているのですが、
その引数の計算方法が間違っていた為にこの問題が発生していることが分かりました。

お騒がせしました。以後、質問する時は充分に調査してからにします。

>EOFとなったときに行が足りなければ、空白をセットするだけです。 
 これは、現象が変わらないと思うのですが、どうなんですか?
 グリッドの Rowsプロパティーの値を対応させたいと考えていたのですが・・・。

現在、また別の問題が発生しているのですが、もう少し自力で調査してみます。

また、質問させていただく事があると思いますが、その際にはまた教えてください。
#24836-0
RE#24835:最終ページが理想どおりにならない
> >EOFとなったときに行が足りなければ、空白をセットするだけです。 
>  これは、現象が変わらないと思うのですが、どうなんですか?
>  グリッドの Rowsプロパティーの値を対応させたいと考えていたのですが・・・。
この手の処理は、
For i=1 To RecordCount
  <Set>
Next i

For i=(RecordCount+1) To LineMaxCount
  <Clear>
Next i
のような感じですると思います。

#24837-0
RE#24828:最終ページが理想どおりにならない
> この際、サンプルソールを参考にさせてもらったプログラムだと3ページ目を表示した時、
> 15行目にデータの入っていないセルが表示されます。
> これをどうにか、表示しないようにしたいのです。
スクロール表示ではなく、ページ単位での表示の場合は、空セルが表示されていても、
別に良いと思いますよ。(^^A
うちではその場合、「14行しか表示させない」のではなく、
「データの無い15行目だけ、セルの背景色を灰色にする」事にしています。

ま、この辺はデザイン仕様によるのでしょうけれど。

> そこで、教えて欲しいのですが、具体的にどうすればできるのでしょうか?
行数の変更は、(MSFlexGridの)Rowsプロパティで設定できます。
予め、レコード数をRecordCount等で算出しておいても良いでしょうし、
表示した後にグリッドの各行をTextMatrixで調べて、空行を探しても良いでしょう。
#24867-0
RE#24837:最終ページが理想どおりにならない
魔界の仮面弁士さん、返事が遅くなってしまってすいません。

> うちではその場合、「14行しか表示させない」のではなく、
> 「データの無い15行目だけ、セルの背景色を灰色にする」事にしています。
> 
> ま、この辺はデザイン仕様によるのでしょうけれど。
 #24835に書いたのですが、Rowsプロパティーを操作してみています。
 
ところで、またうまく動作してくれない部分が発生してしまって困っています。
次ページボタンを押した際に、AbsolutePage の値を増分し、
Refresh するサンプルをいただきましたが、最終ページの表示行数の関係で、
該当ページの表示行数を渡すように Refresh をへんこうしました。
その際に、Refresh 部分で BooKMarK の値がおかしいのです。

例)1ページ15行表示(次ページ処理)の場合   (全44件)
-----------------
|Page|理想|現実 |
-----------------
|  1 | 1  | 1  | 
|  2 | 16 | 11 |
|  3 | 31 | 21 |
-----------------   
となってしまいます。
BooKMarK の値が変化するタイミングは AbsolutePage の値を変更した直後なんです。

そこで、AbsolutePage と BooKMarK の関係というか、AbsolutePage を増分させた時に、
どこを見て BooKMarK の値が変更されているのかを教えてください。
 
#24868-0
RE#24867:最終ページが理想どおりにならない
> その際に、Refresh 部分で BooKMarK の値がおかしいのです。
Bookmarkの値自体に意味はありません。数値として参照するのは止めましょう。
# プロバイダによってはLong型の行番号を返す物や、Double型のIDを返す物もありますが、
# 本来、Bookmarkが返す値というのは、プロバイダ固有のバイナリデータです。

Bookmarkの相対位置関係を知りたいのであれば、CompareBookmarksメソッドを使ってください。
行位置自体が知りたいのであれば、AbsolutePositionプロパティを利用してください。

また、Requeryメソッドを呼び出すと、以前のBookmarkとの互換性が失われることに注意してください。
このページと関連する記事:
#24893-0RE#24868:最終ページが理想どおりにならない2001-11-26(月) 17:53
#21423-0データグリットについて2001-06-19(火) 16:55
#20731-0データグリッドで選択範囲を取得したい2002-05-02(木) 15:46
#601-2データグリッドについて2001-10-26(金) 11:07
#4753-0続・DBGRIDの件1999-12-02(木) 10:07
#40117-0DBGridにレコードセットの内容を表示すると変になる2001-03-10(土) 16:18
#29351-0MSFlexGridの行を全削除したい2002-06-12(水) 10:24
#8793-0Excelのデータの最終行を知る & SORTメソッドのキーの数?2000-03-21(火) 21:57
#6888-0リストビューの使い方2000-03-24(金) 16:47
#17918-0階層フレキシブルグリッドの FixedRow プロパティ2000-03-14(火) 17:06
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)