2011-03-29 70 views
0

我们如何有条件地在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 [email protected] and [email protected] and [email protected]))=False)); 

回答

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 [email protected] and [email protected] and [email protected]))=False)); 

这是个杂牌,以及难看的人决定到另一行添加到ATable,将尽快开始插入重复记录。因此,最好使用If/Then来决定是否运行查询。