2016-08-12 78 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是一对多的关系,vNum是前面陈述的table1中的许多关系。一方面,调用表“oTable”,它已经有一个从不同数据库导入的vNum列表。我最近在oT​​able中创建了一个名为“vTester”的vNum的新记录。在我生成上述SQL插入语句的table1的表单中,我可以从组合框中选择任何我想要的vNum。用户不能选择一个不存在的。在我的表单中,我选择了“vTester”,并得到了上述错误。但是,当我选择导入的vNum之一时,SQL命令起作用。有任何想法吗?

+0

请发布table1设计视图的屏幕截图。如果它具有自动增量标识字段(键),则可能会隐式尝试将'col1'字符串写入它。为避免这种情况,请在SQL中指定列名:INSERT INTO table_name(column1,column2,column3,...) VALUES(value1,value2,value3,...);' – Stack

+0

几乎不可能回答这个问题不知道表格设计和你试图插入的值。 –

+0

我更新了我的问题。 @StackExchanger我试过,但仍然有相同的问题 – Michael

回答

0

经过很长一段时间,避免进入一个新的记录,我修复和压缩数据库,并再次尝试,它的工作原理。有时Access对我来说就像这样挑剔,只需要一个新鲜的(ish)开始。自那以后再也没有发生过!