アクセスを使って整数番号を入力するときにその整理番号にチェックデジットがかかっているのですが(算式はわかりません)、入力した整数が違うと警告するようにするにはどうすればいいのでしょうか。整理番号は7桁です。
算式がわからないので解答のしようがないかもしれませんが・・・
素人でアクセスもチェックデジットについても詳しくないのですが、分かる方がいれば教えてください。
質問の意味はうまく伝わってるでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

完全に推測の回答です。


7桁とのことですんで、最後の1桁がチェックデジットでしょうかねぇ。
最も簡単な方法としては、前の6桁を足し算してみて、その結果の1の位がCDになるとか…
あるいは、その数に適当な数を加えて、更にその1の位を取得するとか…

とりあえず計算方法をあれこれ推測してみるしかないですが、推測するにしてもサンプルがないと(^^;

出来れば整理番号が連続したもの、ばらばらなものを取り揃えて10本程度用意していただくと、パズル好きな回答者さんから回答が寄せられるかも知れませんです。
暇があれば、私も取り組んでみるかもしれません。
    • good
    • 0
この回答へのお礼

早速お答えありがとうございます。わたしもいろいろ試してみます。

お礼日時:2001/09/04 22:53

方法としては二つ考えられます。


1.チェックデジットの計算方法を聞く
2.すべての整理番号をテーブルに書き出し、存在チェックをかける。

実装方法は、フォーカス喪失時イベントで上記のどちらかの方法でチェックをしたあと不正な番号であれば、フォーカス喪失をキャンセルすればよいと思います。
    • good
    • 0
この回答へのお礼

早速、お答えありがとうございます。チェックデジットの計算方法を聞いてみようと思います。

お礼日時:2001/09/04 22:51

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qアクセスを使って整数を入力するときにチェックデジットで入力が違うと警告するようにするには (新

前回の質問がかなり抽象的で意味がわかりずらかったと思いますので追加します。
自分なりにしらべた結果、チェックデジットの計算方法は次のとおりでした。
整数は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

前回の質問がかなり抽象的で意味がわかりずらかったと思いますので追加します。
自分なりにしらべた結果、チェックデジットの計算方法は次のとおりでした。
整数は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=...続きを読む

Aベストアンサー

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の先頭のシングルクォーテーションを削除してください。

質問等ありましたら、補足してください。

VBAを使った解法の例です。
数値を入力するテキストボックスのプロパティを表示し、「イベント」の「更新前処理」の値を「イベントプロシージャ」に変更した後、その右に現れる「...」をクリックしてください。

んで、出てきた画面に以下の内容を貼り付けます。
(尚、最初の行と最後の行は既に入力されているはずですので、その間の部分だけコピペしてください)

'*****ココから
Private Sub テキスト0_BeforeUpdate(Cancel As Integer)
  Dim CheckDat As String
  Dim ErrMsg As String
  Dim ...続きを読む

Qエクセルやアクセスで分と秒で表示し、なおかつ算式が使えるようにしたい

タイトル通りなのですが、アクセスにを勉強し始めて、ためしに何かを作ってみようと思いました。そこで実益を兼ねて(?)自己所有のCDを管理しようと思いました。
そこで曲毎に時間を入れて、アルバム合計タイムを出そうと思ったのですが、
「分と秒」の表示がわからず、エクセルでも調べてみたところ書式設定で「ユーザー定義」では「時間:分:秒」まではありますが、「分:秒」だけというのはありません。
またアルバムの総合計タイムにした時、通常のCDやMDのように1時間越えても、たとえば「72分50秒(72:50)」みたいな表示の仕方は無理なのでしょうか。
「1:12:50」という表示にすれば良いんでしょうけど、もし方法があれば知りたいと思い質問させていただきました。

Aベストアンサー

表示形式をユーザー定義にして種類の欄に
[m]"分"ss"秒"
または
[m]:ss
としてください。

Qアクセスの郵便番号入力について

郵便番号支援機能で
郵便番号を入れると住所が入力されます
しかし
番号がわかっていない段階で
東京を選んだら→23区&その他、が出て
荒川区を選んだら→その中の町が出る
・・
のようにしたいのですが
この場合、MS-ACCESS2003に住所データがありますか
自分で用意(ダウンロードするか等)しなければ
なりませんか?
簡単に構築できるてがかりを教えてください

Aベストアンサー

ACCESS2003の郵便番号支援機能用なら
http://www.microsoft.com/downloads/details.aspx?familyid=45192822-FBA7-49E6-B220-09BB32250EB3&displaylang=ja

また独自に作るなら郵政公社のHPからダウンロード可能です。
ただしかなり重いですし、最低でも年に1度は更新の必要があります。
http://www.post.japanpost.jp/zipcode/

フリーの検索ソフト
http://www.yu-bin.net/download/

Q16桁の番号の編集について

16桁の番号を1111111111111111を入力すると
1111-1111-1111-1111と表示させるようにしたいんですが
2つのセルに16桁を分けて入力し、その後text関数等でハイフンを入れた状態に出来るのですが、もっと簡単な方法がないかご教授願います。

Aベストアンサー

#1です。桁数の件意識していませんでした。失礼しました。

#3の方と同じ方法ですが、A1に16桁の数値を文字として入力します。
'1234567890123456のように頭にシングルコーテーションを入れると文字になります。それか、あらかじめデータを入れるセルを「文字」に書式設定します。

=MID(A1,1,4) & "-" & MID(A1,5,4) & "-" & MID(A1,9,4) & "-" & MID(A1,13,4)
表示させたいセルに上の式を設定すれば、1234-5678-9012-3456と表示されるはずです。

Qアクセスで小数点以下1桁までをインポートしたい

アクセスのインポートで小数点1桁までをインポートしたいです。
インポートするデータはCSVファイルです。
インポート定義をつける為に、エクセルのデータをCSVにし、CSVをアクセスにインポートしています。
エクセルの時点では、小数点下1桁まで表示されているのですが、CSVに加工した時に小数点以下1桁が0のものは整数表示になってしまいます。
(例)
 エクセル → CSV
  38.5  → 38.5
  35.0  → 35

アクセスでインポートした後に、全部のレコードを小数点下1桁にするのはどうしたらよいのでしょうか?

Aベストアンサー

No3です。
言葉がたりませんでしたね。
Accessのテーブルの設定で
「書式」を「0.0」としてみては?
です。


人気Q&Aランキング

おすすめ情報