メールマガジン【アクセスで作るシリーズ】
バックナンバー 【住所録ソフト編】 Vol.26
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
ACCESSで作るシリーズ 【住所録ソフト編】
発 行 : Yoshihisa Fukuda 2002.07.06 Vol.26
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
今回は、郵便番号データ取込・更新フォームの実行ボタンのプログラム解説です。
______________________________________
□ 郵便番号データ取込・更新フォーム実行ボタンのプログラム解説。
郵便番号データ取込・更新フォームの[実行]ボタン(ExecuteBtn)の[クリック時]
イベント Private Sub ExecuteBtn_Click() のプログラム解説です。
If IsNull(Me.FileName1) Then
MsgBox "ファイル名を入力して下さい。"
Exit Sub
End If
If IsNull(Me.LatestDate) Then
MsgBox "ファイル最新日付を入力して下さい。"
Exit Sub
End If
Select Case Me.OpenArgs
Case 1
If ImportData Then
MsgBox "郵便番号データ取込を中断しました。"
Else
MsgBox "郵便番号データ取込が完了しました。"
End If
Case 2
If IsNull(Me.FileName2) Then
MsgBox "ファイル名を入力して下さい。"
Exit Sub
End If
If UpdateData Then
MsgBox "郵便番号データ更新を中断しました。"
Else
MsgBox "郵便番号データ更新が完了しました。"
End If
Case Else
MsgBox "パラメータエラー"
End Select
1行目から4行目までは[廃止ファイル名](FileName1)テキストボックスをチェック
しています。
If IsNull(Me.FileName1) Then でテキストボックスが NULL(未入力)の場合、
次の MsgBox "ファイル名を入力して下さい。" でメッセージを表示して、その後
Exit Sub でこのサブルーチンを終了します。
5行目から8行目までは[ファイル最新日付](LatestDate)テキストボックスを
チェックしています。
上記、廃止ファイル名と同様、未入力ならメッセージを表示してサブルーチンを終了
します。
9行目の Select Case Me.OpenArgs は、このフォームを呼び出した際に与えられた
引数により、処理の振分を行います。
10行目の Case 1 は、Me.OpenArgs(フォームを開く時指定した引数)が1の時を
意味します。
11行目から15行目までは、引数1でこのフォームを呼び出された時の処理です。
If ImportData Then で取込サブルーチン(ImportData)を呼び出し、その処理の結果
が True(エラー)ならば12行目の MsgBox "郵便番号データ取込を中断しました。"
でエラーメッセージを出力します。
取込サブルーチン(ImportData)が正常に終了すれば、14行目の MsgBox "郵便番号
データ取込が完了しました。" で終了のメッセージを出力します。
16行目の Case 2 は、Me.OpenArgs(フォームを開く時指定した引数)が2の時を
意味します。
17行目から25行目までが、引数2でこのフォームを呼び出された時の処理です。
If IsNull(Me.FileName2) Then で[追加ファイル名](FileName2)テキストボックス
をチェックしています。
このテキストボックスは、郵便番号データ更新の時(フォームの引数が2で呼び出さ
れた時)のみ行います。
郵便番号データ取込の時(フォームの引数が1で呼び出された時)は、このテキスト
ボックスは非表示になっているので、常に未入力となります
[追加ファイル名](FileName2)テキストボックスが未入力の場合、18行目の
MsgBox "ファイル名を入力して下さい。" でメッセージを出力しサブルーチンを終了
します。
21行目の If UpdateData Then で更新サブルーチン(UpdateData)を呼び出し、
その処理の結果が True(エラー)ならば22行目の MsgBox "郵便番号データ取込を
中断しました。"でエラーメッセージを出力します。
更新サブルーチン(UpdateData)が正常に終了すれば、24行目の MsgBox "郵便番号
データ取込が完了しました。" で終了のメッセージを出力します。
26行目の Case Else は、Me.OpenArgs(フォームを開く時指定した引数)が1、2
以外の場合で、その場合、27行目の MsgBox "パラメータエラー" でメッセージを
出力します。
27行目の End Select は、9行目 Select Case Me.OpenArgs の振分処理の終了を
表します。
______________________________________
□ ファイル選択ボタンのプログラム解説。
最後に、ファイル選択ボタンのプログラム解説です。
FileSel1Btn と FileSel2Btn の2つありますが、同様なので FileSel1Btn で解説
します。
Dim FILENAME As String
Dim InitDir As String
InitDir = "C:\"
If OpenDialog(Me.Hwnd, FILENAME, InitDir, "*.CSV", "開く") Then
Me.FileName1 = FILENAME
End If
1行目、2行目は変数の宣言です。
FILENAME と InitDir と言う2つの変数を、共に文字列型で宣言しています。
4行目の InitDir = "C:\" は変数 InitDir に文字列 "C:\" を代入しています。
これは、ファイル選択ダイアログを開いた時の、フォルダの初期値になります。
6行目の If OpenDialog(Me.Hwnd, FILENAME, InitDir, "*.CSV", "開く") Then は
OpenDialog と言うサブルーチンを呼び出しています。
この OpenDialog と言うサブルーチンは、参照設定をして頂いた共通ライブラリの
中にあります。
以下の手順で呼び出します。
OpenDialog([ウィンドウハンドル], [選択されたファイルのファイル名を格納する変数],
[ダイアログを開いた時のフォルダの初期値], [選択するファイルの拡張子], [タイトル])
【それぞれの引数の説明】
[ウィンドウハンドル]
ウィンドウのハンドルですが、この説明はちょっと複雑(ウィンドウズの仕組みから
説明しないといけない)なので、省略します。
アクセスでは Me.Hwnd と記述すれば良いと憶えて下さい。
[選択されたファイルのファイル名を格納する変数]
ファイル選択ダイアログで選択したファイル名がフルパスでこの変数に設定されます。
[ダイアログを開いた時のフォルダの初期値]
ファイル選択ダイアログを開いた時のフォルダの初期値です。
ダウンロードする郵便番号ファイルを格納するフォルダが決まっている場合、この
初期位置に、そのフォルダを指定しておきましょう。
[選択するファイルの拡張子]
ファイル選択ダイアログで選択できるファイルの拡張子を指定します。
拡張子がCSV以外のファイルの場合、ここを書き換えます。
(例えば拡張子が TXT の場合、"*.TXT" と記述します)
[タイトル]
ファイル選択ダイアログのウィンドウのタイトルバーに表示される文字列です。
ファイル選択ダイアログでファイルを選択し、[開く]ボタンを押下(または選択した
ファイルをダブルクリック)すると、[選択されたファイルのファイル名を格納する
変数]に選択したファイルのフルパスが設定され、サブルーチンの戻り値は True で
戻ります。
ファイルを選択せず、[キャンセル]ボタンを押下すると、このサブルーチンは False
で戻ります。
ファイル選択ダイアログでファイルを選択した場合、
7行目の Me.FileName1 = FILENAME でテキストボックス(FileName1)に選択された
ファイル名を設定します。
※ FileSel2Btn の場合、このテキストボックスが FileName2 になります。
以上で、郵便番号ファイル取込・更新に関するプログラムの解説は終わりです。
______________________________________
□ お知らせ
Vol.24 の、郵便番号データの取込サブルーチンのプログラム解説の中で、誤りが
ありました。(ちょうど真ん中あたりです)
以下の通り、訂正しお詫びいたします。
【元の解説】
............................................................................
Forms![ZipCodeForm].RecordSource = ""
DoCmd.DeleteObject acTable, "ZipCodeTable"
DoCmd.Rename "ZipCodeTable", acTable, "ZipCodeTableTMP"
Forms![ZipCodeForm].RecordSource = "ZipCodeTable"
この4行では、元の郵便番号テーブルを削除し、インポートした郵便番号テーブルに
差し替える処理を行っています。
まず最初に Forms![ZipCodeForm].RecordSource = "" でフォームのレコードソースを
長さ0の文字列("")にしてから、DoCmd.DeleteObject で郵便番号テーブルを削除
します。
DoCmd.DeleteObject はオブジェクトの削除で、acTable はテーブルを削除する事を
意味します。
ここでは "ZipCodeTableTMP" と言うテーブルを削除しています。
DoCmd.Rename はオブジェクトの名前の変更です。
"ZipCodeTable" と言う名前のテーブル acTable を "ZipCodeTableTMP" と言う名前に
変更しています。
そして Forms![ZipCodeForm].RecordSource = "ZipCodeTable" でフォームのレコード
ソースに再び "ZipCodeTable" を設定しています。
この中の14行目と16行目です。
正しくは以下の様になります。
【正】
............................................................................
Forms![ZipCodeForm].RecordSource = ""
DoCmd.DeleteObject acTable, "ZipCodeTable"
DoCmd.Rename "ZipCodeTable", acTable, "ZipCodeTableTMP"
Forms![ZipCodeForm].RecordSource = "ZipCodeTable"
この4行では、元の郵便番号テーブルを削除し、インポートした郵便番号テーブルに
差し替える処理を行っています。
まず最初に Forms![ZipCodeForm].RecordSource = "" でフォームのレコードソースを
長さ0の文字列("")にしてから、DoCmd.DeleteObject で郵便番号テーブルを削除
します。
DoCmd.DeleteObject はオブジェクトの削除で、acTable はテーブルを削除する事を
意味します。
ここでは "ZipCodeTable" と言うテーブルを削除しています。
~~~~~~~~~~~~
(ZipCodeTableTMPではなくZipCodeTableです)
DoCmd.Rename はオブジェクトの名前の変更です。
"ZipCodeTableTMP" と言う名前のテーブル acTable を "ZipCodeTable" と言う名前に
~~~~~~~~~~~~~~~ ~~~~~~~~~~~~
(ZipCodeTableではなくZipCodeTableTMPです) (ZipCodeTableTMPではなく
ZipCodeTableです)
変更しています。
そして Forms![ZipCodeForm].RecordSource = "ZipCodeTable" でフォームのレコード
ソースに再び "ZipCodeTable" を設定しています。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
◇ ACCESSで作るシリーズ 【住所録ソフト編】
◇ 発 行 元 :Yoshihisa Fukuda(福田 義久)
◇ ご意見・ご要望
ご質問等 :fukud@nifty.com
◇ このメールマガジンは、インターネットの本屋さん『まぐまぐ』を利用して発行
しています。(まぐまぐID:0000077071)
◇ バックナンバー:http://homepage2.nifty.com/f-soft/
◇ 登録・解除 :http://homepage2.nifty.com/f-soft/
Copyright(C) 2001-2002 Yoshihisa Fukuda All rights reserved.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
ACCESSで作るシリーズ 【住所録ソフト編】
発 行 : Yoshihisa Fukuda 2002.07.06 Vol.26
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
今回は、郵便番号データ取込・更新フォームの実行ボタンのプログラム解説です。
______________________________________
□ 郵便番号データ取込・更新フォーム実行ボタンのプログラム解説。
郵便番号データ取込・更新フォームの[実行]ボタン(ExecuteBtn)の[クリック時]
イベント Private Sub ExecuteBtn_Click() のプログラム解説です。
If IsNull(Me.FileName1) Then
MsgBox "ファイル名を入力して下さい。"
Exit Sub
End If
If IsNull(Me.LatestDate) Then
MsgBox "ファイル最新日付を入力して下さい。"
Exit Sub
End If
Select Case Me.OpenArgs
Case 1
If ImportData Then
MsgBox "郵便番号データ取込を中断しました。"
Else
MsgBox "郵便番号データ取込が完了しました。"
End If
Case 2
If IsNull(Me.FileName2) Then
MsgBox "ファイル名を入力して下さい。"
Exit Sub
End If
If UpdateData Then
MsgBox "郵便番号データ更新を中断しました。"
Else
MsgBox "郵便番号データ更新が完了しました。"
End If
Case Else
MsgBox "パラメータエラー"
End Select
1行目から4行目までは[廃止ファイル名](FileName1)テキストボックスをチェック
しています。
If IsNull(Me.FileName1) Then でテキストボックスが NULL(未入力)の場合、
次の MsgBox "ファイル名を入力して下さい。" でメッセージを表示して、その後
Exit Sub でこのサブルーチンを終了します。
5行目から8行目までは[ファイル最新日付](LatestDate)テキストボックスを
チェックしています。
上記、廃止ファイル名と同様、未入力ならメッセージを表示してサブルーチンを終了
します。
9行目の Select Case Me.OpenArgs は、このフォームを呼び出した際に与えられた
引数により、処理の振分を行います。
10行目の Case 1 は、Me.OpenArgs(フォームを開く時指定した引数)が1の時を
意味します。
11行目から15行目までは、引数1でこのフォームを呼び出された時の処理です。
If ImportData Then で取込サブルーチン(ImportData)を呼び出し、その処理の結果
が True(エラー)ならば12行目の MsgBox "郵便番号データ取込を中断しました。"
でエラーメッセージを出力します。
取込サブルーチン(ImportData)が正常に終了すれば、14行目の MsgBox "郵便番号
データ取込が完了しました。" で終了のメッセージを出力します。
16行目の Case 2 は、Me.OpenArgs(フォームを開く時指定した引数)が2の時を
意味します。
17行目から25行目までが、引数2でこのフォームを呼び出された時の処理です。
If IsNull(Me.FileName2) Then で[追加ファイル名](FileName2)テキストボックス
をチェックしています。
このテキストボックスは、郵便番号データ更新の時(フォームの引数が2で呼び出さ
れた時)のみ行います。
郵便番号データ取込の時(フォームの引数が1で呼び出された時)は、このテキスト
ボックスは非表示になっているので、常に未入力となります
[追加ファイル名](FileName2)テキストボックスが未入力の場合、18行目の
MsgBox "ファイル名を入力して下さい。" でメッセージを出力しサブルーチンを終了
します。
21行目の If UpdateData Then で更新サブルーチン(UpdateData)を呼び出し、
その処理の結果が True(エラー)ならば22行目の MsgBox "郵便番号データ取込を
中断しました。"でエラーメッセージを出力します。
更新サブルーチン(UpdateData)が正常に終了すれば、24行目の MsgBox "郵便番号
データ取込が完了しました。" で終了のメッセージを出力します。
26行目の Case Else は、Me.OpenArgs(フォームを開く時指定した引数)が1、2
以外の場合で、その場合、27行目の MsgBox "パラメータエラー" でメッセージを
出力します。
27行目の End Select は、9行目 Select Case Me.OpenArgs の振分処理の終了を
表します。
______________________________________
□ ファイル選択ボタンのプログラム解説。
最後に、ファイル選択ボタンのプログラム解説です。
FileSel1Btn と FileSel2Btn の2つありますが、同様なので FileSel1Btn で解説
します。
Dim FILENAME As String
Dim InitDir As String
InitDir = "C:\"
If OpenDialog(Me.Hwnd, FILENAME, InitDir, "*.CSV", "開く") Then
Me.FileName1 = FILENAME
End If
1行目、2行目は変数の宣言です。
FILENAME と InitDir と言う2つの変数を、共に文字列型で宣言しています。
4行目の InitDir = "C:\" は変数 InitDir に文字列 "C:\" を代入しています。
これは、ファイル選択ダイアログを開いた時の、フォルダの初期値になります。
6行目の If OpenDialog(Me.Hwnd, FILENAME, InitDir, "*.CSV", "開く") Then は
OpenDialog と言うサブルーチンを呼び出しています。
この OpenDialog と言うサブルーチンは、参照設定をして頂いた共通ライブラリの
中にあります。
以下の手順で呼び出します。
OpenDialog([ウィンドウハンドル], [選択されたファイルのファイル名を格納する変数],
[ダイアログを開いた時のフォルダの初期値], [選択するファイルの拡張子], [タイトル])
【それぞれの引数の説明】
[ウィンドウハンドル]
ウィンドウのハンドルですが、この説明はちょっと複雑(ウィンドウズの仕組みから
説明しないといけない)なので、省略します。
アクセスでは Me.Hwnd と記述すれば良いと憶えて下さい。
[選択されたファイルのファイル名を格納する変数]
ファイル選択ダイアログで選択したファイル名がフルパスでこの変数に設定されます。
[ダイアログを開いた時のフォルダの初期値]
ファイル選択ダイアログを開いた時のフォルダの初期値です。
ダウンロードする郵便番号ファイルを格納するフォルダが決まっている場合、この
初期位置に、そのフォルダを指定しておきましょう。
[選択するファイルの拡張子]
ファイル選択ダイアログで選択できるファイルの拡張子を指定します。
拡張子がCSV以外のファイルの場合、ここを書き換えます。
(例えば拡張子が TXT の場合、"*.TXT" と記述します)
[タイトル]
ファイル選択ダイアログのウィンドウのタイトルバーに表示される文字列です。
ファイル選択ダイアログでファイルを選択し、[開く]ボタンを押下(または選択した
ファイルをダブルクリック)すると、[選択されたファイルのファイル名を格納する
変数]に選択したファイルのフルパスが設定され、サブルーチンの戻り値は True で
戻ります。
ファイルを選択せず、[キャンセル]ボタンを押下すると、このサブルーチンは False
で戻ります。
ファイル選択ダイアログでファイルを選択した場合、
7行目の Me.FileName1 = FILENAME でテキストボックス(FileName1)に選択された
ファイル名を設定します。
※ FileSel2Btn の場合、このテキストボックスが FileName2 になります。
以上で、郵便番号ファイル取込・更新に関するプログラムの解説は終わりです。
______________________________________
□ お知らせ
Vol.24 の、郵便番号データの取込サブルーチンのプログラム解説の中で、誤りが
ありました。(ちょうど真ん中あたりです)
以下の通り、訂正しお詫びいたします。
【元の解説】
............................................................................
Forms![ZipCodeForm].RecordSource = ""
DoCmd.DeleteObject acTable, "ZipCodeTable"
DoCmd.Rename "ZipCodeTable", acTable, "ZipCodeTableTMP"
Forms![ZipCodeForm].RecordSource = "ZipCodeTable"
この4行では、元の郵便番号テーブルを削除し、インポートした郵便番号テーブルに
差し替える処理を行っています。
まず最初に Forms![ZipCodeForm].RecordSource = "" でフォームのレコードソースを
長さ0の文字列("")にしてから、DoCmd.DeleteObject で郵便番号テーブルを削除
します。
DoCmd.DeleteObject はオブジェクトの削除で、acTable はテーブルを削除する事を
意味します。
ここでは "ZipCodeTableTMP" と言うテーブルを削除しています。
DoCmd.Rename はオブジェクトの名前の変更です。
"ZipCodeTable" と言う名前のテーブル acTable を "ZipCodeTableTMP" と言う名前に
変更しています。
そして Forms![ZipCodeForm].RecordSource = "ZipCodeTable" でフォームのレコード
ソースに再び "ZipCodeTable" を設定しています。
この中の14行目と16行目です。
正しくは以下の様になります。
【正】
............................................................................
Forms![ZipCodeForm].RecordSource = ""
DoCmd.DeleteObject acTable, "ZipCodeTable"
DoCmd.Rename "ZipCodeTable", acTable, "ZipCodeTableTMP"
Forms![ZipCodeForm].RecordSource = "ZipCodeTable"
この4行では、元の郵便番号テーブルを削除し、インポートした郵便番号テーブルに
差し替える処理を行っています。
まず最初に Forms![ZipCodeForm].RecordSource = "" でフォームのレコードソースを
長さ0の文字列("")にしてから、DoCmd.DeleteObject で郵便番号テーブルを削除
します。
DoCmd.DeleteObject はオブジェクトの削除で、acTable はテーブルを削除する事を
意味します。
ここでは "ZipCodeTable" と言うテーブルを削除しています。
~~~~~~~~~~~~
(ZipCodeTableTMPではなくZipCodeTableです)
DoCmd.Rename はオブジェクトの名前の変更です。
"ZipCodeTableTMP" と言う名前のテーブル acTable を "ZipCodeTable" と言う名前に
~~~~~~~~~~~~~~~ ~~~~~~~~~~~~
(ZipCodeTableではなくZipCodeTableTMPです) (ZipCodeTableTMPではなく
ZipCodeTableです)
変更しています。
そして Forms![ZipCodeForm].RecordSource = "ZipCodeTable" でフォームのレコード
ソースに再び "ZipCodeTable" を設定しています。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
◇ ACCESSで作るシリーズ 【住所録ソフト編】
◇ 発 行 元 :Yoshihisa Fukuda(福田 義久)
◇ ご意見・ご要望
ご質問等 :fukud@nifty.com
◇ このメールマガジンは、インターネットの本屋さん『まぐまぐ』を利用して発行
しています。(まぐまぐID:0000077071)
◇ バックナンバー:http://homepage2.nifty.com/f-soft/
◇ 登録・解除 :http://homepage2.nifty.com/f-soft/
Copyright(C) 2001-2002 Yoshihisa Fukuda All rights reserved.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□