[リストへもどる]
一括表示

投稿時間:2004/04/08(Thu) 14:18
投稿者名:ゆづき
Eメール:
URL :
タイトル:
Textboxを使用した入力チェックの手段
いつもお世話になっております。
VB5.0、DBにOracleを使用しております。

Oracle・D/B上にNumber(11,2)と定義されている項目に対して、
VBのtextboxによる入力フィールド上で、入力のチェックを実施したいと考えております。
入力チェックに際しては、
  ・整数部9桁+小数点以下2桁までの入力を有効とし、
    整数部が9桁よりも大きい場合や、小数点以下が3桁以降となる
    場合には入力エラーとする。

安易なことかとは存じますが、よろしく手ほどきの程をお願いいたします。

投稿時間:2004/04/08(Thu) 14:38
投稿者名:へいぽ
Eメール:
URL :
タイトル:
Re: Textboxを使用した入力チェックの手段
何が分からないの?

単純に、小数点の位置を見つけて、
それより前が9桁以上か
それより後が3桁以上か
を調べれば良いのでは?

投稿時間:2004/04/08(Thu) 15:03
投稿者名:ゆづき
Eメール:
URL :
タイトル:
Re^2: Textboxを使用した入力チェックの手段
すみません。具体的説明が抜けておりました。
ご回答にありました『小数点の位置を見つける』手段(コーディング)が
わかりませんでした。
まだVBコードを作成し始めて間もない為、初歩的なこととは思いますが
ご指導よろしくお願いいたします。
 ←もっと勉強が必要と思いますので今後スキルアップに努めます。

> 何が分からないの?
>
> 単純に、小数点の位置を見つけて、
> それより前が9桁以上か
> それより後が3桁以上か
> を調べれば良いのでは?

投稿時間:2004/04/08(Thu) 15:20
投稿者名:放浪者
Eメール:
URL :
タイトル:
Re^3: Textboxを使用した入力チェックの手段
> すみません。具体的説明が抜けておりました。
> ご回答にありました『小数点の位置を見つける』手段(コーディング)が
> わかりませんでした。

単純に小数点位置を見つけたいのであれば、Int()を使えば数値の整数部分を
返しますから、あとはLen()でカウントしてやれば整数部分の文字数が
分かりますよ。

投稿時間:2004/04/08(Thu) 15:30
投稿者名:黒影
Eメール:
URL :
タイトル:
Re^3: Textboxを使用した入力チェックの手段
> ご回答にありました『小数点の位置を見つける』手段(コーディング)が
> わかりませんでした。

放浪者さんが回答されましたが、こんな方法も...
ただし、ヒントだけ...ヘルプ等参照しながらやって下さい。

1)Instr で小数点の位置を見つける
2)Mid と Len で整数部と小数部をそれぞれ切り出して桁数判定

☆この方法だと、小数点が複数含まれていないかのチェックも必要です

投稿時間:2004/04/08(Thu) 16:18
投稿者名:放浪者
Eメール:
URL :
タイトル:
Re^4: Textboxを使用した入力チェックの手段

> 1)Instr で小数点の位置を見つける
> 2)Mid と Len で整数部と小数部をそれぞれ切り出して桁数判定

なるほど、確かにその方法も ありですね (ーΛー)うーん
後は、やりやすい方法でやられたら良いのでは・・・・

投稿時間:2004/04/08(Thu) 16:43
投稿者名:黒影
Eメール:
URL :
タイトル:
Re^4: Textboxを使用した入力チェックの手段
> 1)Instr で小数点の位置を見つける
> 2)Mid と Len で整数部と小数部をそれぞれ切り出して桁数判定
>
>☆この方法だと、小数点が複数含まれていないかのチェックも必要です

これだけでは、アドバイスとしては不親切(不適切)ですね...
自分でやってみたら色々とやらなきゃいけない事が...(^^;)

>もっと勉強が必要と思いますので今後スキルアップに努めます。

を信じて...説明下手なのでコード載せちゃいます。

Private Sub Command1_Click()

    Dim l       As Integer
    Dim p       As Integer
    Dim strChar As String

    '数値チェック
    If Not IsNumeric(Text1.Text) Then
        MsgBox "正しい値を入力して下さい。", vbExclamation, "入力エラー"
        Exit Sub
    End If
    
    strChar = Format(Text1.Text, "#.#")
        
    l = Len(strChar)
    
    '小数点位置取得
    p = InStr(strChar, ".")
    
    If p > 0 Then
        '整数部チェック
        If Len(Mid(Trim(strChar), 1, p - 1)) > 9 Then
            MsgBox "整数部は9桁以内!!", vbExclamation, "入力エラー"
            Exit Sub
        End If
        '小数部チェック
        If Len(Mid(Trim(strChar), p + 1, l - p)) > 2 Then
            MsgBox "小数部は2桁以内!!", vbExclamation, "入力エラー"
            Exit Sub
        End If
    Else
        '整数部チェック
        If Len(Trim(strChar)) > 9 Then
            MsgBox "整数部は9桁以内!!", vbExclamation, "入力エラー"
            Exit Sub
        End If
    End If

    Label1.Caption = Format(strChar, "#.00")
    
End Sub

投稿時間:2004/04/08(Thu) 16:57
投稿者名:黒影
Eメール:
URL :
タイトル:
Re^5: 一部修正
> strChar = Format(Text1.Text, "#.#")

  strChar = Format(Text1.Text, "#.##")
  もしくは
  strChar = Format(Text1.Text, "#.###")

  strChar = Format(Text1.Text, "#.##")
  では、小数点第三位以下は無視する形式になります。

投稿時間:2004/04/09(Fri) 14:56
投稿者名:黒影
Eメール:
URL :
タイトル:
Re^6: これだけでも良かった

もう見ないだろうけど...

もっとスマートなコードにならないかなと思って
「Trim」の位置を変えたりしてデバッグしてたら、
下記だけで良かったんだ...

Private Sub Command1_Click()

    Dim l       As Integer
    Dim p       As Integer
    Dim strChar As String

    '数値チェック
    If Not IsNumeric(Text1.Text) Then
        MsgBox "正しい値を入力して下さい。", vbExclamation, "入力エラー"
        Exit Sub
    End If
    
    strChar = Format(Trim(Text1.Text), "#.###")
        
    l = Len(strChar)
    
    '小数点位置取得
    p = InStr(strChar, ".")

    '整数部チェック
    If Len(Mid(strChar, 1, p - 1)) > 9 Then
        MsgBox "整数部は9桁以内!!", vbExclamation, "入力エラー"
        Exit Sub
    End If
    
    '小数部チェック
    If Len(Mid(strChar, p + 1, l - p)) > 2 Then
        MsgBox "小数部は2桁以内!!", vbExclamation, "入力エラー"
        Exit Sub
    End If

    Label1.Caption = Format(strChar, "#.00")
    
End Sub

投稿時間:2004/04/08(Thu) 17:10
投稿者名:放浪者
Eメール:
URL :
タイトル:
Re^5: Textboxを使用した入力チェックの手段
>    
>     If p > 0 Then
>         '整数部チェック
>         If Len(Mid(Trim(strChar), 1, p - 1)) > 9 Then
>             MsgBox "整数部は9桁以内!!", vbExclamation, "入力エラー"
>             Exit Sub
>         End If
>         '小数部チェック
>         If Len(Mid(Trim(strChar), p + 1, l - p)) > 2 Then
>             MsgBox "小数部は2桁以内!!", vbExclamation, "入力エラー"
>             Exit Sub
>         End If
>     Else
>         '整数部チェック
>         If Len(Trim(strChar)) > 9 Then
>             MsgBox "整数部は9桁以内!!", vbExclamation, "入力エラー"
>             Exit Sub
>         End If
>     End If
>

この部分を、Select Case で 整理すると見やすくなりそうですね・・・
コードは載せませんけど m(__)m

投稿時間:2004/04/08(Thu) 19:17
投稿者名:ゆづき
Eメール:
URL :
タイトル:
Re^6: Textboxを使用した入力チェックの手段
返信が遅くなり申し訳ありませんでした。
皆様方のヒントを得て、何とか希望のロジックを実現することが
できました。
初心者でかなり苦労してしまいましたが、instr・Mid・Len関数を駆使
しながら、汚いコードでなんとか・・・というところです。
サンプルコードを掲載いただいた方のコード拝見させていただきました。
当方の汚いコード作成の後で見ると、さすがにすっきりしたコードでした。

これからもっと勉強いたします。
皆さん本当にありがとうございました。
今後ともよろしくお願いいたします。