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

●[削除]ボタンが押されたときの処理

 次に,ユーザーが[削除]ボタン(BTN_DELETEボタン)を押したときに,その時点でDGrid_Billデータグリッド上でカレント行となっている請求書を削除する処理を実装する。請求書を削除するには,Business.BillコンポーネントのDeleteBillメソッド(List 6-197)を使えばよい。その実装は,List 7-193のようになる。

7.8.2 各ボタンが押されたときの処理
●[手動請求書一斉作成]ボタンが押されたときの処理
 [手動請求書一斉作成]ボタン(BTN_MAKEBILLボタン)が押されたときには,Fig.7-108で示すウィンドウを表示し,ユーザーに日付を入力させ,その日付を締め日とする請求書を作成する。たとえば,Fig.7-108にユーザーが「2000/09/05」と入力したとすると,2000年9月5日分の請求書を作るようにする。より詳しくいえば,5日が締め日に指定されている顧客を取引先とする伝票を集計し,請求書を作成するということになる。


One Point! このアプリケーションで請求書を作成する対象となる伝票は,「経理処理ずみ」の状態まで進んだ伝票のみである。


One Point! これから実装する処理では,「2000/09/05」と入力したときに作られる請求書は,あくまでも締め日が5日に設定されている顧客に対する請求書のみである。「2000/09/05」と入力したとき,締め日が5日に設定されている顧客以外に,締め日が4日や3日,2日,1日に設定されている顧客の請求書も作成するような処理にはしない。もし,「2000/09/05」と入力したときに1〜5日までの請求書を一括作成する処理のほうが実務に則すというのであれば,後述するList 7-194において,ユーザーが入力した日付から1日までをループ処理すればよく,その実現はたやすい。

Fig.7-108 締め日の入力fig7_108

 このアプリケーションでは,WindowsScriptingHostとタスクの機能を使って,毎日一定時間に伝票を集計して請求書を作成することを基本としている。その処理については,すでに「6.6.2 請求書の作成」にて実装してある。しかし,場合によっては請求書を作成するスクリプトがシステムの問題などで停止してしまうことがあり得るので,それを補完する目的で,[手動請求書一斉作成]ボタン(BTN_MAKEBILLボタン)を用意している。

 請求書を作成するには,Business.BillコンポーネントのMakeBillsメソッド(List 6-174)を使えばよい。その処理は,List 7-194のようになる。List 7-194では,ユーザーにFig.7-108で示したウィンドウを表示して日付を入力させるという処理に,すでにFig.7-90で実装したFormInputMsgフォームのGetMessageプロシージャ(List 7-132)を利用している。そして13行目で,ユーザーが入力した日付をBusiness.BillコンポーネントのMakeBillsメソッドに渡すことにより,請求書を作成している。

お詫びと訂正

 List 6-174に示したBusiness.BillコンポーネントのMakeBillsメソッドに不具合があることがわかった。どのような不具合かというと,請求書を作成する際,伝票が1つもないときに実行時エラーが発生してしまうというものである。そこで,MakeBillsメソッドをList 7-195のように訂正させていただく。

 List 7-195で訂正した箇所は,74行目のIf文を追加したことである。もともとのList 6-174では,このIf文がなかったため,伝票が見つからなかったときにEOFのレコードにアクセスしてしまい,実行時エラーが発生するという不具合があった。そこで,EOFであったときには,75〜108行目の処理を実行しないように訂正した。

Prev 125/134 Next