この特集のトップページへ
Chapter 7:プレゼンテーション層の構築

7.7.3 伝票情報の新規作成と編集
●伝票の新規登録のためのフォーム初期化
 次に,伝票を新規に登録するときの処理について考える。伝票を新規に登録するには,フォーム上のテキストボックスの内容をクリアし,ユーザーからの入力を受け取れるようにすればよい。ただし実際には,それに伴ってもう1つ処理をしなければならない。その処理とは,すでに登録している顧客のなかから,伝票の取引先となる顧客をユーザーが選択できるよう,COMBO_CUSTOMERコンボボックスに全顧客の一覧(ただし削除ずみの顧客は省く)を格納するという処理である(Fig.7-88)。

Fig.7-88 コンボボックスで顧客を選択できるようにする
fig7_88

 そこで,List 7-121に示すFillComboというプロシージャを実装する。FillComboプロシージャは,Business.CustomerコンポーネントのGetCustomersメソッド(List 6-51)を用いて全顧客を取得し,それをCOMBO_CUSTOMERコンボボックスに格納するという機能を備える。また,FillComboプロシージャは,選択状態としたい顧客番号を受け取ると,その顧客を選択状態として表示する機能を備えている。選択状態にするという処理の詳細は,「●製品一覧をコンボボックスに格納する」を参照してほしい。

 さて,コンボボックスに顧客一覧の登録をするプロシージャを用意したところで,伝票を新規に登録するためのフォームの初期化のプロシージャを作る。ここではList 7-122に示すNewSlipというプロシージャを利用する。NewSlipプロシージャはList 7-121で実装したFillComboプロシージャを呼び出してコンボボックスに顧客の一覧を設定したのち,各テキストボックスの内容をクリアするという処理をしている。ただし,納入予定日(TXT_DELIVERDATE)のテキストボックスに関しては現在の日付を格納するようにした。

 また,詳細はあとから説明するが,伝票を作成するときには伝票自体がまだ作られていないために,[納期算出]ボタン(BTN_CALC)は使えない。そこで23行目にあるように,淡色表示とするように設定している。

 なお,25行目で-1を設定しているグローバル変数SlipIDは,その時点で編集中の伝票の伝票番号を保持する変数である。この変数には,新規伝票作成時に-1を格納するものと決める。これにより,[OK]ボタンが押されたときにグローバル変数SlipIDの値を調べることで,新規作成なのか編集なのかを判断することができるようになる。つまり,状況に応じて,伝票を新規に作成する処理と更新する処理とを切り替えることができるようになる(その実装はすぐのちに説明する)。

 さて,FormSlipフォーム(Fig.7-86)の[新規]ボタン(BTN_NEW)が押されたときの処理内容は,まずList 7-122に示したNewSlipプロシージャを呼び出し,そのあとFormEditSlipフォームをモーダル表示するというものとなる。これにより,ユーザーが[新規]ボタンを押したときに,初期化されたFormEditSlipフォームが表示され,伝票を新規作成することができるようになる。このような処理は,List 7-123のようにして実装すればよい。

 なお,List 7-123の6〜13行目は,ユーザーが新規作成した伝票を,DGrid_Slipデータグリッドに表示されている伝票一覧に反映させる処理である。のちに実装するが,FormEditSlipフォームでは,ユーザーが作成した伝票の伝票番号をFormEditSlipフォームのグローバル変数SlipIDに格納する。List 7-123の7行目では,このグローバル変数SlipIDの値を参照し,伝票が作成されていたならば(-1でなかったならば),DGrid_Slipデータグリッドを更新したのち,ADODB.RecordsetオブジェクトのFindメソッドを使って新規作成された伝票にカレント行を合わせるという処理をしている。


One Point! 絞り込みの設定において,作成中の伝票を表示しないような設定にしていた場合(Fig.7-81において[作成中]にチェックが付いていない場合)には,新規に作成された伝票がDGrid_Slipデータグリッドに表示されないこともあり得る。その場合,Findメソッドの呼び出しによって該当するレコードは見つからないため,カレント行はEOFになる。その場合にも,別段エラーとなるわけではないので,ここではそういった特殊な状況のことは考えないことにする。
Prev 100/134 Next