第11回 エンバカデロ・デベロッパーキャンプB5セッション自己フォロー(その1:TJvCsvDataSet編)

レジュメP33のFieldDefsプロパティの件は完全に間違い。てか、なんでこんなことを書いたんだろ>俺
最終版を送ってから、台本のデバッグ最中で気がついた。orz
厳密には、CsvFieldDefプロパティでCSVファイルの各フィールドの形式を決定してから、FieldDefsプロパティで各フィールドの書式を決定する。この辺は、普通のデータセットコンポーネントと同じ。

Filterプロパティは動作しないけど、代わりにSetFilterメソッドで文字列として比較*1、SetFilterNumメソッドで数値として比較、SetFilterOnNullメソッドでNull値かどうかの比較が可能。これらを使えば最低限フィルタリングが出来る。フィルタの解除はClearFilerメソッド。 あと、フィールドの並び替えはSortメソッドで行う。

JvCsvDataSet1->Sort("HEIGHT", true); // HEIGHTフィールドを昇順でソート。falseだと降順でソート
JvCsvDataSet1->SetFilterNum("HEIGHT", jfGreaterThan, 3000.0); // HEIGHTフィールドが3000以上のを抽出 

12/10 追記:
レジュメとサンプルコード(C++Builder)がダウンロード可能になりました。
サンプルコードのDelphi版って必要かな・・・。

*1:ドキュメントによると、SQLワイルドカードが使えるみたいだけど動かん