- 締切済み
ACCESS2000のフォームからの入力でデータが上書きされる
書類の受付簿を作成しました。 ユーザー1件ごとに受付日を入れると 規則性無く、時々入力したはずの日付が 前のレコードに書き込まれてしまいます。 内容としては【テーブル】 ユーザーテーブル(約2000件) 受付簿テーブル(3種類をそれぞれmm/ddで) ユーザーでは無くなった退会テーブル(Yes/No) 3つのテーブルで管理しています。 【クエリー】 日付入力をするためにクエリーを1つ作成 しました。上記3つのテーブルの合体させたもの。 それぞれのテーブルはユーザーIDでリレーションし ました。 【フォーム1】→これで入力するとおかしくなる ユーザーIDで検索し、ユーザー名が表示されたら 3項目ある受付枠に日付を入力する画面 フォームビューで作成 【フォーム2】 同じクエリーをデータシートビューで表示させ 検索機能なしで、直接ユーザーIDの該当枠に入力 する画面 を作成しました。フォームビューで作成したフォーム 1で入力したときに、どういう規則性があるか まったく判らないのですが、1件前のユーザーIDに セットされ、入力したはずの部分は空欄になって しまいます。 また、この現象に関連するのでしょうが、すでに入力 されていた日付が、消えてしまう現象もおきます。 何が原因でこのような現象になっているか、まったく 検討がつきません。どこら辺を、チェックしたら 良いか、回答をお待ちしています。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
#1です。ご呈示いただいたクエリーは確認できました。いぜんとしてトラブルの原因はわかりませんが、 ・フォーム1→トラブル ・フォーム2→正常 ・クエリーは同一 からするとフォーム1が何か余計なことをやっているとしか考えられません。その内容ですが ひょっとして ユーザー一覧のユーザー番号 または 受付簿のユーザー番号 が書き換えられている可能性はないでしょうか?検証方法としては ユーザー一覧と受付簿 のコピーを作成し、トラブル発生後に書き換えが発生していないか比較しては如何でしょう。
- O_cyan
- ベストアンサー率59% (745/1260)
フォーム1とフォーム2は同じクエリを使っていてフォーム1のみおかしいという事ですよね。 フォーム1はユーザーIDで検索して入力というのであれば一番怪しいのは検索の仕方だと思います。しかしユーザーIDでリレーションするさい不整合等のエラーが出ないのであれば正しく入力されるはずなのですが。 フォーム1のヘッダにコンボボックスを作りユーザーテーブルのユーザーIDを表示するようにしてそのコンボボックスで指定された値をフォーム上に検索し表示して入力するように変更してみてはいかがですか。 そのくらいしか質問内容からは判断できません。
面白い現象ですが【クエリー】の具体的SQL文を提示しないと、回答が出にくいと思います。 クエリーのデザインで、SQLビューにして得られたものを補足として貼り付けできないでしょうか?
補足
クエリーのSQLビューは、こんな感じです。 これがすべてです。 SELECT ユーザー一覧.ユーザー番号, ユーザー一覧.ユーザー名, 受付簿.用紙1受付日, 受付簿.用紙2受付日, 受付簿.用紙2の項目, 受付簿.用紙2の備考, 受付簿.用紙3受付日, 受付簿.用紙3受付日, 退会.退会, 受付簿.備考 FROM (ユーザー一覧 LEFT JOIN 受付簿 ON ユーザー一覧.ユーザー番号 = 受付簿.ユーザー番号) LEFT JOIN 退会 ON ユーザー一覧.ユーザー番号 = 退会.ユーザー番号;
補足
実は、検索方法はご指摘いただいた方法で 行っておりまして、検索後ユーザー名と ユーザーIDは、上書きできないようにロックを かけていて、日付入力しかできないように しています。 検索結果では、該当するID、名称、過去に入力した 日付が表示されていますが、今回の現象は 入力の有無にかかわらず発生しています。 例えば入力時に、日付を10/12と入れていますが これが全角・半角、もしくは桁数などの 制御が関係しているのか(10/1とか) わかりません。。。