Tips

Filling Combo Boxes With The Result Of A Query

日付2003/04/18
ID26995 (英語原文参照)
バージョン6.8
プラットフォームMac & Win

タイトル
U.S)Filling Combo Boxes With The Result Of A Query
JP)クエリの結果をコンボボックスに表示

このTipsでは、コンボボックスにクエリによって返されたレコードを選択するため、フィールドから値を表示する方法を説明します。

以下のインターフェースがあり、カレントカスタマーの特定のインボイスの詳細を表示するとします。
フォームの右上にコンボボックスがあります。この顧客に属しているインボイス番号のデフォルト値を割り当てます。



コンボボックスをクリックしてこの顧客に属している全てのインボイス番号のリストを表示します。



以下の画像は、選択したインボイス番号をコンボボックスに表示しています。



コンボボックスからカーソルを移動させて、指定したインボイスを表示します。



これは以下のように作成しました。

1. フォームにコンボボックスを置く。
2. コンボボックスの変数名を指定します。この例では「aLInvoiceNbs」とします。
3. コンボボックスの変数タイプを指定します。この例では、ソースフィールドが倍長整数なので数値とします。
4. 次のイベントにチェックします:On Load、On Data Change。
On Loadイベントに割り当てたコードがコンボボックスを初期化します。コンボボックスから値を選択または入力してコンボボックスのデータを変更した場合、On Data Changeに割り当てたコードをコンボボックスからカーソルを移動した時に実行します。
5. 他のイベントのチェックをはずします。
6. コンボボックスのオブジェクトメソッドに以下のコードを割り当てます。
Case of
\(Form event=On Load )

`カレントカスタマーのインボイスを検索
QUERY([Invoices];[Invoices]CustomerID=[Customers]CustomerID)
`配列にインボイス番号をロード
SELECTION TO ARRAY([Invoices]InvoiceNo;aLInvoiceNbs)
`インボイスの配列を昇順でソート
SORT ARRAY(aLInvoiceNbs;>)
`コンボボックスに表示するデフォルト値である
`配列の最初の要素に値を割り当てる
aLInvoiceNbs{0}:=aLInvoiceNbs{1}

`コンボボックスからカーソルを移動した時
\(Form event=On Data Change )
`選択したレコードの検索とロード
QUERY([Invoices];[Invoices]InvoiceNo=aLInvoiceNbs{0})
`選択したレコードを表示
MODIFY RECORD([Invoices])
End case
7. 配列の内容をコンボボックスに表示するため、配列とコンボボックスは同じ名前である必要があります。