Q35:@テーブルデータから、コンボボックスへの取り込み方法。
ACSVファイルでの最大データ数。
Q35-1:
【質問1.】<行いたい処理内容>
@検索する際、テーブルの1列目の全データを「コンボボックス」に取り込む
A「コンボボックス」に取り込まれたデータを選択
B「検索」ボタン押す
C「テキストフィールド」の商品名、ロットNo.に表示させる
意図)テーブルデータから、コンボボックスへの取り込み方法を教えて頂けないでしょうか?
他検索方法として、テキストボックスに検索条件でワイルドカードを使った検索方法ができるのであれば、教えて頂けないでしょうか?
【質問2.】
CSVファイルでの最大データ数(エクセルだと65536行が最大ですが)はいくつまででしょうか?また、CSVファイルでもデータ数が多いと読込に時間がかかりますが、改善策はありますでしょうか?
A35-1:
1)[コンボボックス]コンポーネントテーブルの特定列のデータを設定する方法
@テーブル
メソッド:getColumnData(int)
引数:取り出したい列の列番号(0から開始)
Aコンボボックス
メソッド:全項目のラベル名を設定する(PFObjectList)
<引数>取得方法:メソッド処理結果
メソッド/値:getColumnData(テーブル)
というような設定を行ってください。
「取得方法:メソッド処理結果」は同じイベントに接続されていて、処理が終わっているメソッドの結果を取得する時に選択します。
2)テキストフィールドのテキスト文字列を使ってテーブルの値を検索するには[文字列格納変数]コンポーネントの「メソッド:matches(String)」を使ってテーブルデータの行数分、照合します。
「.*」がワイルドカードに相当する表現となります。
正規表現については、以下のURLのページをご覧下さい。
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/util/regex/Pattern.html
簡単なサンプルアプリケーションを作成いたしましたので、関連ファイルに掲載いたします。
テーブル検索1.mzaxにはコンボボックスの設定、テーブル検索2.mzaxにはテキストフィールドのテキスト文字列を使った検索の設定をしてあります。
また、[データベースアクセス]コンポーネントを使って、一種のデータベースとしてSQL文でCSVファイルを読込む方法もあります。
検索条件を付加したSQL文は
Select * from テーブル名 where 項目名 like '検索値'となります。
「%」がワイルドカードですので、例えば検索値は「%文字列%」とします。
[データベースアクセス]コンポーネントを使ったアプリケーションについては「データベースアクセスチュートリアル」をご覧頂き、また、サンプルファイル「データベースアクセス.mzax」上で上記のSQL文をお試し下さい。
【回答2】CSVファイルの最大データ数について
[CSV入力]、[CSV出力]コンポーネントを使ってCSVファイルを読込む場合特にデータ数の制限はありません。
但し、データ数が多いとGUIのテーブルに読み込みの際に負荷が大きくなってしまいますので、一旦テーブル格納変数に格納して、行数を分けたり、必要なデータだけ取出して、GUIのテーブルに表示するようにお願い致します。
関連ファイル:テーブル検索1.mzax、テーブル検索2.mzax (※このファイルは、ZIP形式に圧縮してあります。)