我正在使用MS Access,并且想在表中存储要检查的项目,例如:
我将使用以下详细信息(在打开的记录集中)从该表收集详细信息:
Field_Review = rst1![Field_NM] & ""
Evaluation = rst1![Eval_TP] & ""
Goal = rst1![Field_Val] & ""
我将使用以下代码从打开的表单中提取值:
strResult = Forms![Main].Form(Field_Review).Value
我想使用类似这样的方式返回布尔结果:
blnResult = Goal & Evaluation & strResult
我设置了blnResult
:Dim blnResult as Boolean
。
我不断收到错误消息“运行时错误'13':类型不匹配。”
当我尝试调试时,我注意到我没有返回期望的布尔值;但是,字符串的字面值为“ APPROVED = APPROVED”。
任何将评估结果设为普通布尔值的提示都会很有帮助。
答案 0 :(得分:4)
Eval()
可能会为您带来想要的东西。这是即时窗口示例。
您的价值观...
Goal = "APPROVED"
Evaluation = "="
strResult = "APPROVED"
将它们串联时,请使用引号将字符串中的文本值定界。如果要使用双引号,请将2放在最后一个字符串中的任意位置。但是单引号对我来说更容易...
strExpression = "'" & Goal & "'" & Evaluation & "'" & strResult & "'"
? strExpression
'APPROVED'='APPROVED'
现在计算该表达式并将其存储在变量中。您实际上并不需要CBool()
...仅需要Eval(strExpression)
就足够了……但是我在这里包括了它,因为blnResult
将显示为True而不是-1。两者是相同的数字,但我想避免对显示格式感到困惑。
blnResult = CBool(Eval(strExpression))
? blnResult
True