【发布时间】:2011-02-15 15:34:34
【问题描述】:
好的,情况就是这样
让我们有 Table1(A,B,C)
A 是一个自动编号字段。
我正在通过 vba 喂表。
由于 A 是自动编号的,所以我像这样忽略它:
SQL = INSERT INTO TABLE1(B,C) VALUES ('something','something else')
DoCmd.RunSQL SQL
这工作正常,访问给了我第一个警告,我将创建一个新行。
这对我来说没问题。然而就在那之后我得到了这个:
Microsoft Access 无法在更新或追加查询中添加所有记录。
由于类型转换失败,它将 1 个字段设置为 Null。
blahblahblah 单击确定以运行查询
如果我点击确定,这不会阻止它工作,但我不希望我的用户看到
那个警告。
无论如何它为什么会弹出?将自动编号字段留空不是很正常吗?
还有其他我不知道的程序吗?我错过了什么?
我环顾了谷歌和这里,但找不到答案:/
(我不想将警告设置为 false,因为我希望添加字段的第一个警告和任何其他最终错误都可见。)
【问题讨论】:
-
我会使用 CurrentDB.Execute SQL,DBSEECHANGES + DBFAILONERROR
-
dbSeeChanges 仅在您使用 ODBC 服务器数据库作为后端时才需要,例如 SQL Server。如果后端是 Jet/ACE,它就毫无用处(尽管我认为它不会造成任何伤害,因此您可以将它用于向前兼容)。我也不确定是否需要 DML 语句,即不返回记录的 SQL 语句。
-
字段B和C的数据类型是什么?如果它们不是文本或备忘录,它就会失败。
标签: sql ms-access vba ms-access-2010