アクセスを使って整数番号を入力するときにその整理番号にチェックデジットがかかっているのですが(算式はわかりません)、入力した整数が違うと警告するようにするにはどうすればいいのでしょうか。整理番号は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と関連する良く見られている質問

QACCESS2003のデータアクセスページの使い方について

イントラ内でACCESS2003のデータアクセスページを使いたい。

1.ACCESS2003のデータアクセスページを作成しました。
2.そのMDBファイルと、データアクセスページ(htmファイル)を、WINDOWS2000ServerのInetpub内のwwwrootフォルダの中へ入れました。
3.ここにはイントラ内のHPなどを置いています。(普通に見れています。)
4.クライアントから、データアクセスページのhtmファイルを見に行くと「データソースログオン」が立ち上がります。(パスワードを設定しています。)
5.パスワードを入れるとデータアクセスページ(htm)から、通常のアクセスのフォームのごとくデータ入力が出来る予定なのですが(泣)できません。(泣)

で、悩んでおります。

ACCESS2003のMDBファイルとデータアクセスページ(HTMファイル)をサーバーのwwwrootへ置いただけでは、データアクセスページを通してmdbファイルへの入出力は不可能なのでしょうか?

Aベストアンサー

MDBに接続されたAccessプロジェクトを開いている場合データアクセスページは自動的にそのデータベースに接続されてそのパスがデータアクセスページのConnectionString プロパティに設定されます。
ページを作成した後でデータベースを移動またはコピーした場合はConnectionString プロパティに設定されているパスを更新して新しい保管場所を設定する必要がありますがどうなっていますか?
そこを確認してみてください。

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ホームページ移転に伴う.htaccessの使い方ですがアップロードして

ホームページ移転に伴う.htaccessの使い方ですがアップロードして削除できなくなる事ないですか??また、さくらサーバーは.htaccess使えますか??

Aベストアンサー

.htaccessだけではなく、
ファイルはパーミッションによっては一旦削除できなくなると思いますよ・・・
使えないのにアップすると削除出来ないとか。

>さくらサーバーは.htaccess使えますか??
使えます。
.htaccessを使えない有料サーバってあるのでしょうか?・・・

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

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

Aベストアンサー

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

QAccessで作成したテーブルのOLEオブジェクトの使い方

Accessで作成したテーブルにデータ型(OLEオブジェクト型)で画像を取り込みできるようにしました。
取り込みした画像を開くためのフォームを作成して画像を開けるようにしました。
下記の内容です。

Private Sub Form_Open(Cancel As Integer)
Form.Caption = ProgName
End Sub

しかし「ビットマップ形式」ですと問題なく開くのですが、「JPG形式」ですと開けないのです。取り込みしたAccessテーブルのフィールドから直接だとひらけます。
Accessで作成したフォームから、「JPG形式」の画像を開くにはどうすればよろしいですか?
また、画像を1000件ほど取り込みすると大きいデータベースになってしまいます。Accessのデータベースのサイズは制限があるのかしら?
アドバイスいただけれは幸いです。

Aベストアンサー

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正しく表示されません
http://support.microsoft.com/kb/832508/ja

解決策としては JPEG を開ける OLE コンテナになるアプリケーションをインストールしておく。

Google「Access データベース サイズ 制限」で検索
http://www.google.com/search?hl=ja&num=50&q=Access+%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9+%E3%82%B5%E3%82%A4%E3%82%BA+%E5%88%B6%E9%99%90&lr=lang_ja

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正...続きを読む

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/

QAccess2000でFTPの使い方について。

Access2000のフォームから、実行のボタンをクリックするとFTPサーバに接続→ファイル取得→Accessテーブルに取込→FTPサーバのファイル削除→FTPサーバの接続切断という処理をしたいのですがどのようにしたらよいかわかりません。説明不足だとは思いますが、アドバイスを宜しくお願い致します。

Aベストアンサー

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一覧(詳細)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
v = ftp.GetDir("bussys/winnt/winnt-public") ' ディレクトリ一覧(ファイル名のみ)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
rc = ftp.GetFile("bussys/winnt/winnt-public/*", "c:\temp") 'ファイル受信

end sub

実行には20秒ほどかかります。
実行前にはCドライブにtempというフォルダを作っておいてください。

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一...続きを読む

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と表示されるはずです。

QRuby on Rails 「attr_accessor」 の使い方に

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状態になってしまうことです。
「:if => 項目?」を書いてみると、「undefined method」のエラーがでてしまいます。

どなたか対応策の分かる方がおられましたらご教授いただけないでしょうか?

下記に実際の問題箇所のモデルクラスのソースを書いておきます。

 class User < ActiveRecord::Base

   attr_accessor :NEW_USER_PW ← 追加したアクセサ

   # 追加したアクセサに対するチェック
   validates_length_of :NEW_USER_PW, :minimum=>4, :message=>"は%d桁以上を設定してくださ            
    い。", :on => :update, :if => :NEW_USER_PW?

 end

上記のチェック内の「:if => :NEW_USER_PW?」で落ちてしまいます。
入力がないのにチェックに引っかかるとまずいので、入力がないときだけ上記チェックを行えれば良いのですが・・・。

どうぞ宜しくお願い致します。

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状...続きを読む

Aベストアンサー

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.size > 0
end

また、ifにはprocオブジェクトを渡すこともできますので、
:if => Proc.new{|u| u.NEW_USER_PW.size > 0}
と書いてもいいでしょう。


NEW_USER_PWというインスタンス変数はすべて大文字を使用されていますが、
見る人によっては定数と勘違いします。
変数であれば小文字表記を利用するほうが良いかもしれません。

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.s...続きを読む

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ランキング