
前回の質問がかなり抽象的で意味がわかりずらかったと思いますので追加します。
自分なりにしらべた結果、チェックデジットの計算方法は次のとおりでした。
整数は6桁で一番最後の桁がチェックデジットになっています。
例えば、540838という番号なら最初の5の桁に6をかける(5×6=30)
次の桁は4に5をかける(4×5=20)次の桁は0に4をかける(0×4=0)
以下、8×3=24、3×2=6と計算し、出た答えを全部たした(30+20+0+24+6=80)80を最初に超える11の整倍数からひく(88-80=8)と最後の桁と一致すればその番号は正しく入力されていると判断できるしくみになっています。
この演算式をアクセスでデータ入力した際に、自動的に演算計算して、チェックデジットが一致していないときは、警告するようにしたいのですが、この算式をアクセスでどのように入力すればいいのかわかりません。また、そもそも、アクセスでこんな演算式を入れることができるのかもわかりません。
素人で申し訳ないのですが、わかるかたがいれば教えてください。
関連URL:http://oshiete1.goo.ne.jp/kotaeru.php3?qid=128693
No.2ベストアンサー
- 回答日時:
VBAを使った解法の例です。
数値を入力するテキストボックスのプロパティを表示し、「イベント」の「更新前処理」の値を「イベントプロシージャ」に変更した後、その右に現れる「...」をクリックしてください。
んで、出てきた画面に以下の内容を貼り付けます。
(尚、最初の行と最後の行は既に入力されているはずですので、その間の部分だけコピペしてください)
'*****ココから
Private Sub テキスト0_BeforeUpdate(Cancel As Integer)
Dim CheckDat As String
Dim ErrMsg As String
Dim CD As Long
CheckDat = Nz(Me.テキスト0, "") '行A
ErrMsg = ""
If IsNumeric(CheckDat) = False Then
ErrMsg = "数値じゃない"
ElseIf Len(CheckDat) <> 6 Then
ErrMsg = "6桁じゃない"
Else
CD = 0
CD = CD + (Val(Mid$(CheckDat, 1, 1)) * 6)
CD = CD + (Val(Mid$(CheckDat, 2, 1)) * 5)
CD = CD + (Val(Mid$(CheckDat, 3, 1)) * 4)
CD = CD + (Val(Mid$(CheckDat, 4, 1)) * 3)
CD = CD + (Val(Mid$(CheckDat, 5, 1)) * 2)
CD = 11 - (CD Mod 11)
'If CD = 11 Then CD = 0 '行B
If CD >= 10 Then CD = CD - 10 'CDが10もしくは11のときは、CDから10を引く(一桁にする)
'CDの判定
If Right$(CheckDat, 1) <> CStr(CD) Then
ErrMsg = "チェックデジットが間違ってる"
End If
End If
If ErrMsg <> "" Then
MsgBox ErrMsg
'Cancel = True
End If
End Sub
'******ココまで
また、この例では、数値データが一つのテキストボックスに入力されていることを想定しています。
もし、テキストボックスが6コ用意されているとかでしたら、行Aの内容を
CheckDat = nz(Me.テキスト0,"") & nz(Me.テキスト1,"") & nz(Me.テキスト2,"") & …
ってな感じにしてください。
また、「80を最初に『超える』11の倍数」 とのことですので、計算結果が11の倍数(Ex:88)になったときは、99-88=11とし、1の位を取って最終的なCDは1になる、としています。
つまり、前5桁が「54283」のときは、CDは1になります。
もし、「88」のときのCDを0にしたい場合は、行Bの先頭のシングルクォーテーションを削除してください。
質問等ありましたら、補足してください。
No.1
- 回答日時:
できます。
いくつか方法があるので、仮にテキストボックスを使うとして、BeforeUpdate イベントで、入力された整数値を文字列に変換して、桁数チェック、最初の桁(文字)を数値に変換して、6をかける・・・・・をやればできます。
けど逐一全部説明するのは、大変骨の折れることで、面倒なので、何か解説書を買うことをお勧めします。
具体的な入門書の名前は、別な人が回答してくれるでしょう。
>前回の質問がかなり抽象的で意味がわかりずらかったと思いますので追加します。
#前回の質問ってなに?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java 南京錠 2 2023/02/04 11:46
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- 数学 小数点の計算についてです。 答えは与えられた数字の中で最も少ない桁に四捨五入で合わせるのですが、ひと 2 2023/04/04 15:19
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- 高校 有効数字計算 確定した値を含む 2 2023/01/18 06:03
- 高校 高校化学、気体、温度の有効数字 3 2023/04/02 11:39
- Excel(エクセル) エクセル/列追加時、合計行の計算式 7 2023/03/15 11:14
- 数学 数学Aについて分からない問題があります。 答えは載っているので分かりますが、 解き方がわかりません。 5 2023/02/03 18:58
- スーパー・コンビニ 今日初バイトでコンビニなんですが、レジ打ちを初めてやり凄く恥ずかしい思いしてしまい、私昔から算数や数 3 2023/07/20 19:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル:6E-05という表現は?
-
3÷7のあまりは「3」ですか?
-
エクセルで数字を希望する有効...
-
3分の1とは何パーセントでしょ...
-
7で始まる電話番号?
-
7で割ると3余り、9で割ると4余...
-
コンピュータのデータ量につい...
-
エクセル関数で桁数指定し数値...
-
数字3桁の組み合わせの何通り...
-
大雪で小屋根の軒桁が外れた
-
エクセルで有効桁を指定して丸める
-
0以下の数字は何桁?
-
個数の処理
-
この問題のやり方教えて!数値...
-
おつりの簡単な計算方法?(引...
-
0.10は何桁ですか?
-
何進数が理論的にベスト?
-
小数点以下2進数どうしの和と...
-
車のナンバー
-
なぜ、余りで除算するのか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル:6E-05という表現は?
-
数字3桁の組み合わせの何通り...
-
2進数の割り算が分かりません...
-
数値とアルファベットに分ける...
-
7で始まる電話番号?
-
数学の階乗はどんな時に使うの...
-
3÷7のあまりは「3」ですか?
-
EXCELで10万未満切捨ての...
-
エクセル関数で桁数指定し数値...
-
電話番号のハイフンの入れ方
-
NUMBER(N,M) としたときの、格...
-
60進法と10進法
-
3分の1とは何パーセントでしょ...
-
Googleの電卓アプリの有効数字...
-
エクセルのsumifの検索値
-
アナログの電力量計を見たとき ...
-
【場合の数】 2桁の自然数で、2...
-
AccessでExcelでのMOD関数と同...
-
Excelで数値の丸め
-
0以下の数字は何桁?
おすすめ情報