我有一个表,其中存储了一个字符串,该字符串表示要让Access或VBA计算的公式。一些字符串示例如下:
- 表.第一个名称&''&桌子姓氏
- table.LastName&','&桌子名字
- table.LastName&','&桌子名字&''&LEFT(表。中间,1)
基本上,我试图根据实体类型、缺失信息等来改变不同名称的查看方式。
是否有任何方法可以强制Access(在查询中)或VBA(作为自定义函数的一部分)返回字符串告诉它的内容,而不是文字值?从上面的例子中,我可以预期:
- table.FirstName表。姓氏
- table.LastName,表。名字
- table.LastName,表。名字,t
替换本身不起作用,因为某些格式包含LEFT(table.Name,1)或其他函数。我只是希望有一种简单的方法可以强制对字符串进行求值,而不必想出一个复杂的函数。
如果我没有很好地解释这一点,我很抱歉,我觉得我试图将数据库方面与字符串格式方面合并可能没有得到明确的理解。如果你有问题,请回答,我会尽力解释得更好。
提前谢谢。
Microsoft Access Eval()函数怎么样:
?Eval("3 + 1")
4
您可以根据表公式构建SQL字符串,如:
SQL = "Select " & tblFormulas.FormulaField.Value & " From " & Split(tblFormulas.FormulaField.Value, ".")(0) & ";"
不是防弹的,而是一个开始。。。
由于您有一个包含公式的特殊表,因此可以针对查询和/或VBA。
-
对于VBA,您可以存储
eval
函数的代码,以便以具有相同必需字段集(用于公式)的多个表单的形式运行:在特殊表的字段VBAformula
中应该存在这样的字符串me![LastName] & ', ' & me!FirstName & ' ' & LEFT(Me![Middle],1)
然后在某个函数中,你可以写:formula=dlookup("VBAformula","SpecialTable","id="&me![HowToViewID])
我![ViewAs]=eval(公式)
-
对于"查询",您可以存储
UPDATE
查询、SQLformula
中要使用的SQL公式,其中包含以下字符串:[LastName] & ", " & [FirstName] & " " & LEFT([Middle],1)
,然后您可以构建并运行SQL:formula=dlookup("SQLformula"、"SpecialTable"、"id="&me![HowToViewID])
currentdb.Execute"UPDATE[table with people]SET[ViewAs]="&公式&"WHERE peopleID="&我[peopleID]&";",dbFailOnError
这些示例显示了一些变体,因此没有错误处理或安全性。