5

全部,

这个错误让我发疯。我花了 2 个小时试图弄清楚和/或解决它,但没有运气。这是错误:

“您试图将 NULL 值分配给不是 Variant 数据类型的变量。”

这是我的 SQL:

SELECT tbl_budir_002.Location_Index, tbl_parent_001.NEWPARENTID 
INTO tbl_budir_003
FROM (tbl_budir_002 
    LEFT JOIN qry_parent_003 
        ON tbl_budir_002.Location_Index = qry_parent_003.Location_Index) 
    LEFT JOIN tbl_parent_001 
        ON qry_parent_003.PARENTNAME = tbl_parent_001.PARENTNAME;

我认为在这一点上出现了复杂情况—— tbl_parent_001 是通过 group by 从另一个更大的表创建的(以单个化 PARENTNAME 记录)。我必须手动进入表并将字段 NEWPARENTID 分配为类型自动编号,以便我可以为 PARENTNAME 记录提供主键。现在,当我运行查询时,出现上述错误。我怀疑这是导致我出现问题的自动编号,但我不知道通过使用查询创建主键的任何其他方法。

因此,我需要在两件事上提供帮助:(1) 在当前查询设置的情况下减轻错误;(2) 找出更好的方法来创建主键,而不是通过表的设计视图手动输入主键。

谢谢,诺亚

4

5 回答 5

4

这是发生了什么:http: //support.microsoft.com/kb/197587。除了 Access 2000,根据我的经验,知识库中的信息至少适用于 Access 2002。除了解决方法 1 和 2,如果您的解决方案可以忍受,我成功地将我的自动编号字段包装在 NZ() 中。

于 2011-01-07T18:47:25.907 回答
1

上周我收到了错误消息,并尝试了几件事来解决这个问题。就我而言,这与我试图将数据附加到表中但没有意识到我正在附加到主键(这是一个自动编号字段)有关(当然是偶然的)。

一旦我从附加查询中删除了这个字段,一切都会按预期工作。

于 2019-03-11T15:29:42.350 回答
0

好的,您必须考虑数据库中的空值。这并不难,但有时会很烦人。您不能像数字一样将 null 隐式转换为文本。使用 nz - Null 到零。如果替换为文本,则使用“”,如果如下所示的数字,则使用 0。例如nz(myText,"") or nz(myNumber,0)

SELECT nz(tbl_budir_002.Location_Index,0), 
       nz(tbl_parent_001.NEWPARENTID ,0)...

您也可以使用 IsNull() ,但它不像您必须使用条件语句将其设置为其他内容那样方便。我在标准上使用 isnull,在其他所有内容上使用 nz。

iif(isnull(tbl_budir_002.Location_Index),0,tbl_budir_002.Location_Index)

玩得开心。

于 2009-04-17T22:18:56.263 回答
0

看起来你的问题可能是LEFT JOIN. 由于您正在插入一个尚不存在的表,因此访问可能会尝试将 NEWPARENTID 列设置为主键。尝试运行查询JOIN以查看是否收到相同的错误。您可能还想尝试先手动创建表,然后再插入,这样 Access 就不必猜测您想要什么。

于 2009-04-17T21:51:07.860 回答
0

我已将“0”而不是“Null”分配给存储主数据表主键的组合框。这解决了我的问题。

于 2022-02-01T18:15:59.407 回答