ms-access中的条件插入

时间:2011-03-29 09:59:54

标签: ms-access

我们如何有条件地在MS-ACCESS表中插入记录。 我正在尝试以下但它给了我错误。 注意:这是一个存储的查询。

PARAMETERS [@Value1] Long, [@Value2] Text ( 255 ), [@Value3] DateTime, [@Value4] DateTime;
INSERT INTO tblTest ( Field1, Field2, Field3, Field4)
SELECT [@Value1] AS expr1, [@Value2] AS expr2, [@Value3] AS expr3, [ @Value4] AS expr4
WHERE (((Exists (Select * from tblTest where Field2=@Value2 and Field3=@Value3 and Field4=@Value4))=False));

1 个答案:

答案 0 :(得分:0)

在Access中,如果您有WHERE子句,则必须具有FROM子句,这意味着即使您不使用表中的任何值,也必须在查询中包含表。因此,我知道实现这项工作的唯一方法是向数据库中添加一个只有一行的虚拟表。它具有哪些列/数据类型并不重要。在我的例子中,我称之为ATable:

PARAMETERS [@Value1] Long, [@Value2] Text ( 255 ), [@Value3] DateTime, [@Value4] DateTime;
INSERT INTO tblTest ( Field1, Field2, Field3, Field4)
SELECT [@Value1] AS expr1, [@Value2] AS expr2, [@Value3] AS expr3, [ @Value4] AS expr4
FROM ATable
WHERE (((Exists (Select * from tblTest where Field2=@Value2 and Field3=@Value3 and Field4=@Value4))=False));

这是一个kludge,一个丑陋的人,一旦有人决定向ATable添加另一行,就会开始插入重复的记录。因此,最好使用If / Then来决定是否运行查询。