2016-08-12 5 views
2

私はこのクエリーを約3週間実行していて、突然それが動作を停止しました。これは私が取得エラーです:ms-access DoCmd.RunSQLステートメントはキー違反のためレコードを追加できませんが、レコードはテーブルにありません

enter image description here

私のテーブルが完全に空です。次はINSERT INTOステートメントのコードです。

SQL$ = "" 
SQL$ = SQL$ & " INSERT INTO table1" 
SQL$ = SQL$ & " VALUES ('test', 1, '1-1', #01/01/2001#, 1000, 'testing', 'example', 1, 2, 30); 

DoCmd.RunSQL SQL$ 

レコードが存在しないため、主キーの値に違反するものはありません。主キーに違反する別の方法があるのですか、それともアクセスの問題ですか?

これは、表のデザインです:

enter image description here

は悪いフィールド名を無視し、私は私がここに投稿できるように、一時的にそれらを変更する必要がありました。

私もVBAの外Accessクエリとしてこれを実行しようとした:

SELECT * FROM table1

、それは何も返されません。

UPDATE:

これは面白いです。したがって、table1は1対多の関係にあり、vNumは前述のようにtable1の多くが関係しています。一方の側で、テーブル "oTable"を呼び出すと、別のデータベースからインポートしたvNumのリストがすでにあります。私は最近、 "vTester"と呼ばれるvNumでoTableに新しいレコードを作成しました。上記のSQL挿入ステートメントを生成しているtable1のフォームでは、コンボボックスから任意のvNumを選択できます。ユーザーは、存在しないものを選択することはできません。私の形式では、 "vTester"を選んで上記のエラーが出ました。しかし、インポートされたvNumのうちの1つを選択すると、SQLコマンドが機能しました。何か案は?

+0

table1デザインビューのスクリーンショットを投稿してください。もしそれが自動インクリメントのアイデンティティフィールド(キー)を持っているなら、暗黙のうちに 'col1'文字列をそれに書き込もうとしているかもしれません。これを避けるには、SQLで列名を指定します。 'INSERT INTO table_name(column1、column2、column3、...) VALUES(value1、value2、value3、...); ' – Stack

+0

この質問にはほとんど答えがありません表のデザインと挿入しようとしている値の両方を知らなくても使用できます。 –

+0

私の質問が更新されました。 @StackExchanger私はそれを試みたが、まだ同じ問題を抱えていた – Michael

答えて

0

新しいレコードの入力を避けてから、データベースを修復して圧縮してもう一度試してみてください。時にはAccessは私のような気が狂っていて、ちょうど新しい(ちょっとした)スタートが必要です。それ以来、もう一度起こっていない!

関連する問題