データの更新 ~PowerBuilder 入門!!第 6 弾 (4)~

みなさん、こんにちは!

このブログは、「PowerBuilder ってなに?」「PowerBuilder ってなにができるの?」という疑問に、IT 用語の解説もしつつ、簡単に分かりやすくお答えすることをモットーにしています。

気になる方はぜひ続きを見てみてくださいね。

キャラクター紹介

ねこぴ自己紹介

ねこぴ

PowerBuilder の日本語版オリジナルキャラクター。
(猫に見えるが) PowerBuilder の先生。

最近、海外の朝ごはん動画を見るのが好き。

ちまき自己紹介

ちまき

PowerBuilder をこれから学びたい開発初心者。

最近、プロテインを買ってみたけど飲むタイミング見失いがち。

ある日の午後のこと・・・。

ねこぴ話す

動画を見ていると知らない国の料理がたーくさんあるにゃ。

アゼルバイジャンの大きいパリパリのパンはめっちゃおいしいそうにゃ。

ちまき笑う

アゼルバイジャンの大きいパリパリパン・・・!!

食べてみたいです!

ねこぴ驚く

じゃあねこぴ様が自らの腕を振るうときがやってきたかにゃ!

流行に乗って買ってしまい結局使っていない電化製品がやっと活躍するときかにゃ・・・!?(あるあるにゃ)

ちまきつっこむ

じゃ、まずはその買いすぎた電化製品の片づけからお願いしますね。

前回はデータウィンドウ内の行削除の回でしたよね!

ねこぴ説明

そうだにゃ。

今回はいよいよ入力したデータを「更新」するにはどういったコードが必要か見ていくにゃ。

そして片づけはしたくないにゃ。

ちまき挨拶

よろしくお願いします!(これはスルーで!)

 

前回のブログでは「データウィンドウ内の行削除」について解説していきました。

今回はカラムへのデータ入力とそのデータを「更新」ボタンでテーブルに更新する方法について説明していきます。

ですがこれだけですと、以前ご紹介した更新についての記事と変わらなくなってしまうので・・・

入力したデータに対してエラーチェックをして、問題がなければデータベースに更新するという方法を解説していく伏線として今回はご覧ください(^◇^)


PowerBuilder って何なの?と思ったあなた!

PowerBuilder 入門ブログシリーズ第 1 弾をぜひご覧ください(^◇^)

PowerBuilder とは? ~PowerBuilder 入門!! 第 1 弾~

 

動画で分かりやすく PowerBuilder について知りたいなあという方は・・・

YouTube で PowerBuilder 入門シリーズの動画を公開中!なので要チェック★

最新の動画はこちらから!↓↓↓


復習です。いま住所録には 60 件分の個人データが登録されています。

前回は様々なメソッドを使用してデータウィンドウに追加した新規行を削除しました。

では前々回と前回とはがらりと変わり、データウィンドウに追加したデータに対して確認用のメッセージボックスが出るようにするには、どういったコードを書くのか見ていきましょう(`・ω・´)ゞ

たとえばエラーチェックだと、「住所は全角で入力してください」や、「数字のみが入力可能です」などのメッセージボックスが表示されることがありますよね。データ入力のチェック時にそのようなメッセージボックスが表示できたらもっとアプリっぽいかなーって思いますよね。

今回は、まずは更新ボタンを押した後、更新が上手くできた場合とできなかった場合、どのようにコードを書くか見ていきます。

「w_adr_app」のウィンドウオブジェクトを開き、

「更新」のコマンドボタンを右クリックでスクリプトを開きます。

 

更新のスクリプト

 

スクリプトビューが表示されるのでコードを記述していきます。

データを入力後、「更新」ボタンを押すと「入力したデータを登録しますか?」というメッセージボックスを表示させるコードになります。

同様のアプリを作成したい場合は、画面と同じコードを記述してみてください。

 

更新ボタンのスクリプト

 

さて、コードの解説に移りましょう。

まずいつもの通り、「/*登録処理*/」というのはコメントでしたね。

次に integer 型の変数を宣言します。これは後に出てくる Update メソッドの戻り値を受け取るためですね。

そして・・・今日のハイライト\(^o^)/(もう出てくんのかい)

「//登録確認」の部分です。まずは以下のコードですね。

IF messageBox ("登録", "入力した情報を登録しますか?", Question!, YesNo!,2) = 1 THEN
   li_ret = dw_list.Update() ;

これは以前も出てきた MessageBox 関数でしたね!

以下 MessageBox 関数について動画でも解説しています!

 

 

つまりこのコードは、「登録」というタイトルにクエスチョンマークのアイコンと「入力したデータを登録しますか?」というメッセージが表示されているウィンドウで、ボタンの選択肢として「はい」と「いいえ」があるという意味です。

このようなメッセージボックスが表示されます。

 

MessageBoxダイアログ

 

このメッセージボックスに対して 「はい」 (内部的には 1 が付与されているボタン。ちなみに「いいえ」は 2 という番号が付与されている)が押された場合、li_ret = dw_list.Update() が発動するという意味ですね。

Update メソッドに関しては、「更新」を分かりやすく解説しまくりましたページがあるので、なんだっけという方は

こちらをご参考に(^^)

まあ言ってしまうとですね笑

dw_1 というデータウィンドウに入力された情報をデータベースに更新するという意味になります。

ここまでは分かりやすい!


それな!という感じですけども(`・ω・´)

そのためにはエラーチェックのコードを用意する必要がありますね!それが以下の部分です。

 

更新失敗用コード

 

ここで構文のコーディングする場合の規約を解説をしますね。

まず基本的な制御構造は以下となります。

 

構文のまとめ

 

基本ルール

  • 変数はスクリプトの先頭で宣言する(途中宣言は不可)
  • 変数の型は先頭のみ大文字とする(String、Long など)
  • 共通処理は関数化または共通イベント化を検討する

上記のルールを守った上で制御構造としては・・・構文は大文字で記述してくださいね!

また、分岐が多岐に渡る場合は IF~ELSE ではなく、CHOOSE CASE を使用すると便利です。

上記を踏まえると、今回のコードは分岐が 2 つなので IF 文を使用していますね。

IF li_ret <0 THEN 
   ROLLBACK;
   MessageBox ("エラー", "データの更新に失敗しました。", StopSign!, OK!) 
ELSE
   COMMIT;
   MessageBox ("登録", "登録しました。", Information!, OK!) 
END IF

Update メソッドに関しては、メソッドが正常に終了した場合は 1 を返し、エラーが発生した場合は -1 を返します。

なので dw_1 のデータウィンドウを Update メソッドで更新した際、0 より低い値が戻り値として帰ってきた場合は、ROLLBACK で処理を止め、MessageBox 関数によってエラーのウィンドウが出るようにしています。

一方で、ELSE で -1 以外の場合、要は 1 が返ってきた場合は、COMMIT で更新を行い、「登録しました。」というメッセージが返ってくるようになっていますね。


ではこの状態でアプリケーションを実行してみたいと思います!

まず検索ボタンを押して・・・

 

検索ボタン押下

 

そして [行追加] のボタンを押すと、新しく行が追加されました!・・・よね?\(^o^)/

 

行ボタン押下

 

データを入力して、更新ボタンを押してみましょう。すると先ほどコードで設定したメッセージが表示されましたね!

では、「はい」を押してみます。

 

更新内容記述

 

見事更新されました\(^o^)/

 

更新終了メッセージ

 

再度アプリを実行し、きちんと反映されているか確認します。反映されてますね!

 

更新確認

 

ちまき疑問

やったー!上手くできてますね!

更新はこんな風にメッセージ付きで行うと分かりやすいですね。

ねこぴ回答

そうだにゃ!

さて、次回は更新時に入力項目の確認ができるようなコードを書いていくにゃ。


PowerBuilder マイグレーション
PowerBuilder学習、動画で始めちゃう?