お世話になります。早速本題に入ります。
タイトルに書きましたように、
フォームの日付のテキストボックスに
例えば、2021/08/18というデーターが過去に
あったなら、カレンダーや手入力で2021/08/18と
入力できなくする方法はありますか?
できれば、エラーメッセージが出て、
メッセージボックスのことですが、
既に入力された日付です。OK、NO
みたいな形に表示出来たらいいな!と
思っております。
お手数ですが、
御指南をヨロシクお願い致します。
P.S.
ネットで調べていると、
クエリは重複の値を表示させないという
機能があるみたいですね。
でも、似てるけど、違う…ということで
ここでご質問させていただきました。
まずは、状況確認ですが、もしかしてこんな感じですか?
あと、どのテキストボックスがイメージに近いでしょうか?
親テーブル:日付ID,日付
子テーブル: 主キー,日付ID,その他
メインフォーム連結クエリ:日付ID,日付
サブフォーム連結クエリ:主キー,日付ID,日付,その他
↪フォームヘッダー
日付テキストボックス(非連結):⬜⬜⬜
↪詳細
日付ID:(新規)
日付 :⬜⬜⬜
↪フォームフッダー
📋サブフォーム
↪サブフォームヘッダー
日付テキストボックス(非連結):⬜⬜⬜
↪サブフォーム詳細
↓
↓
↓
↓
2021/08/18↓ 親テーブル
ごめんなさい、こちらにミスがありました。『リンク親フィールド:日付ID、リンク子フィールド:日付ID』のつもりが、『リンク親フィールド:日付、リンク子フィールド:日付』となっていました。サブフォームで示した件は間違いです。
インデックスを使用してテーブル フィールドの値の重複を防ぐ
これはOKなら重複を許すということですか?
上記方法はデータベース的に重複を許さない形なので、これをやりたい場合は自前で制御を組む必要があります。更新前処理イベントで入力しようとした値がすでに登録されているかどうかチェックすればいいですね
りんごさん、hirotonさん
お二人様
御指南ありがとうございます。
どちらもかなり難しそうなので、
しばらくお時間をください。
ちょっと研究してみようと思います。
>hirotonさん
これはOKなら重複を許すということですか?
これは、自分で書きながら、
改めて考えると重複を一切許さない方がいいかな?
と思いました。重複のお知らせと
入力キャンセルのみのメッセージボックスが
開いた方がいいかもしれないと思いました。
こうした場合は、どうしたらよいでしょう?
返信がわかりづらかったので、
再投稿です。
(レスの引用の仕方が
いまいちよく把握できてません)
りんごさん、hirotonさん
お二人様
御指南ありがとうございます。
どちらもかなり難しそうなので、
しばらくお時間をください。
ちょっと研究してみようと思います。
>hirotonさん
>これはOKなら重複を許すということですか?
これは、自分で書きながら、
改めて考えると重複を一切許さない方がいいかな?
と思いました。重複のお知らせと
入力キャンセルのみのメッセージボックスが
開いた方がいいかもしれないと思いました。
こうした場合は、どうしたらよいでしょう?
重複を許さないだけならすでに挙げた方法でいいですが、既定のメッセージじゃ使いにくいのはありますね。2つ目の方法でメッセージを出してキャンセルする(=条件分岐を入れない)ようにすればいいです
この度はいろんな方に御指南していただきまして、
ありがとうございました。
無事、hirotonさんの記載くださった方法で、
問題が解決しました。
どうもありがとうございました。
先日は皆様に大変お世話になりました。
そして、またご質問させてください。
先日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から始めるようにしたときに
だけエラーが出るみたいです。
すごく細かい質問になって
失礼します。
お手数ですが、ぜひ御指南ください。
旧質問が解決済だから、新しい質問をたてるのは、どうですか?
日付を入力したテキストボックスは、非連結ですか、それとも、◯◯テーブルもしくは△△クエリのほにゃららフィールドに連結していますか?新しい質問で教えて下さい。
この部分のコードにレコードを勝手に登録するような内容はありません。データを削除した後、「今日ではない日付」を最初に入力した場合に同じエラーメッセージが表示されますか?
(例えば「今日」が2021/9/15なら2021/9/16を入力します)
その後テーブルを開いて内容を確認してください。何が登録されていますか?