Microsoft Access 掲示板

InputBoxでの入力ではなく選択して入力する手法

7 コメント
views
4 フォロー

質問です。よろしくお願いします。
熊本市において大江町の警察署は丁目等により管轄が中央署と東署に分かれています。
現在その処理は下記のように入力していますが。東署か中央署か選択して入力するよう
にはできませんでしょうか。
宜しくご教示お願いします。

If Me.CB熊本市保3 = "大江" Then
MsgBox "大江1丁目・2丁目1番~7番・大江3丁目~6丁目は中央署です。大江2丁目8番以上は東署です。"
管轄署 = InputBox("管轄署を入力")
管轄署.SetFocus

tokinaito
作成: 2019/08/25 (日) 12:12:45
通報 ...
1
hiroton 2019/08/26 (月) 09:54:19 96551@f966d

InputBoxで表示されるテキストボックスのところにコンボボックスを使いたいということですかね?
1.標準機能にはないので、専用のフォームを作成して(ポップアップに設定しておいて)、Inputboxの代わりにOpenformして閉じるときのイベントで[管轄署]に入力するのが一般的だと思います。

2.身内で使うようなものなら

ret = Inputbox("管轄署を入力。0=中央区、1=東署")
select case ret
case 0: me!管轄署 = "中央区"
case 1: me!管轄署 = "東署"
end select

で手抜き実装したりとか

3.大江町以外の[管轄署]がどう使われているのかわかりませんが[大江町用管轄署]コンボボックスを重ねてvisibleのON/OFFでそのフォーム内で処理するとか

4.

MsgBox "大江1丁目・2丁目1番~7番・大江3丁目~6丁目は中央署です。大江2丁目8番以上は東署です。"

決まり切っているなら自前で入力された住所を解析してユーザーに入力させないのが一番だと思います。住所だと丁目(番地)を省略されたりハイフンでつないだりと手間もかかりそうですが。

2

現状の仕様をもう少し詳細かつ明確に提示してもらった方が適切な回答ができると思います。

出ている情報から推測するに、
コンボボックス「CB熊本市保3」で町名を選択する、ということですね。

フォームのレコードソースのテーブルのフィールド構成はどうなっているのでしょうか。
住所は熊本市だけですか。
町名、丁目番地は別になっているのでしょうか。

大江町以外の場合はどうなりますか。

3
tokinaito 2019/08/28 (水) 14:26:28 bb5c2@5f550

お世話になります。質問が要領が悪く大変失礼しました。
下記で分かりますでしょうか。

区コンボ   あいおうえおコンボ  町名コンボ

それぞれコンボを連携し町名まではコンボ入力し
丁目以降は手入力をしています。

中央区  →  あ →        大江   
東区      か          出水
西区
南区
北区

大江以外の町名にはそれぞれ警察署をコンボに記して
Me!警察署 = 町名コンボ.Column(3)で求めています。
しかし大江は下記のように丁目地番で警察署が違うので
町名コンボの更新後処理で処理したいのです。

町名コンボの更新後処理に

DoCmd.Requery "保管地番"
Me!保管地番.SetFocus
If Me.町名コンボ= "大江" Then
MsgBox "大江1丁目・2丁目1番~7番・大江3丁目~6丁目は中央署です。
大江2丁目8番以上は東署です。"
管轄署 = InputBox("管轄署を入力")
管轄署.SetFocus
End If
Me!保管地番.SetFocus
Me!警察署 = 町名コンボColumn(3)
End Sub

それではよろしくお願いします

4
tokinaito 2019/08/28 (水) 14:31:03 bb5c2@5f550

訂正です
ME.保管地番→ME.町名コンボ

5
hiroton 2019/08/29 (木) 10:21:27 8ed72@f966d

最初から管轄署をコンボボックスで作ればいいのでは?
(やっぱりユーザーに入力させないのが一番だと思いますが)

6

hirotonさんの回答に私も同意です。

メッセージボックスを表示させるのは入力が中断されるのでユーザーにとっては鬱陶しいです。

コンボボックスで選択できるようにして、その横にラベルを配置しておいて、そのラベルに
"大江1丁目・2丁目1番~7番・大江3丁目~6丁目は中央署です。
大江2丁目8番以上は東署です。"
と表示させればいいかと思います。

ところで、丁目以降は入力しないのでしょうか。
丁目で警察署を判断するということは、入力時に参照してるデータには丁目があるということですよね。
ならば丁目まで入力あるいはコンボで選択するような設計にすれば警察署は自動できまります。

大江だけ例外的な処理なら今回のような設計もありえますが。

7
tokinaito 2019/09/19 (木) 15:25:43 bb5c2@5f550

インターネットが使えない状況が続き返事が遅くなり
申し訳ありません。
horotonさんhatenaさんご教示大変ありがとうございます。
警察の管轄が町名で分けてありますが
大江だけが町名ではなく丁目あるいは番地で
分けてあるのです。

したがってhorutonさんの
2.身内で使うようなものなら
ret = Inputbox("管轄署を入力。0=中央署、1=東署")
select case ret
case 0: me!管轄署 = "中央署"
case 1: me!管轄署 = "東署"
end select
で手抜き実装したりとか

を参考にして作ってみようかと思います。