VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2003/04/07(Mon) 14:01
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe^5: レコードセットをグリッドに表示

う〜ん。通常は、Sortプロパティなど使わずとも、
データソースの並び順そのままで表示されるはずなのですけれどね。
# 一体、どこに問題があるのだろう? (;_;)

MSDEへの接続文字列は、どのようになっていますか?
SQL Server/MSDE用プロバイダ(Provider=SQLOLEDB)による接続でしょうか、
それとも、ODBC接続(Provider=MSDASQL)でしょうか?


> ソートモードを変えてみたら、グリッドに一旦
> 表示してからのソートはできるようになりました。
DataSource側の並び順が反映されないとなると、その方法しか無さそうですね…。


> ちなみにソートモードは5です。
> (これって文字列を並べ替える時のものですよね。)
定数値 flexSortStringNoCaseAsending の事ですね。
出来る限り、定数値で指定された方が良いですよ。

# 定数名で書かれていれば、「大文字小文字を区別せずに、文字列順に昇順ソートされる」事が
# 読み取れますが、単に 5 と書いただけだと、後でソースを見た時に、意味が掴み難いですから。


> できる様になったと言うことは、日付フィールドは「文字」なのでしょうか?
OLE DB自体は、元のデータ型(adDateTime型など)を保持していますが、
MSHFlexGridに表示される際には、日付文字列として展開されます。

というよりも、日付であれ、数値であれ、MSHFlexGridへの表示時は、
全て「文字列」として展開される事になります。

# MSHFlexGridのTextMatrixプロパティが、(Variant型ではなく)String型を返すのも、
# データを内部で文字列化している為なのでしょうね。


> あとはVBのグリッドにした時(する時)にどうすれば良いのでしょうか?
書式化対応のコントロール(DataGridやTextBox等)であれば、StdDataFormatオブジェクトを
DataFormat/DataFormatsプロパティに割り当てる事で、書式を定義する事ができます……が、
MSHFlexGridは、DataFormatに対応していないみたいなので、データソース側で、
「文字列でソートされても、正しい並びになるような書式」に文字列化しておくか、
もしくは、Compareイベントを併用したカスタムソートを行うしかないかと思います。

MSDE側で処理する場合は、SQL発行時に、日付型をのCONVERT関数で変換しておいてください。
Compareイベントを使う場合は、SortプロパティをflexSortCustomにしておいてください。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -