メールマガジン【アクセスで作るシリーズ】
バックナンバー 【住所録ソフト編】 Vol.21
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
ACCESSで作るシリーズ 【住所録ソフト編】
発 行 : Yoshihisa Fukuda 2002.04.27 Vol.21
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
今回は、郵便番号データ取り込みと更新のプログラム作成の続きです。
______________________________________
□ 郵便番号データ取込のサブルーチンを作成する。
前回作成したプログラムで、郵便番号取込の処理は ImportData と言うサブルーチン
を呼び出しています。
今回は、その ImportData サブルーチンと、またその中で呼び出している郵便番号
ワークテーブルを作成するサブルーチン(CreateTmpTable)を作成します。
1.住所録ソフトのデータベース[Address.mdb]を開きます。
2.データベースウィンドウの[フォーム]タブを選択します。
3.郵便番号データ取り込み・更新フォーム[ZipUpdateForm]を選択し[デザイン]
ボタンを押下します。
4.モジュールウィンドウを開き、最下行にカーソルを移動して、以下のコードを
入力します。
Private Function ImportData() As Boolean
On Error GoTo Err_ImportData
Dim SqlStr As String
If Dir(Me.FileName1) = "" Then
MsgBox "取込ファイルが存在しません。"
ImportData = True
Exit Function
End If
Call CreateTmpTable
DoCmd.TransferText acImportDelim, "郵便番号データ インポート定義", _
"ZipCodeTableTMP", Me.FileName1
SqlStr = "UPDATE ZipCodeTableTMP SET RegistDate = #" & Me.LatestDate & _
"#, ModifyDate = #" & Me.LatestDate & "#;"
DoCmd.SetWarnings False
DoCmd.RunSQL SqlStr
DoCmd.SetWarnings True
Forms![ZipCodeForm].RecordSource = ""
DoCmd.DeleteObject acTable, "ZipCodeTable"
DoCmd.Rename "ZipCodeTable", acTable, "ZipCodeTableTMP"
Forms![ZipCodeForm].RecordSource = "ZipCodeTable"
ImportData = False
Exit_ImportData:
Exit Function
Err_ImportData:
DoCmd.DeleteObject acTable, "ZipCodeTableTMP"
ImportData = True
MsgBox Err.Description
Resume Exit_ImportData
End Function
Private Function CreateTmpTable()
Dim Addr_DB As Database
Dim tdf As TableDef
Dim idx As Index
Dim fld As Field
Dim Prp As Property
Set Addr_DB = CurrentDb
Set tdf = Addr_DB.CreateTableDef("ZipCodeTableTMP")
Set fld = tdf.CreateField("ID", dbLong)
fld.Attributes = DB_AUTOINCRFIELD
tdf.Fields.Append fld
tdf.Fields.Refresh
tdf.Fields.Append tdf.CreateField("Code", dbLong)
tdf.Fields.Append tdf.CreateField("OldZipCode", dbText, 5)
tdf.Fields.Append tdf.CreateField("ZipCode", dbText, 7)
tdf.Fields.Append tdf.CreateField("AddrKana1", dbText, 20)
tdf.Fields.Append tdf.CreateField("AddrKana2", dbText, 40)
tdf.Fields.Append tdf.CreateField("AddrKana3", dbText, 100)
tdf.Fields.Append tdf.CreateField("Address1", dbText, 20)
tdf.Fields.Append tdf.CreateField("Address2", dbText, 40)
tdf.Fields.Append tdf.CreateField("Address3", dbText, 100)
tdf.Fields.Append tdf.CreateField("Flg1", dbBoolean)
tdf.Fields.Append tdf.CreateField("Flg2", dbBoolean)
tdf.Fields.Append tdf.CreateField("Flg3", dbBoolean)
tdf.Fields.Append tdf.CreateField("Flg4", dbBoolean)
tdf.Fields.Append tdf.CreateField("Flg5", dbInteger)
tdf.Fields.Append tdf.CreateField("Flg6", dbInteger)
tdf.Fields.Append tdf.CreateField("RegistDate", dbDate)
tdf.Fields.Append tdf.CreateField("ModifyDate", dbDate)
Addr_DB.TableDefs.Append tdf
Set idx = tdf.CreateIndex("PrimaryKey")
idx.Fields.Append idx.CreateField("ID")
idx.Primary = True
tdf.Indexes.Append idx
Set idx = tdf.CreateIndex("ZipCode")
idx.Fields.Append idx.CreateField("ZipCode")
tdf.Indexes.Append idx
Set fld = tdf.Fields("ID")
Set Prp = fld.CreateProperty("Description", dbText, "ID")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "ID")
fld.Properties.Append Prp
Set fld = tdf.Fields("Code")
Set Prp = fld.CreateProperty("Description", dbText, "地方公共団体コード")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "地方公共団体コード")
fld.Properties.Append Prp
Set fld = tdf.Fields("OldZipCode")
Set Prp = fld.CreateProperty("Description", dbText, "旧郵便番号")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "旧郵便番号")
fld.Properties.Append Prp
Set fld = tdf.Fields("ZipCode")
Set Prp = fld.CreateProperty("Description", dbText, "郵便番号")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "郵便番号")
fld.Properties.Append Prp
Set fld = tdf.Fields("AddrKana1")
Set Prp = fld.CreateProperty("Description", dbText, "都道府県名(カナ)")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "都道府県名(カナ)")
fld.Properties.Append Prp
Set fld = tdf.Fields("AddrKana2")
Set Prp = fld.CreateProperty("Description", dbText, "市区町村名(カナ)")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "市区町村名(カナ)")
fld.Properties.Append Prp
Set fld = tdf.Fields("AddrKana3")
Set Prp = fld.CreateProperty("Description", dbText, "町域名(カナ)")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "町域名(カナ)")
fld.Properties.Append Prp
Set fld = tdf.Fields("Address1")
Set Prp = fld.CreateProperty("Description", dbText, "都道府県名")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "都道府県名")
fld.Properties.Append Prp
Set fld = tdf.Fields("Address2")
Set Prp = fld.CreateProperty("Description", dbText, "市区町村名")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "市区町村名")
fld.Properties.Append Prp
Set fld = tdf.Fields("Address3")
Set Prp = fld.CreateProperty("Description", dbText, "町域名")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "町域名")
fld.Properties.Append Prp
Set fld = tdf.Fields("RegistDate")
Set Prp = fld.CreateProperty("Description", dbText, "登録日付")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "登録日付")
fld.Properties.Append Prp
Set fld = tdf.Fields("ModifyDate")
Set Prp = fld.CreateProperty("Description", dbText, "更新日付")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "更新日付")
fld.Properties.Append Prp
Addr_DB.Close
Set tdf = Nothing
Set Addr_DB = Nothing
End Function
______________________________________
□ 郵便番号データを取り込んでみる。
ここで、実際に郵便番号データの取り込みが、上手く出来るか試してみたいと思い
ますが、実行するためには郵便番号データ更新のサブルーチンも必要になります。
そこで、郵便番号データ更新のサブルーチンの殻だけ作成しましょう。
上記のプログラムを記述した最後に
Private Function UpdateData() As Boolean
End Function
とサブルーチンの殻だけ作成します。
このサブルーチンの中身は次回作成します。
では早速、郵便番号データの取り込みをやってみましょう。
フォームを開いて、取込ファイル名に郵便番号データ(全国ならKEN_ALL.CSV)と
入力します。
データ最新日付は、郵政省ホームページから郵便番号データをダウンロードする際、
そのデータが、いつ時点のものかが書いてあるので、その日付を入力します。
例えば、4月26日現在だとホームページ上に「平成14年3月1日現在版」とある
ので、このデータをダウンロードして取り込む場合、データ最新日付は 2002/3/1
と入力します。
後は、[取込]ボタンを押下すれば、データが取り込まれます。
______________________________________
□ フォームの入力が無い場合のチェックを行う。
このままでも、特に問題は無いのですが、ファイル名やファイル最新日付を入力
しなかった場合のエラーメッセージを見てみましょう。
ファイル名を入力しないで[取込]ボタンを押すと「取込ファイルが存在しません。」
のエラーメッセージが出ます。
またファイル名を正しく入れて、ファイル最新日付を入力しないで[取込]ボタンを
押すとインポートが終わった後で「クエリー式'##'の日付の構文エラーです。」
と言うエラーが表示されます。
これらのエラーをもっと親切に判りやすくしてみましょう。
1.郵便番号データ取り込み・更新フォーム[ZipUpdateForm]をデザインで開きます。
2.取込・更新ボタン(ExecuteBtn)を選択し[クリック時]プロパティへカーソルを
移動し、右端の[...]ボタンを押下してモジュールウィンドウを開きます。
3.Private Sub ExecuteBtn_Click() という関数に、前回記述したコードがあると
思いますが、Private Sub ExecuteBtn_Click()関数の先頭(前回記述したコード
のSelect文の前)に以下のコードを記述しましょう。
If IsNull(Me.FileName1) Then
MsgBox "ファイル名を入力して下さい。"
Me.FileName1.SetFocus
Exit Sub
End If
If IsNull(Me.LatestDate) Then
MsgBox "ファイル最新日付を入力して下さい。"
Me.LatestDate.SetFocus
Exit Sub
End If
以下 Select ・・・ と前回のコードが記述されている。
4.コードが記述できたら、モジュールウィンドウを閉じて、フォームを保存します。
これで、ファイル名が入力されていない場合「ファイル名を入力して下さい。」と
言うエラーメッセージが表示されます。
また、ファイル最新日付が入力されていない場合「ファイル最新日付を入力して
下さい。」と言うエラーが表示されるようになります。
今回はここまでです。
次回は、データ更新のサブルーチンを作成します。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
◇ 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.04.27 Vol.21
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
今回は、郵便番号データ取り込みと更新のプログラム作成の続きです。
______________________________________
□ 郵便番号データ取込のサブルーチンを作成する。
前回作成したプログラムで、郵便番号取込の処理は ImportData と言うサブルーチン
を呼び出しています。
今回は、その ImportData サブルーチンと、またその中で呼び出している郵便番号
ワークテーブルを作成するサブルーチン(CreateTmpTable)を作成します。
1.住所録ソフトのデータベース[Address.mdb]を開きます。
2.データベースウィンドウの[フォーム]タブを選択します。
3.郵便番号データ取り込み・更新フォーム[ZipUpdateForm]を選択し[デザイン]
ボタンを押下します。
4.モジュールウィンドウを開き、最下行にカーソルを移動して、以下のコードを
入力します。
Private Function ImportData() As Boolean
On Error GoTo Err_ImportData
Dim SqlStr As String
If Dir(Me.FileName1) = "" Then
MsgBox "取込ファイルが存在しません。"
ImportData = True
Exit Function
End If
Call CreateTmpTable
DoCmd.TransferText acImportDelim, "郵便番号データ インポート定義", _
"ZipCodeTableTMP", Me.FileName1
SqlStr = "UPDATE ZipCodeTableTMP SET RegistDate = #" & Me.LatestDate & _
"#, ModifyDate = #" & Me.LatestDate & "#;"
DoCmd.SetWarnings False
DoCmd.RunSQL SqlStr
DoCmd.SetWarnings True
Forms![ZipCodeForm].RecordSource = ""
DoCmd.DeleteObject acTable, "ZipCodeTable"
DoCmd.Rename "ZipCodeTable", acTable, "ZipCodeTableTMP"
Forms![ZipCodeForm].RecordSource = "ZipCodeTable"
ImportData = False
Exit_ImportData:
Exit Function
Err_ImportData:
DoCmd.DeleteObject acTable, "ZipCodeTableTMP"
ImportData = True
MsgBox Err.Description
Resume Exit_ImportData
End Function
Private Function CreateTmpTable()
Dim Addr_DB As Database
Dim tdf As TableDef
Dim idx As Index
Dim fld As Field
Dim Prp As Property
Set Addr_DB = CurrentDb
Set tdf = Addr_DB.CreateTableDef("ZipCodeTableTMP")
Set fld = tdf.CreateField("ID", dbLong)
fld.Attributes = DB_AUTOINCRFIELD
tdf.Fields.Append fld
tdf.Fields.Refresh
tdf.Fields.Append tdf.CreateField("Code", dbLong)
tdf.Fields.Append tdf.CreateField("OldZipCode", dbText, 5)
tdf.Fields.Append tdf.CreateField("ZipCode", dbText, 7)
tdf.Fields.Append tdf.CreateField("AddrKana1", dbText, 20)
tdf.Fields.Append tdf.CreateField("AddrKana2", dbText, 40)
tdf.Fields.Append tdf.CreateField("AddrKana3", dbText, 100)
tdf.Fields.Append tdf.CreateField("Address1", dbText, 20)
tdf.Fields.Append tdf.CreateField("Address2", dbText, 40)
tdf.Fields.Append tdf.CreateField("Address3", dbText, 100)
tdf.Fields.Append tdf.CreateField("Flg1", dbBoolean)
tdf.Fields.Append tdf.CreateField("Flg2", dbBoolean)
tdf.Fields.Append tdf.CreateField("Flg3", dbBoolean)
tdf.Fields.Append tdf.CreateField("Flg4", dbBoolean)
tdf.Fields.Append tdf.CreateField("Flg5", dbInteger)
tdf.Fields.Append tdf.CreateField("Flg6", dbInteger)
tdf.Fields.Append tdf.CreateField("RegistDate", dbDate)
tdf.Fields.Append tdf.CreateField("ModifyDate", dbDate)
Addr_DB.TableDefs.Append tdf
Set idx = tdf.CreateIndex("PrimaryKey")
idx.Fields.Append idx.CreateField("ID")
idx.Primary = True
tdf.Indexes.Append idx
Set idx = tdf.CreateIndex("ZipCode")
idx.Fields.Append idx.CreateField("ZipCode")
tdf.Indexes.Append idx
Set fld = tdf.Fields("ID")
Set Prp = fld.CreateProperty("Description", dbText, "ID")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "ID")
fld.Properties.Append Prp
Set fld = tdf.Fields("Code")
Set Prp = fld.CreateProperty("Description", dbText, "地方公共団体コード")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "地方公共団体コード")
fld.Properties.Append Prp
Set fld = tdf.Fields("OldZipCode")
Set Prp = fld.CreateProperty("Description", dbText, "旧郵便番号")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "旧郵便番号")
fld.Properties.Append Prp
Set fld = tdf.Fields("ZipCode")
Set Prp = fld.CreateProperty("Description", dbText, "郵便番号")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "郵便番号")
fld.Properties.Append Prp
Set fld = tdf.Fields("AddrKana1")
Set Prp = fld.CreateProperty("Description", dbText, "都道府県名(カナ)")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "都道府県名(カナ)")
fld.Properties.Append Prp
Set fld = tdf.Fields("AddrKana2")
Set Prp = fld.CreateProperty("Description", dbText, "市区町村名(カナ)")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "市区町村名(カナ)")
fld.Properties.Append Prp
Set fld = tdf.Fields("AddrKana3")
Set Prp = fld.CreateProperty("Description", dbText, "町域名(カナ)")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "町域名(カナ)")
fld.Properties.Append Prp
Set fld = tdf.Fields("Address1")
Set Prp = fld.CreateProperty("Description", dbText, "都道府県名")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "都道府県名")
fld.Properties.Append Prp
Set fld = tdf.Fields("Address2")
Set Prp = fld.CreateProperty("Description", dbText, "市区町村名")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "市区町村名")
fld.Properties.Append Prp
Set fld = tdf.Fields("Address3")
Set Prp = fld.CreateProperty("Description", dbText, "町域名")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "町域名")
fld.Properties.Append Prp
Set fld = tdf.Fields("RegistDate")
Set Prp = fld.CreateProperty("Description", dbText, "登録日付")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "登録日付")
fld.Properties.Append Prp
Set fld = tdf.Fields("ModifyDate")
Set Prp = fld.CreateProperty("Description", dbText, "更新日付")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("Caption", dbText, "更新日付")
fld.Properties.Append Prp
Addr_DB.Close
Set tdf = Nothing
Set Addr_DB = Nothing
End Function
______________________________________
□ 郵便番号データを取り込んでみる。
ここで、実際に郵便番号データの取り込みが、上手く出来るか試してみたいと思い
ますが、実行するためには郵便番号データ更新のサブルーチンも必要になります。
そこで、郵便番号データ更新のサブルーチンの殻だけ作成しましょう。
上記のプログラムを記述した最後に
Private Function UpdateData() As Boolean
End Function
とサブルーチンの殻だけ作成します。
このサブルーチンの中身は次回作成します。
では早速、郵便番号データの取り込みをやってみましょう。
フォームを開いて、取込ファイル名に郵便番号データ(全国ならKEN_ALL.CSV)と
入力します。
データ最新日付は、郵政省ホームページから郵便番号データをダウンロードする際、
そのデータが、いつ時点のものかが書いてあるので、その日付を入力します。
例えば、4月26日現在だとホームページ上に「平成14年3月1日現在版」とある
ので、このデータをダウンロードして取り込む場合、データ最新日付は 2002/3/1
と入力します。
後は、[取込]ボタンを押下すれば、データが取り込まれます。
______________________________________
□ フォームの入力が無い場合のチェックを行う。
このままでも、特に問題は無いのですが、ファイル名やファイル最新日付を入力
しなかった場合のエラーメッセージを見てみましょう。
ファイル名を入力しないで[取込]ボタンを押すと「取込ファイルが存在しません。」
のエラーメッセージが出ます。
またファイル名を正しく入れて、ファイル最新日付を入力しないで[取込]ボタンを
押すとインポートが終わった後で「クエリー式'##'の日付の構文エラーです。」
と言うエラーが表示されます。
これらのエラーをもっと親切に判りやすくしてみましょう。
1.郵便番号データ取り込み・更新フォーム[ZipUpdateForm]をデザインで開きます。
2.取込・更新ボタン(ExecuteBtn)を選択し[クリック時]プロパティへカーソルを
移動し、右端の[...]ボタンを押下してモジュールウィンドウを開きます。
3.Private Sub ExecuteBtn_Click() という関数に、前回記述したコードがあると
思いますが、Private Sub ExecuteBtn_Click()関数の先頭(前回記述したコード
のSelect文の前)に以下のコードを記述しましょう。
If IsNull(Me.FileName1) Then
MsgBox "ファイル名を入力して下さい。"
Me.FileName1.SetFocus
Exit Sub
End If
If IsNull(Me.LatestDate) Then
MsgBox "ファイル最新日付を入力して下さい。"
Me.LatestDate.SetFocus
Exit Sub
End If
以下 Select ・・・ と前回のコードが記述されている。
4.コードが記述できたら、モジュールウィンドウを閉じて、フォームを保存します。
これで、ファイル名が入力されていない場合「ファイル名を入力して下さい。」と
言うエラーメッセージが表示されます。
また、ファイル最新日付が入力されていない場合「ファイル最新日付を入力して
下さい。」と言うエラーが表示されるようになります。
今回はここまでです。
次回は、データ更新のサブルーチンを作成します。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
◇ 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.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□