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


Q&A-023 複数のテキストボックスを組み合わせて1つのテキストボックスを作成する方法


タイトル : テキストボックスの入力範囲について 
記事No : 13109 
投稿日 : 2003/10/06(Mon) 21:03 
投稿者 : アルシンド  

OS:2000
Access Version:XP

テキストボックスに入力する文字制限について考えてみました。
本書を参考したところ、、えっと、、

名前を入力するとき、全角5文字以内 1文字全角スペースあけて 全角5文字以内
という制限を行いたい。それ以外はダメ!とエラーメッセージを表示したい。

入力規則:Is Not Null
値要求:はい
エラーメッセージ:全角5文字以内 1文字全角スペースあけて 全角5文字以内で入力して下さい。
そこまでやりましたが、、全角5文字以内と1文字全角スペースをあける式はどのように書けばよろ
しいでしょうか?

もしくは、テキストボックスのプロパティでIMEモードで設定みることをいろいろいじって気づきま
したがどのように設定すればいいかな?
 
タイトル : Re^3: 発想を変えて 
記事No : 13165 
投稿日 : 2003/10/07(Tue) 20:13 
投稿者 : アルシンド  

Naoさん、Akiraさん、ご返事を頂きまして誠にありがとうございます。

> これを入力規則で考えると頭が混乱するので、発想を変えて「全角5文字以内」、「1文字全
> 角スペー ス」、「全角5文字以内」それぞれを1つのテキストボックスでユーザーに入力させる。
⇔全角スペースを1文字テキストボックスに入力させるってこれは変な感じではないでしょうか?

Akiraさんの案で気づきました。
(1)氏と名のフィールド名を付け加える。
(2)氏と名を対象にしてテキストボックスを2つ貼り付ける。
(3)入力後、そのデータを自動的に名前というフィールドの中に格納する。

フォーム
----
氏:[_連結テキストボックス_]
名:[_同上_________________]
名前:[______________________] これは入力不要。
⇔名前は、多分、氏と名のテキストボックス入力後、テーブルに格納する。
 その後、テーブルから反映されてテキストボックスに自動的に表示されるかな。。。

----
テキスト
--------------
氏  名   名前
--------------
A B A,全角スペース1文字,B

⇔(3)の案は可能でしょうか?Akiraさんの案も同じですが、これってどうやって実現させればいいかな?
 アドバイスを頂ければ幸いです。
 但し、格納するときはもち、AとBの全角スペースをあけたいんですが、、

> 名前を入力するとき、全角5文字以内 1文字全角スペースあけて 全角5文字以内という制限を行いたい。

一つのテキストボックスではなく、複数のテキストボックスを組み合わせて、最後に目的のテキストボックスに値を代入する。この方式が一番ポピュラーです。

 

フォームデザインビュー

氏、名の入力用のテキストボックスを配置する。テーブルフィールド(氏名)と連結しているテキストボックス(txt氏名)も同じく配置する。

 

 

テーブルへの登録は、コマンドボタン(cmd登録)から行う仕様とする。

 

フォームビュー

 

 

サンプルプロシージャ

Private Sub cmd登録_Click()

    Dim Txt_boxA As TextBox
    Dim Txt_boxB As TextBox
    Dim Txt_boxC As TextBox
    
    Set Txt_boxA = Me.txt氏
    Set Txt_boxB = Me.txt名
    Set Txt_boxC = Me.txt氏名
    
    If Len(Txt_boxA) > 5 Then
        MsgBox "氏:全角5文字以内"
        End
    End If
    
    If Txt_boxA = "" Then
        MsgBox "氏:空白は駄目"
        End
    End If
        
    If IsNull(Txt_boxA) Then
        MsgBox "氏:空白は駄目-Null"
        End
    End If
        
    If Len(Txt_boxB) > 5 Then
        MsgBox "名:全角5文字以内"
        End
    End If
    
    If Txt_boxB = "" Then
        MsgBox "名:空白は駄目"
        End
    End If
    
    If IsNull(Txt_boxB) Then
        MsgBox "名:空白は駄目-Null"
        End
    End If
    
    'StrConv関数で、全角に変換する。
    '" "は半角文字列。
    Txt_boxC = StrConv(Txt_boxA, vbWide) & " " & " " & StrConv(Txt_boxB, vbWide)

End Sub

 

コマンドボタン(cmd登録)のクリック時イベントに記述しています。下記のプロシージャは、レコード移動時にテキストボックスの値を消去するものです。

Private Sub Form_Current()

    Dim Txt_boxA As TextBox
    Dim Txt_boxB As TextBox
    
    Set Txt_boxA = Me.txt氏
    Set Txt_boxB = Me.txt名

    'レコード移動時は、テキストボックスを空白にする。
    Txt_boxA = ""
    Txt_boxB = ""

End Sub

 

ユーザーは、思いもよらぬ動作を行いますから、チェック項目を多めに取りました。

 

 

2003/10/08


Q&A-023 複数のテキストボックスを組み合わせて1つのテキストボックスを作成する方法


 

-Microsoft Access Club-