我需要创建一长串复杂的字符串,其中包含不同位置的不同字段的数据,以创建解释性报告。 在 Access 2010 中,我想到的唯一方法是将文本部分与用于组成要显示的字符串的字段名称一起保存在表中(请参见图中的 line1 表达式)。简而言之:
//field A contain a string with a field name:
A = "[Quantity]"
//query expression:
=EVAL(A)
//return error instead the number contained in field [Quantity], present in the query dataset
我想对字段(A)进行EVAL,以获得字段A中包含名称的字段(B)的值。但似乎不起作用。 有什么办法存在吗?
示例(非常简化): Sample query that EVAL a field containing other field names to obtain the value of the fields
有什么想法吗? PS:抱歉我的英语,不是我的母语。
最佳答案
我在另一个论坛中发现了一个有趣的解决方法。 其他人在使用 EVAL 时遇到了同样的问题,但发现可以使用 REPLACE 函数用字段内容替换字符串。
REPLACE("The value of field Quantity is {Quantity}";"{Quantity}";[Quantity])
(使用 {} 只是为了清楚起见,如果知道要替换的单词在字符串中不进行比较,则不需要)。在查询中使用此代码,并嵌套任意多个 REPLACE 的不同字段:
REPLACE(REPLACE("<Salutation> <Name>";"<Salutation>";[Salutation]);"<Name>";[Name])
可以将字段名称嵌入字符串中,并用查询中该字段的当前值替换它们。当然,后一个示例可以通过连接 (&) 来更简单地完成,但如果字符串包含在字段中而不是硬编码中,则可以根据需要链接到记录。
REPLACE(REPLACE([DescriptiveString];"[Salutation]";[Salutation]);"[Name]";[Name])
此外,可以创建基于上下文的复杂字符串:
REPLACE(REPLACE(REPLACE("{Salutation} {Name} {MaidenName}";"{Salutation}";[Salutation]);"{Name}";[Name]);"{MaidenName}";IIF(Isnull([MaidenName]);"";[MaidenName]))
困难的部分是在 REPLACE 调用中枚举想要插入到字符串中的所有字段占位符(例如 {Quantity}、{Salutation}、{Name}、{MaidenName}),而使用 EVAL 可以避免这种情况无聊的部分,如果它能工作就好了。
不像我想要的那么整洁,但可以。
关于string - 如何评估 Access 查询中另一个字段中包含的字段名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36437600/