プロが教える店舗&オフィスのセキュリティ対策術

ACCESSを初めて使う初心者です。

ACCESSで携帯電話の管理を行うデータベースを作ろうと考えています。
電話番号をキーにして携帯電話台帳にデータを入力するフォームを作りました。
当然、電話番号は重複なしのインデックス項目にしています。

しかしフォームを作って入力を行うと、最初に電話番号を入力した時には、
まだ重複のチェックは行われず、使用者等のすべての項目を入力し終わって、
次のデータの入力を行おうとした時に初めて、「重複キーがある」というような
メッセージが出てきます。(一般使用者には分かりにくいメッセージだと思います)

これを最初に電話番号を入力した時点で直ちに重複チェックを行って、
重複がある場合にはエラーにして、以下の項目の入力はさせないようにする。
そして適切な指示を表示するには、どうしたらいいでしょうか?

マニュアルに書いてある通りにやってみて、一応できたという程度の全くの初心者
です。ピントの外れた質問かもしれませんがどうかよろしくお願いいたします。

A 回答 (4件)

電話番号を入力した直後にレコードセレクタをクリックされたらどうでしょう。

(私の記憶に間違いがなければ、)そのレコードが保存され(ようと)しますから、もし主キーの値が重複しているとエラーが出るのではないでしょうか。
    • good
    • 0
この回答へのお礼

q09さん。
ありがとうございます。

今は家にいてACCESSの画面を確認できないのですが
「レコードセレクタ」というのはどこにあったでしょうか?

お礼日時:2009/06/03 22:37

電話番号のテキストボックスのプロパティのデータタブで、下記のように設定します。


入力規則 DLookup("電話番号","テーブル名","電話番号='" & [電話番号] & "'") Is Null
エラーメッセージ この電話番号は既に登録されてます。別の電話番号を入力してください。

この回答への補足

教えて頂いたとおりやってうまくできました。

ありがとうございました。

しかし、ぱっと見てわかりませんでしたが
途中にシングルクォーテーションとか
なかなか私には難しいでした。

またよろしくお願いします。

補足日時:2009/06/04 23:13
    • good
    • 1
この回答へのお礼

hatena1919さん。

ありがとうございます。

早速明日会社でやって見ます。

お礼日時:2009/06/04 00:04

No.2の方の回答で必要十分と思いますが、試しにVBAでやってみました。

テーブルから自動作成した単票フォームの、IDフィールド(電話番号を入れている)の連結テキストボックスのコードです。単票フォームを開いた時点で、テーブル(T_testという名前)に既に接続していると思いますが、下記コードは動作する様です。
Private Sub ID_BeforeUpdate(Cancel As Integer)
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim mySQL As String
Dim telNo As String

telNo = Me.ID
Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
mySQL = "SELECT T_test.ID FROM T_test WHERE (((T_test.ID)='" & telNo & " '));"
rs.Open mySQL, cn, adOpenForwardOnly, adLockReadOnly
If rs.RecordCount = 1 Then
MsgBox telNo & "は既に存在します"
Me.Undo
End If
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub
VBAについては、必要なら下記ページなどをご覧下さい。
http://www.mahoutsukaino.com/ac/ac2002/vba/vba03 …
    • good
    • 0
この回答へのお礼

mitarashiさん。

ありがとうございます。
少し私には難しそうですが
ACCESSを使うならやはりVBAの勉強が必要なんでしょうか?
これまでEXCELをマクロもVBAのなしでやってきたのですが
他人に使わせるとか言うことになると必須なのかな・・・

お礼日時:2009/06/04 00:09

#1です。



>「レコードセレクタ」というのはどこにあったでしょうか?

たいていはフォームの左端です。
    • good
    • 1
この回答へのお礼

q09さん。

ありがとうございました。

早速、今日会社でやって見ます。

お礼日時:2009/06/04 06:01

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