我有一个MS Access数据库,它使用外部文本文件进行输入。
我不相信这个文本文件,我想在导入数据之前验证内容,以免污染我的数据库。
数据是通过宏自动从文本文件中导入的。我试图将插入的查询包装在宏中的“If”程序流程块中。我无法使If
语句中的条件生效。
外部文本文件源称为表UserStatistics
我创建了一个包含以下代码的查询(UserStatistics-CheckTxtFileIsCorrect
):
SELECT *
FROM UserStatistics
WHERE (((UserStatistics.[Column1])="KNOWNGOODVALUE"));
宏中的If
条件目前设置为:
count (*) from [UserStatistics-CheckTxtFileIsCorrect] >1
但是错误了。我尝试的所有内容都失败了,错误“无法解析......”或“无法找到您输入的名称......”
非常感谢任何帮助!!
Count([UserStatistics-CheckTxtFileIsCorrect])>1
-- "Access cannot find the name 'UserStatistics'
-- you entered in the expression"
Count[UserStatistics-CheckTxtFileIsCorrect] > 1 -- cannot parse
count (*) [UserStatistics] >1 -- "cannot parse..."
Count *
where [UserStatistics-CheckTxtFileIsCorrect]![User ID] = 'ABC' -- cannot parse
Count(select * from [UserStatistics]
where [UserStatistics]![Column1] = 'ABC') > 1 -- cannot parse
HansUp建议DCount
。如果我省略了表达式的标准部分,If
条件现在正在评估。但是标准部分肯定需要实现我的目标。
DCount("*","UserStatistics","[UserStatistics]![Column1] = 'ABC' ")>1
DCount("*","UserStatistics","Column1 = 'ABC' ")>1
DCount("*","UserStatistics",Column1 = 'ABC' )>1
以上所有都给出了错误2001
事实证明我的外部文本文件列名包含空格。因此,DCount语句的标准中的列需要包含在方括号中,如下所示:
如果DCount("*","UserStatistics","[User ID]='KNOWNGOODVALUE'")>1
那么
Do my Actions here....
否则
MsgBox Error here...
结束如果
非常感谢HansUp指点我DCount
。
答案 0 :(得分:0)
在条件中使用DCount()
表达式。
DCount("*", "UserStatistics", "Column1='KNOWNGOODVALUE'")>1
这应该返回与查询相同的计数,但实际上并不需要查询,因为您可以将源表名称和WHERE
条件包含为DCount
选项。
您可以在立即窗口中测试DCount
表达式,以计算出第三个选项。 ( Ctrl + g 将打开立即窗口)请尝试以下行:
? DCount("*", "UserStatistics", "Column1='KNOWNGOODVALUE'")
注意引号......字符串中有一组单引号,用双引号括起来。
由于第三个选项(WHERE
标准)是障碍,因此请使用DCount
的查询并省略第三个选项。
DCount("*", "[UserStatistics-CheckTxtFileIsCorrect]")