投稿日 | : 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にしておいてください。