Chapter 10: 閉じる時、多重化、その他
"住所録" と "郵便番号簿" フォームに 開始時に "Startup" ボタンを実行するように設定していますが
同様に、フォームを閉じるときについても準備しておくことをお勧めします。
フォームには、開くときと閉じるときに実行する手続きを記載する "枠" を標準として準備しておくということです。
*準備している手続きの中身は何もなくてもかまわないということです。
フォーム "住所録" と "郵便番号簿" に設定しているコマンドボタンの属性を次のように変更してくだい。
"cmdMainMenu" ボタンの属性
----------
"cmd郵便番号簿" ボタンの属性
----------
"cmd住所録" ボタンの属性
"住所録" のイベントは次のようになります。 | "郵便番号簿" のイベントは次のようになります。 |
これで、フォーム起動時には "Startup"ボタンを実行して、フォームを閉じる際には "Close" を実行する というルーチンができあがりです。
変数値を保存している表ファイルですが、 "変数保存表.tbx" が開かれている場合には エラーが発生します。
そこで次のように "変数保存表.tbx" がすでに開かれているときには、多重化して開きます。
* "変数保存表.tbx" は実際の作業時にユーザーが開く表ではないので本来は不要な処理ですね(ここでは学習の為ということです)。
次の変更部分は、"住所録"、"郵便番号簿" 両方とも同じになります。
また ライブラリ "Yubinjyusho.CMX" は次のように変更します。
変更が終わったら動作を確認してみましょう。"変数保存表.tbx" を開いたまま、
フォーム "住所録"では フッタ表示 、 フォーム "郵便番号簿"
ではファイル選択 をしてみてください。
ここでは 表 " 変数保存表.WTX " を編集対象表にするフォームがありません(本来ユーザーが開いたり編集するものではないからです)。
通常の作業中に、フォームを開いていて表示状態ではなく編集状態の時には表を多重化することができません。
その場合コメント行のサンプルのように(下線 青 の部分です)
"
メソッド呼び出し ハンドル = &openTblNum,@フォーム.更新モード設定( 0 ) " として表示モードに切り替えます。
*フォームウィンドウのハンドルと編集対象表の表番号は同値になります。
その他 ( Tips )
"郵便番号簿"フォームを定義画面で開いて、テキストボックス "txt読み込みファイル名表示" を作成してください。
属性のソースは #ファイル名( &m読み込みファイル名 , 2 ) としてください。
最後に ファイル選択の為の入力支援ボタンが付いている "txt読み込みファイル名"オブジェクトの上に重ねます。
*出来上がったら、フォームを開いてその効果を確かめてください。
以上でこの講座は終了です。お役に立てれば幸いです。
参考:ライブラリ "Yubinjyusho.CMX"
1 | ***** バージョンとか日付やタイトル等を付けておくとよいかも ***** |
2 | |
3 | 手続き定義開始 フッタ部を表示( ) |
4 | 変数宣言 自動,文字列{ §ionName } |
5 | 変数宣言 自動,整数 { &isSection, &visible } |
6 | |
7 | §ionName = "フォームフッタ部" |
8 | メソッド呼び出し @フォーム.オブジェクト検査( §ionName, &isSection ) |
9 | |
10 | if ( &isSection ) |
11 | オブジェクト操作 @フォームフッタ部{ &visible = 画面表示 } |
12 | &visible = .not &visible |
13 | オブジェクト操作 @フォームフッタ部{ 画面表示 = &visible } |
14 | end |
15 | |
16 | * このプロシージャは、表示と非表示をトグル処理します。なおフォームを開いたときフッダの既存値は表示状態になります。 |
17 | 手続き定義終了 |
18 | |
19 | 手続き定義開始 変数書出( 文字列 &変数名 , 文字列 &変数値 , 文字列 &変数保存表 ) |
20 | 変数宣言 自動,整数 { &exportTblNum , &検索結果 } |
21 | 変数宣言 自動, 整数 { &openTblNum = #表番号取得 ( &変数保存表 ) } |
22 | |
23 | if ( &openTblNum > 0 ) |
24 | 編集表 &openTblNum |
25 | * メソッド呼び出し ハンドル = &openTblNum,@フォーム.更新モード設定( 0 ) /* <編集対象表があるフォーム>ではハンドルと表番号は同値です。*/ |
26 | 多重化 /* フォームが編集モードの場合、多重化できません。 */ |
27 | &exportTblNum = #IS表 |
28 | else |
29 | 表 &変数保存表 |
30 | &exportTblNum = #IS表 |
31 | end |
32 | |
33 | 検索 [変数名] { &変数名 } , 終了状態 = &検索結果 |
34 | if ( &検索結果 = 1 ) |
35 | 行訂正 [変数値] = &変数値 |
36 | else |
37 | 行追加 [変数名] = &変数名 , [変数値] = &変数値 |
38 | end |
39 | 終了 表 &exportTblNum /* "変数保存表.tbx" を閉じる */ |
40 | |
41 | 編集表 &hwindow /* 確実にもとの編集対象表に戻しておきます。 */ |
42 | 手続き定義終了 |
43 | |
44 | 手続き定義開始 変数値代入文字列( 文字列 &変数名 , 参照 文字列 &変数値 ) |
45 | 変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) } |
46 | 変数宣言 自動,文字列{ &表現式 } /* &表現式 をつかうことで、&変数名 の値を保持したままにできます */ |
47 | 変数宣言 自動,整数 { &検索結果 } |
48 | |
49 | &表現式 = "*" + &WQ + &変数名 + &WQ + "*" /* 準備した &表現式に 式の値を代入しています */ |
50 | 検索 [変数名] _ &表現式 , 終了状態 = &検索結果 |
51 | &変数値 = #u |
52 | if ( &検索結果 = 1 ) |
53 | &変数値 = [変数値] |
54 | end |
55 | 手続き定義終了 |
56 | |
57 | 手続き定義開始 変数値代入数値 ( 文字列 &変数名 , 参照 数値 &変数値 ) /* 整数と数値でもデータ型は異なります */ |
58 | 変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) } |
59 | 変数宣言 自動,文字列{ &表現式 } /* &表現式 をつかうことで、&変数名 の値を保持したままにできます */ |
60 | 変数宣言 自動,整数 { &検索結果 } |
61 | |
62 | &表現式 = "*" + &WQ + &変数名 + &WQ + "*" /* 準備した &表現式に 式の値を代入しています */ |
63 | 検索 [変数名] _ &変数名 , 終了状態 = &検索結果 |
64 | &変数値 = #u |
65 | if ( &検索結果 = 1 ) |
66 | &変数値 = #数値( [変数値] ) |
67 | end |
68 | 手続き定義終了 |
69 | |
70 | 手続き定義開始 変数値代入整数 ( 文字列 &変数名 , 参照 整数 &変数値 ) /* 整数と数値でもデータ型は異なります */ |
71 | 変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) } |
72 | 変数宣言 自動,文字列{ &表現式 } /* &表現式 をつかうことで、&変数名 の値を保持したままにできます */ |
73 | 変数宣言 自動,整数 { &検索結果 } |
74 | |
75 | &表現式 = "*" + &WQ + &変数名 + &WQ + "*" /* &表現式という変数を準備して、&変数名 = "*" + &WQ + &変数名 + &WQ + "*" よりも分かり易く */ |
76 | 検索 [変数名] _ &表現式 , 終了状態 = &検索結果 |
77 | &変数値 = #u |
78 | if ( &検索結果 = 1 ) |
79 | &変数値 = #整数( [変数値] ) |
80 | end |
81 | 手続き定義終了 |
参考:郵便番号簿
1 | 名札 メイン |
2 | |
3 | 変数宣言 局所,文字列 { &m編集対象表 = #一括パス名 + "郵便番号簿.tbx" } |
4 | オブジェクト操作 @フォーム.編集対象表 = &m編集対象表 /* 編集対象表は、メイン処理でのみ変更できます */ |
5 | |
6 | 変数宣言 局所,文字列 { &m変数保存表 = #一括パス名 + "変数保存表.tbx" } |
7 | 変数宣言 局所,文字列 { &m読み込みファイル名 } |
8 | |
9 | ライブラリ #一括パス名 + "Yubinjyusho.cmx" |
10 | * |
11 | |
12 | 手続き定義開始 cmdStartupClick( ) |
13 | 手続き実行 prc変数読込( &m変数保存表 ) |
14 | 手続き定義終了 |
15 | |
16 | 手続き定義開始 cmdMainMenuClick( ) |
17 | 手続き実行 prcClose() |
18 | 手続き定義終了 |
19 | |
20 | 手続き定義開始 cmd住所録Click( ) |
21 | 手続き実行 prcClose() |
22 | 手続き定義終了 |
23 | |
24 | 手続き定義開始 prcClose( ) |
25 | * フォームを閉じる際の手続きを記載します。 |
26 | 手続き定義終了 |
27 | |
28 | 手続き定義開始 prc変数読込( 文字列 &変数保存表 ) |
29 | 変数宣言 自動,文字列 { &ファイル名 = #ファイル名( &m編集対象表 , 2 ) } /* 2:ファイル名 */ |
30 | 変数宣言 自動,文字列 { &STRbak , &変数値 } |
31 | 変数宣言 自動,整数 { &importTblNum , &openTblNum } |
32 | &STRbak = &STR /* &STR の値を 自動変数 &STRbak に退避 */ |
33 | |
34 | &openTblNum = #表番号取得 ( &変数保存表 ) |
35 | if ( &openTblNum > 0 ) |
36 | 編集表 &openTblNum |
37 | 多重化 |
38 | &importTblNum = #IS表 |
39 | else |
40 | 表 &変数保存表 /* 変数保存表.tbx を開く */ |
41 | &importTblNum = #IS表 |
42 | end |
43 | |
44 | &STR = &ファイル名 + "," + "m読み込みファイル名" /* 局所変数は使用するフォーム専用となるので編集対象表名も検索値の一部です。*/ |
45 | 手続き実行 変数値代入文字列( &STR , &m読み込みファイル名 ) /* 引数は 検索する値 , 値を代入する変数名 の順に並べてみました。 */ |
46 | * 手続き実行 変数値代入数値( "固有変数の場合ファイル名を付加していない" , &g数値型の固有変数名 ) |
47 | |
48 | 終了 表 &importTblNum /* 変数保存表.tbx を閉じる */ |
49 | &STR = &STRbak /* &STRbakの値を 組み込み変数 &STR に戻す */ |
50 | |
51 | 編集表 &hwindow /* 確実にもとの編集対象表に戻しておきます。 */ |
52 | メソッド呼び出し @フォーム.変数変更() |
53 | 手続き定義終了 |
54 | |
55 | 手続き定義開始 txt読み込みファイル名::ソース値更新() |
56 | 変数宣言 自動,文字列 { &ファイル名 = #ファイル名( &m編集対象表 , 2 ) } /* 2:ファイル名 */ |
57 | 変数宣言 自動,文字列 { &STRbak , &変数値 } |
58 | &STRbak = &STR /* &STR の値を 自動変数 &STRbak に退避 */ |
59 | |
60 | &STR = &ファイル名 + "," + "m読み込みファイル名" /* 保存変数名称:局所変数は使用するフォーム専用なので編集対象表名を付加。*/ |
61 | * 固有変数の場合、編集対象表名を付加する必要はありません。付加するとトラブルの原因になると思います。 |
62 | &変数値 = #ファイル名( &m読み込みファイル名 , 1 ) /* 1:パス名とファイル名と拡張子 */ |
63 | |
64 | 手続き実行 変数書出( &STR , &変数値 , &m変数保存表 ) /* 変数名称、変数の値、変数を保存する表、の順に並べてみました。*/ |
65 | * 手続き実行 変数書出( &STR , #文字列( 文字列以外の変数値 ) , &m変数保存表 ) |
66 | * 変数の値が文字列以外の場合には、#文字列( &文字列以外の変数値 )と文字列に変換して保存します。 \ |
67 | そして値を変数に代入する際には #数値( &文字列以外の変数値 )といった具合に、本来のデータ型に変換します。 |
68 | |
69 | &STR = &STRbak /* &STRbakの値を 組み込み変数 &STR に戻す */ |
70 | 手続き定義終了 |
71 | |
72 | 手続き定義開始 cmdフッタ表示非表示Click() |
73 | 手続き実行 フッタ部を表示( ) |
74 | 手続き定義終了 |
75 | |
76 | 手続き定義開始 cmd郵便番号簿更新Click( ) |
77 | 変数宣言 自動, 文字列 { &title, &msg } |
78 | 変数宣言 自動, 数値 { &ans } |
79 | &title = "cmd郵便番号簿更新Click()" |
80 | &msg = &msg + " << 郵便番号簿を更新します >>" |
81 | &msg = &msg + "\n" |
82 | &msg = &msg + "\n郵便番号ファイルから" |
83 | &msg = &msg + "\n郵便番号簿を更新します。" |
84 | &msg = &msg + "\n" |
85 | &msg = &msg + "\n郵便番号ファイルは" |
86 | &msg = &msg + "\n事前に郵便局のサイトからダウンロードして" |
87 | &msg = &msg + "\n解凍しておいてください。" |
88 | &msg = &msg + "\n" |
89 | &msg = &msg + "\n必ず所定のファイルを指定してから実行してください。" |
90 | メッセージボックス &title, &msg,ボタン指定 = 2,アイコン = !,制御文字展開 = する,&ans |
91 | * アイコン = i|?|!|E| 、ボタン指定 = 1:[OK]のみ|2:[OK]と[キャンセル] |
92 | |
93 | if ( &ans = 1 ) |
94 | 解除 * /* データーが絞り込まれていたりを想定して、解除しておきます */ |
95 | 行削除 * , 圧縮 |
96 | 読み込み CSV,&m読み込みファイル名 , * |
97 | 確認 完了しました。 |
98 | end |
99 | 手続き定義終了 |
参考:住所録
1 | 名札 メイン |
2 | |
3 | 変数宣言 局所,文字列 { &m編集対象表 = #一括パス名 + "住所録.tbx" } |
4 | オブジェクト操作 @フォーム.編集対象表 = &m編集対象表 /* 編集対象表は、メイン処理でのみ変更できます */ |
5 | |
6 | 変数宣言 局所,文字列 { &m変数保存表 = #一括パス名 + "変数保存表.tbx" } |
7 | |
8 | 変数宣言 局所,文字列 { &m入力前値 , &m入力後値 } |
9 | 変数宣言 局所,文字列 { &m郵便番号 } |
10 | |
11 | 変数宣言 局所,整数 { &mフッタ表示 = 1 } |
12 | |
13 | ライブラリ #一括パス名 + "Yubinjyusho.cmx" |
14 | * |
15 | |
16 | 手続き定義開始 cmdStartupClick( ) |
17 | 手続き実行 prc変数読込( &m変数保存表 ) |
18 | 手続き実行 prc起動時フッタ表示( ) |
19 | 手続き定義終了 |
20 | |
21 | 手続き定義開始 cmdMainMenuClick( ) |
22 | 手続き実行 prcClose() |
23 | 手続き定義終了 |
24 | |
25 | 手続き定義開始 cmd郵便番号簿Click( ) |
26 | 手続き実行 prcClose() |
27 | 手続き定義終了 |
28 | |
29 | 手続き定義開始 prcClose( ) |
30 | * フォームを閉じる際の手続きを記載します。 |
31 | 手続き定義終了 |
32 | |
33 | 手続き定義開始 prc変数読込( 文字列 &変数保存表 ) |
34 | 変数宣言 自動,文字列 { &ファイル名 = #ファイル名( &m編集対象表 , 2 ) } /* 2:ファイル名 */ |
35 | 変数宣言 自動,文字列 { &STRbak , &変数値 } |
36 | 変数宣言 自動,整数 { &importTblNum , &openTblNum } |
37 | &STRbak = &STR /* &STR の値を 自動変数 &STRbak に退避 */ |
38 | |
39 | &openTblNum = #表番号取得 ( &変数保存表 ) |
40 | if ( &openTblNum > 0 ) |
41 | 編集表 &openTblNum |
42 | 多重化 |
43 | &importTblNum = #IS表 |
44 | else |
45 | 表 &変数保存表 /* 変数保存表.tbx を開く */ |
46 | &importTblNum = #IS表 |
47 | end |
48 | |
49 | &STR = &ファイル名 + "," + "mフッタ表示" /* 局所変数は使用するフォーム専用となるので編集対象表名も検索値の一部です。*/ |
50 | 手続き実行 変数値代入整数( &STR , &mフッタ表示 ) |
51 | |
52 | 終了 表 &importTblNum /* 変数保存表.tbx を閉じる */ |
53 | &STR = &STRbak /* &STRbakの値を 組み込み変数 &STR に戻す */ |
54 | |
55 | 編集表 &hwindow /* 確実にもとの編集対象表に戻しておきます。 */ |
56 | メソッド呼び出し @フォーム.変数変更() |
57 | 手続き定義終了 |
58 | |
59 | 手続き定義開始 prc起動時フッタ表示( ) |
60 | if ( &mフッタ表示 = 1 ) |
61 | * フォームを開いて変数を読み込んだ値が "1" の時は何もしません(フォーム起動時のデフォルトがフッタ表示状態です)。 |
62 | else |
63 | 手続き実行 フッタ部を表示( ) |
64 | end |
65 | 手続き定義終了 |
66 | |
67 | 手続き定義開始 chkフッタ表示::ソース値更新() |
68 | 手続き実行 フッタ部を表示( ) |
69 | |
70 | 変数宣言 自動,文字列 { &ファイル名 = #ファイル名( &m編集対象表 , 2 ) } /* 2:ファイル名 */ |
71 | 変数宣言 自動,文字列 { &STRbak , &変数値 } |
72 | &STRbak = &STR /* &STR の値を 自動変数 &STRbak に退避 */ |
73 | |
74 | &STR = &ファイル名 + "," + "mフッタ表示" /* 保存変数名称:局所変数は使用するフォーム専用なので編集対象表名を付加。*/ |
75 | 手続き実行 変数書出( &STR , #文字列 ( &mフッタ表示 ) , &m変数保存表 ) |
76 | |
77 | &STR = &STRbak /* &STRbakの値を 組み込み変数 &STR に戻す */ |
78 | 手続き定義終了 |
79 | |
80 | 手続き定義開始 t郵便番号::入力前(参照 文字列 &編集文字列) |
81 | &m入力前値 = &編集文字列 /* 既存入力値を取得します。半角 です。 */ |
82 | 手続き定義終了 |
83 | |
84 | 手続き定義開始 t郵便番号::入力後(参照 文字列 &編集文字列,長整数 &モード,参照 長整数 &入力継続) |
85 | &編集文字列 = #半角 ( &編集文字列 ) /* 全角入力された場合には半角にします。 */ |
86 | &編集文字列 = #TRIM( &編集文字列 , 4 ) /* 空白を取り除きます。 */ |
87 | &m入力後値 = &編集文字列 /* 半角にして空白を取り除いた値になります。 */ |
88 | &m郵便番号 = #文字置換( &編集文字列 , "-" , "" ) /* "-" が入力されている場合は、削除して &m郵便番号 に代入します。 */ |
89 | |
90 | if ( #文字数( &m郵便番号 ) = 7 ) /* 郵便番号は "-"がなければ7桁です */ |
91 | &編集文字列 = #部分列( &m郵便番号 , 1 , 3 ) + "-" + #右側文字列( &m郵便番号 ,4 ) |
92 | * 最初から3文字取り出した値と、4文字目から取り出した値を組み合わせ正しい位置に "-" を入力します。 |
93 | else |
94 | if ( &m入力後値 = #未定義 ) |
95 | * 未定義の場合何もしません。郵便番号を削除した場合に未定義になります。 |
96 | else |
97 | &編集文字列 = &m入力前値 |
98 | &入力継続 = 1 |
99 | * 入力した値が "-" を除いて7桁でない場合には、元の値に戻して再入力状態にします。( &入力継続 = 1 についてはイベントリファレンスを参照してください)。 |
100 | end |
101 | end |
102 | |
103 | * ここまでの処理で \ |
104 | &m入力前値:元々入力されていた値。&m入力後値:半角、空白を取り除いた値。 \ |
105 | &m郵便番号:"-" を除いた値。 &編集文字列(このイベント処理の引数):"-" を追加した値、*#文字数( &m郵便番号 ) = 7 の場合。 \ |
106 | となります。 |
107 | 手続き定義終了 |
108 | |
109 | 手続き定義開始 t郵便番号::編集開始() |
110 | メソッド呼び出し &this.編集選択位置設定( 1 ,-1 ) /* &this は、イベントが発生したオブジェクトの名前が格納されている定数です。*/ |
111 | 手続き定義終了 |
112 | |
113 | 手続き定義開始 t郵便番号::ソース値更新() |
114 | if ( &m入力後値 = &m入力前値 .or &m入力後値 = #未定義 ) |
115 | * 入力前と値が同じ場合、また入力値が削除された場合には何もしません。 |
116 | else |
117 | 手続き実行 prc住所検索() |
118 | end |
119 | |
120 | メソッド呼び出し @t住所2.フォーカス設定() |
121 | 手続き定義終了 |
122 | |
123 | 手続き定義開始 prc住所検索() |
124 | 変数宣言 自動,整数 { ¤tTblNum , &lookupTblNum } |
125 | 変数宣言 自動,文字列 { &住所1 , &住所2 } |
126 | ¤tTblNum = &hwindow /* &hwindowには現在のフォームの編集対象表番号が収納されています。 */ |
127 | |
128 | 表 "郵便番号簿.tbx" |
129 | &lookupTblNum = #IS表 |
130 | |
131 | 検索 [郵便番号]{ &m郵便番号 } |
132 | if ( .not #eof) /* 終端行でなければ。つまり検索値が存在すれば。 */ |
133 | &住所1 = [住所1] , &住所2 = [住所2] + [住所3] |
134 | end |
135 | |
136 | 終了 表 &lookupTblNum /* 郵便番号簿を閉じる */ |
137 | |
138 | 編集表 ¤tTblNum /* 住所録の編集対象に戻る */ |
139 | |
140 | 変数宣言 自動,長整数{&更新モード} |
141 | メソッド呼び出し @フォーム.更新モード取得(&更新モード) |
142 | if ( &更新モード = 0 ) |
143 | 行訂正 [都道府県] = &住所1 , [住所1] = &住所2 |
144 | else |
145 | 項目値代入 [都道府県] = &住所1 , [住所1] = &住所2 |
146 | end |
147 | 手続き定義終了 |
148 | |
149 | |
150 | 手続き定義開始 cmd住所一括更新Click() |
151 | 変数宣言 自動, 数値 { &ans } |
152 | |
153 | 手続き実行 prc実行確認( "cmd住所一括更新Click()" , &ans ) |
154 | if ( &ans = 1 ) |
155 | 手続き実行 prc住所一括更新実行() |
156 | 確認 "完了しました" |
157 | end |
158 | 手続き定義終了 |
159 | |
160 | 手続き定義開始 prc住所一括更新実行() |
161 | 変数宣言 自動,整数 { ¤tTblNum } |
162 | ¤tTblNum = &hwindow /* &hwindowには現在のフォームの編集対象表番号が収納されています。 */ |
163 | 手続き実行 prc住所一括更新処理( ¤tTblNum ) |
164 | ジャンプ 行番号 = 先頭 |
165 | 手続き定義終了 |
166 | |
167 | 手続き定義開始 cmd住所多重化更新Click() |
168 | 変数宣言 自動, 数値 { &ans } |
169 | |
170 | 手続き実行 prc実行確認( "cmd住所多重化更新Click()" , &ans ) |
171 | if ( &ans = 1 ) |
172 | 手続き実行 prc住所多重化更新() |
173 | 確認 "完了しました" |
174 | end |
175 | 手続き定義終了 |
176 | |
177 | 手続き定義開始 prc住所多重化更新() |
178 | 変数宣言 自動,整数 { ¤tTblNum , &multiTblNum } |
179 | ¤tTblNum = &hwindow /* &hwindowには現在のフォームの編集対象表番号が収納されています。 */ |
180 | 多重化 |
181 | &multiTblNum = #is表 /* 多重化した住所録の表番号を取得 */ |
182 | 手続き実行 prc住所一括更新処理( &multiTblNum ) |
183 | 終了 表 &multiTblNum /* 多重化した表を閉じる */ |
184 | 編集表 &hwindow /* 確実にもとの編集対象表に戻しておきます。 */ |
185 | 手続き定義終了 |
186 | |
187 | 手続き定義開始 prc住所一括更新処理( 整数 ¤tTblNum ) |
188 | 変数宣言 自動,整数 { &lookupTblNum } |
189 | 変数宣言 自動,文字列 { &郵便番号 , &住所1 , &住所2 } |
190 | |
191 | 表 "郵便番号簿.tbx" /* 郵便番号簿を開く */ |
192 | &lookupTblNum = #IS表 /* 郵便番号簿の表番号を取得 */ |
193 | |
194 | 編集表 ¤tTblNum /* 使用する表を 住所録 に切り替える */ |
195 | 解除 * |
196 | ジャンプ 行番号 = 先頭 /* 先頭行から順次処理していきます */ |
197 | |
198 | 繰り返し ( .not #eof) /* 終端行でなければ。 */ |
199 | &郵便番号 = [郵便番号] |
200 | &郵便番号 = #文字置換( &郵便番号 , "-" , "" ) /* 郵便番号簿検索のため "-" を削除します。 */ |
201 | |
202 | 手続き実行 prc郵便番号簿検索( &lookupTblNum , &郵便番号 , &住所1 , &住所2 ) |
203 | |
204 | 編集表 ¤tTblNum /* 住所録の編集対象に戻る */ |
205 | &郵便番号 = #部分列( &郵便番号 , 1 , 3 ) + "-" + #右側文字列( &郵便番号 ,4 ) /* 郵便番号に "-" を挿入します。 */ |
206 | 変数宣言 自動,長整数{&更新モード} |
207 | メソッド呼び出し @フォーム.更新モード取得(&更新モード) |
208 | if ( &更新モード = 0 ) |
209 | 行訂正 [郵便番号] = &郵便番号 , [都道府県] = &住所1 , [住所1] = &住所2 |
210 | else |
211 | 項目値代入 [郵便番号] = &郵便番号 , [都道府県] = &住所1 , [住所1] = &住所2 |
212 | end |
213 | |
214 | ジャンプ 行番号 = 次行 |
215 | 繰り返し終了 |
216 | |
217 | 終了 表 &lookupTblNum /* 郵便番号簿を閉じる */ |
218 | 手続き定義終了 |
219 | |
220 | 手続き定義開始 prc郵便番号簿検索( 整数 &TblNum , 文字列 &郵便番号 , 参照 文字列 &住所1 , 参照 文字列 &住所2 ) |
221 | &住所1 = #u , &住所2 = #u /* 初期化します。 */ |
222 | 編集表 &TblNum /* 郵便番号簿に切り替えます */ |
223 | 検索 [郵便番号]{ &郵便番号 } |
224 | * &住所1 = #u , &住所2 = #u /* 検索する前に変数の値を初期化します。 */ |
225 | if ( .not #eof) /* 終端行でなければ。つまり検索値が存在すれば。 */ |
226 | &住所1 = [住所1] , &住所2 = [住所2] + [住所3] |
227 | * else |
228 | * &住所1 = #u , &住所2 = #u /* 検索値がない場合、変数の値を初期化します。 */ |
229 | end |
230 | 手続き定義終了 |
231 | |
232 | 手続き定義開始 cmd住所併合更新Click() |
233 | 変数宣言 自動, 数値 { &ans } |
234 | |
235 | 手続き実行 prc実行確認( "cmd住所併合更新Click()" , &ans ) |
236 | if ( &ans = 1 ) |
237 | 解除 * |
238 | 置換 [郵便番号] = #文字置換( [郵便番号] , "-" , "" ) |
239 | 併合 "郵便番号簿.tbx" , 置換 , {[郵便番号]照合[郵便番号],[都道府県]複写[住所1],[住所1]複写[住所2],[住所1]連結[住所3]} |
240 | 置換 [郵便番号] = #部分列( [郵便番号] , 1 , 3 ) + "-" + #右側文字列( [郵便番号] ,4 ) |
241 | 確認 "完了しました" |
242 | end |
243 | 手続き定義終了 |
244 | |
245 | 手続き定義開始 prc実行確認( 文字列 &title , 参照 数値 &ans ) |
246 | &ans = 0 /* 参照値の初期化 */ |
247 | 変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) } |
248 | 変数宣言 自動, 文字列 { &msg } |
249 | * 変数宣言 自動, 文字列 { &title, &msg } /* &title は、引数ですでに宣言済みです */ |
250 | * 変数宣言 自動, 数値 { &ans } /* 引数ですでに宣言済みです */ |
251 | * &title = "" /* &title の値は引数で受け取り済みです */ |
252 | &msg = &msg + " << 住所を更新します >>" |
253 | &msg = &msg + "\n" |
254 | &msg = &msg + "\n郵便番号から" |
255 | &msg = &msg + "\n都道府県と住所1を更新します。" |
256 | &msg = &msg + "\n" |
257 | &msg = &msg + "\n郵便番号の " + &WQ + "-" + &WQ +" を一旦取り除いて" |
258 | &msg = &msg + "\n郵便番号簿の住所で更新します。" |
259 | &msg = &msg + "\nその後新たに " + &WQ + "-" + &WQ +" を付け直します。" |
260 | &msg = &msg + "\n" |
261 | &msg = &msg + "\n実行しますか?" |
262 | メッセージボックス &title, &msg,ボタン指定 = 2,アイコン = ?,制御文字展開 = する,&ans |
263 | * アイコン = i|?|!|E| 、ボタン指定 = 1:[OK]のみ|2:[OK]と[キャンセル] |
264 | 手続き定義終了 |
265 | |
266 | |
267 | 手続き定義開始 cmdテストデータ読み込みClick() |
268 | 変数宣言 自動,整数 { ¤tTblNum , &importTblNum } |
269 | ¤tTblNum = &hwindow /* &hwindowには現在のフォームの編集対象表番号が収納されています。 */ |
270 | 解除 * |
271 | 行削除 * , 圧縮 |
272 | |
273 | 表 "郵便番号簿.tbx" |
274 | &importTblNum = #IS表 |
275 | 絞り込み [住所1]{*"東京都"*} |
276 | 絞り込み [住所2]{*"千代田区"*} |
277 | |
278 | 編集表 ¤tTblNum /* 住所録に戻る */ |
279 | 読み込み 表,"郵便番号簿.tbx",{[郵便番号][郵便番号]} |
280 | |
281 | 終了 表 &importTblNum /* 郵便番号簿を閉じる */ |
282 | 確認 "完了しました" /* 終わりの目印ですね */ |
283 | 手続き定義終了 |