访问查询错误 - 空和变量数据类型 - 如何修复此错误?

问题描述 投票:4回答:4

所有,

这个错误让我疯了。我花了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指定为类型autonumber,以便我可以给PARENTNAME记录主键。现在,当我运行查询时,我得到上述错误。我怀疑这是导致我出现问题的自动编号,但我不知道通过使用查询创建主键的任何其他方法。

因此,我需要两方面的帮助:(1)根据我当前的查询设置缓解错误;(2)找出创建主键的更好方法,而不是通过表的设计视图手动输入。

谢谢,诺亚

ms-access null types variant
4个回答
4
投票

这是正在发生的事情:http://support.microsoft.com/kb/197587。除了Access 2000之外,根据我的经验,KB中的信息至少适用于Access 2002。除了解决方法1和2之外,如果您的解决方案能够忍受它,我成功地将我的自动编号字段包装在NZ()中。


0
投票

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


0
投票

好的,您必须考虑数据库中的空值。这并不难,但有时可能很烦人。您不能将null转换为文本,就像您可以将数字转换为文本一样。使用nz - Null为Zero。如果替换是文本,使用“”,如果数字如下,使用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)

玩得开心。


0
投票

我上周收到了错误消息并尝试了几个方法来解决这个问题。在我的情况下,这与我试图将数据附加到表但没有意识到我附加到主键(这是一个自动编号字段(当然不小心))有关。

从我的追加查询中删除此字段后,一切都按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.