我有一个使用外部文本文件进行输入的 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
重大更新 2
HansUp 建议DCount
。如果我省略表达式的标准部分,则If
条件现在正在评估。但绝对需要标准部分来实现我的目标。
DCount("*","UserStatistics","[UserStatistics]![Column1] = 'ABC' ")>1
DCount("*","UserStatistics","Column1 = 'ABC' ")>1
DCount("*","UserStatistics",Column1 = 'ABC' )>1
以上所有都给出错误2001
解决方案!
事实证明,我的外部文本文件列名包含空格。因此,DCount 语句的标准中的列需要用方括号括起来,如下所示:
If DCount("*","UserStatistics","[User ID]='KNOWNGOODVALUE'")>1
Then
Do my Actions here....
Else
MsgBox Error here...
End If
非常感谢 HansUp 将我指向DCount
.