【发布时间】:2016-08-12 14:14:49
【问题描述】:
我已经运行此查询大约 3 周了,但它突然停止工作。这是我得到的错误:
我的桌子是空的。下面是 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$
由于不存在任何记录,因此没有任何内容应该违反主键值。是否有其他违反主键的方法或者这是访问问题?
这是桌子设计:
忽略错误的字段名称,我不得不暂时更改它们以便我可以在这里发布。
我什至尝试在 VBA 之外将其作为 Access 查询运行:
SELECT * FROM table1
它什么也没返回。
更新:
这很有趣。所以 table1 是一对多的关系,如前所述,vNum 是 table1 中的 many。一方面,调用表“oTable”,它已经有一个我从不同数据库导入的 vNum 列表。我最近在 oTable 中使用名为“vTester”的 vNum 创建了一条新记录。在生成上述 SQL 插入语句的 table1 表单中,我可以从组合框中选择我想要的任何 vNum。用户不能选择一个不存在的。在我的表格中,我选择了“vTester”并得到了上述错误。但是,当我选择其中一个导入的 vNum 时,SQL 命令起作用了。有什么想法吗?
【问题讨论】:
-
请贴一张table1设计视图的截图。如果它有一个自动递增的标识字段(键),您可能会隐式尝试将
col1字符串写入其中。为避免这种情况,请在 SQL 中指定列名:INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...); -
如果不知道表格设计和您要插入的值,几乎不可能回答这个问题。
-
我更新了我的问题。 @StackExchanger 我试过了,但仍然有同样的问题
-
消息没有说“主键违规”,它说“键违规”。我的猜测是您的一个字段与另一个表中的字段有关系。该表必须已经包含您尝试插入相关字段的值。
-
不,有问题。如果这是一个订单表,其中引用了客户表中的客户编号,则您无法添加其中不存在客户编号的订单。