Microsoft Access 掲示板

同じ日付を入力したらエラーを出してブロックできるようになったのですが…

8 コメント
views
4 フォロー

ワッフル 2021/09/14 (火) 13:21:57 946f7@318ee>> 6
先日は皆様に大変お世話になりました。

そして、またご質問させてください。
先日hiroton さんに
お教えいただいた以下のプログラムを入れました。

Private Sub 日付_BeforeUpdate(Cancel As Integer)
    If Not IsNull(DLookup("日付", "テーブル名", "日付=#" & Me.日付 & "#")) Then
        MsgBox "既に入力された日付です。異なる日付を入力してください"
        Cancel = True
    End If
End Sub

そうして、希望通り重複エラーを出せるようになったんです。

ところがです。

私は、関連のデーターをすべて消しました。
そうしてシステムを最適化しました。

そうしてオートナンバーを1からスタートに
して使おうとしました。

すると、
「既に入力された日付です。異なる日付を入力してください」
というエラーが出るように成りました。

日付は、本日の日付(2021/09/14)です。
入力できないので、1日ずらして(2021/09/15)を
入力しました。

そうして気になってテーブルを覗くと、
2021/09/14と2021/09/15で
データーが入力されていました。

こういったエラーはどうしたら
取り除けますか?

その後は普通に入力できるので、
データーをオールクリアして最適化して、
オートナンバーを1から始めるようにしたときに
だけエラーが出るみたいです。

すごく細かい質問になって
失礼します。

お手数ですが、ぜひ御指南ください。


9
りんご 2021/09/14 (火) 14:09:39 c564b@0e907>> 8
 旧質問が解決済だから、新しい質問をたてるのは、どうですか?
 日付を入力したテキストボックスは、非連結ですか、それとも、◯◯テーブルもしくは△△クエリのほにゃららフィールドに連結していますか?新しい質問で教えて下さい。


10
hiroton 2021/09/15 (水) 08:22:35 a2c3c@f966d>> 6
そうして気になってテーブルを覗くと、
2021/09/14と2021/09/15で
データーが入力されていました。

この部分のコードにレコードを勝手に登録するような内容はありません。データを削除した後、「今日ではない日付」を最初に入力した場合に同じエラーメッセージが表示されますか?
(例えば「今日」が2021/9/15なら2021/9/16を入力します)

その後テーブルを開いて内容を確認してください。何が登録されていますか?

ワッフル
作成: 2021/09/22 (水) 12:37:06
通報 ...
1
ワッフル 2021/09/22 (水) 12:37:45 946f7@318ee

新しく質問記事を立ち上げました。
宜しくお願い致します。

2
ワッフル 2021/09/22 (水) 12:42:30 946f7@318ee

hiroton さんへ

ところで、エラーですが、
色々調査した結果、

必ず、本日の日付が自動入力されるようになっているようです。
そうして、本日の日付を入力しようとしたら重複エラーが出て、
日付を変えると入力できて、でも、本日の日付のデーターが
必ず入っているという感じみたいです。

最初から、違う日付を入れた場合、
本日の日付のデーターが自動で入力され、
1件登録しただけのつもりなのに、
本日の日付のデーターと別の日の日付データー
2件が入力されるみたいです。

3件目のデーターからは
ちゃんと重複エラーも出るし、
データーも1件入力したら
1件だけしか登録されません。

大変お手数ですが、御指南を
宜しくお願い致します。

3
ワッフル 2021/09/22 (水) 12:43:35 946f7@318ee

りんごさんへ

テキストボックスですが、非連結です。
新規に質問項目を立ち上げました。
どうぞ宜しくお願い致します。

5
りんご 2021/09/22 (水) 14:03:39 c564b@0e907 >> 3

 テーブルの日付フィールドが、規定値:Date()だという前提で、当てずっぽうですが。

ID日付ほにゃらら
(新規)9/22(本日の日付)ほにゃら、、、

レコードの編集中に、うっかりクリックを押して、確定されてしまった。

ID日付ほにゃらら
19/22(本日の日付)ほにゃら、、、
(新規)9/22(本日の日付)

 こんな経験はないですか?同様に、レコードの編集中に、イベントが発生したので取り敢えず確定されてしまった。その後、イベントスタート。新規レコードの日付フィールドには、本日の日付が自動入力されているので、フォームの日付を代入・上書き。テーブルを開いてみると、あら不思議、2つのレコードが出来ました。もしかして、こんな状況なのではないでしょうか?
 

3件目のデーターからは…1件だけしか登録されません。

ID日付ほにゃらら
19/22(本日の日付)ほにゃら
29/23
(新規)9/22(本日の日付)

 3件目からは、既存レコードの編集中にイベントが発生しているから、影響しないという事かもしれない。(新規レコードの日付フィールドに代入・上書きされるだけ)。
 フォームがテーブルやクエリに連結している前提ですが、新規レコードに移動して、イベントを発生させると…。

6
りんご 2021/09/22 (水) 14:57:58 c564b@0e907 >> 5

 規定値を設定しない、イベントスタート後、Me.Undoするとか、でしょうか?そもそも論から的外れでしたら、ごめん。

4
hiroton 2021/09/22 (水) 13:11:11 f717b@f966d

既に回答した通りですが、質問のコード部分には勝手にデータを登録するような仕組みはありません。入力したことのない値(本日の日付)のデータが作られるということは何かを条件に自動でデータを登録する仕組みがどこかにあるということです

作った人なら当然知っている仕様だと思いますが確認できませんか?


作った人がすでに連絡を取れない状態でどうにかしなければならないということであれば、その動作からどこかの何かを探すという作業が発生します。大本の質問とは全く関係ない仕事だということは理解してください

とりあえず見るべきはフォームプロパティイベントタブですね
未確認の[イベント プロシージャ]やマクロが設定されていませんか?

7
ワッフル 2021/09/24 (金) 08:14:16 946f7@318ee

丁寧なご返事ありがとうございます。
私が製造者ですが、Date()みたいなのを
入れたり消したりした記憶はあります。その辺が
まずいんでしょうね。

後は、再クエリとか、値の代入とか
色々思うような動きをさせるために、
イベントに設定しています。

それがエラーになっている危険性が大と思いました。

また調べてご報告します!

8
ワッフル 2021/10/06 (水) 12:19:23 946f7@318ee

解決しました。

結局、私が変なところに、Date()値の代入を記載しておりました。
(思うような結果を出すための試行錯誤の果てですが、めんぼくありません)
そうして、この度は大変丁寧にご返信くださり、ありがとうございます!

またここを利用したいと思います。