Microsoft Access Club >SampleFile Q & A >インデックス >このページ >次頁 < 前項  サイト内検索


Q&A-001 DlookUp関数の使用例--番号の上二桁を認識させて



Access Club 超初心者 BBS
タイトル : 番号の上二桁を認識させて・・・
記事No : 6429
投稿日 : 2003/04/11(Fri) 14:29
投稿者 : とり

OS:NT4.0
Access Version:97
上二桁で種別を、下3桁が実際のナンバーとか、そういったものの入力なのですが、フォームで発注番号を5桁で入力したら自動的に種別が出るようにしたいのですが。。。


この投稿内容を実現するためには、テーブルに格納されているデータを「発注番号」が入力される都度、フォーム上に引っ張り上げる必要があります。

考え方

方法として考えられるのは、

  1. DlookUp関数の利用
  2. クエリでデータを加工

の2通りが考えられるんじゃないでしょうか。

DlookUp関数の利用

分類した文字列はフォーム表示だけで、テーブルに保存しません。

テーブルの作成

テーブルを2種類作成します。これらのテーブルは独立していますので、リレーション設定は不要です。

  1. tbl_sample  *最初の数字が全て30〜39までの数字。
ID 日付 識別番号
1 2000/10/01 36263
2 2000/10/10 32110
3 2000/10/10 3222163
4 2000/10/10 39334
5 2000/10/10 37389
6 2000/10/11 36229
7 2000/10/11 352269
  1. tbl_分類 *分類のマスターテーブルとして利用。

分類ID 分類名
30 チンパンジー
31 ゴリラ
32 チーター
33 アフリカゾウ
34 さい
35 きりん
36 バッファロー
37 とら
38 ライオン
39 うま

更新後処理イベントプロシージャの作成

識別番号を入力するフォーム上のテキストボックス(txt識別番号)の更新後処理イベントに下記のプロシージャを記述します。

Private Sub txt識別番号_AfterUpdate()

On Error GoTo エラー

    Dim TxtBox分類 As TextBox
    Dim Var識別 As Variant
    Dim Var分類 As Variant
    
    Set TxtBox分類 = Me.txt分類
    Var識別 = Left(Me.txt識別番号, 2) '左2桁を抽出。
    Var分類 = DLookup("分類名", "tbl_分類", "[分類ID]=" & Var識別)
    
    TxtBox分類 = Var分類
        
Exit Sub

エラー:

    If Err.Number = 3075 Then 'エラー番号3075発生時。
        TxtBox分類 = " "
        Resume Next
    Else
        MsgBox "予期せぬエラー発生" & vbNewLine & _
                Err.Description, 16
        End
    End If

End Sub
解説
  1. txt識別番号が空欄のままだとエラーが発生しますので、エラー処理が必ず必要です。なお、エラー番号は3075です。

レコード移動時イベントプロシージャの作成

閲覧フォームとしてレコード移動させた時にも、DlookUp関数を動かす必要があります。よって、フォームのレコード移動時イベントにも同様のプロシージャを記述します。しかし、まったく同一ですので、下記のようにCall関数を用いて簡略化が可能です。

Private Sub Form_Current()

    Call txt識別番号_AfterUpdate

End Sub

関連ページ

2003/04/13

ページの先頭へ 前ページへ戻る

 


Q&A-001 DlookUp関数の使用例--番号の上二桁を認識させて


 

-Microsoft Access Club-