【问题标题】:Access 2010 - enter references to form elements as the value of a text fieldAccess 2010 - 输入对表单元素的引用作为文本字段的值
【发布时间】:2017-06-06 01:49:01
【问题描述】:

有没有办法从表单上的字段中获取值并将其用作对同一表单中不同字段的引用,而不仅仅是字面意思?我希望能够在一个字段中手动输入类似 [txtFlavor] 的内容,并让它显示实际风味、另一个字段中名为“txtFlavor”的字段的值,而不仅仅是字符串“[txtFlavor]”。我基本上是在尝试在表格中存储一些 vba 引用(术语?),这样我就可以调出一串文本,其中包含对表单上值的引用。

我被要求创建一个系统,该系统将在 Access 2010 中存储信件模板,并允许用户选择包含个人信息的记录并将该信息插入到模板信件中,最好立即以纯文本形式将其显示在表单上。我已经提议使用报告来执行此操作,但最终用户无法接受。他们真的只是想要一种结合的形式

a) 联系人记录,一次一个

b) 信函模板,一次一个

我一直在尝试将模板信息及其表单引用存储在表格中,但我还没有能够使引用从表单上的另一个文本字段中提取数据。

尝试将以下内容存储在表格中或将其输入到表单的字段中是否可能和/或明智?

[txtFlavor] & " is dull but popular."

然后让它在表单的其他地方显示为

Vanilla is dull but popular.

我确实觉得自己很愚蠢,并且肯定我错过了一些明显的东西。我所做的一切都只是按字面意思重复,而不是作为参考。

【问题讨论】:

    标签: forms reference ms-access-2010


    【解决方案1】:

    您可以让您的用户使用“标签”作为数据库信息的占位符来创建他们的模板,这与在 Word 中设计合并文档的方式类似。因此,在上面的示例中,模板文档如下所示:

    {Flavor} is dull but popular.
    

    当需要创建合并结果时,您需要使用Replace 函数将这些标签更改为实际数据值。因此,如果您的表单上有一个只读文本框,则控制源可能是:

    =Replace([txtTemplate], "{Flavor}", [Flavor])
    

    我假设你会有很多潜在的标签,所以使用这种方法你需要嵌套Replace 函数。我已将嵌套拆分为多行以使其更具可读性:

    =Replace(
        Replace(
            Replace([txtTemplate], "{EmpName}", [EmpName]), 
            "{EmpAddress}", [EmpAddress]),
        "{EmpPhone}", [EmpPhone])
    

    如果您有更多的数据库字段/标签,这将开始变得非常笨拙,因此我建议使用一些 VBA 来让生活更轻松,也许类似于:

    Dim rsSource As Recordset
    Dim strMerge As String
    Dim intField As Integer
    
    'Assuming your form has a field called EmpNo (numeric data) that you can use to pull data...
    Set rsSource = CurrentDb.OpenRecordset ("Select EmpName, EmpAddress, EmpPhone From Employees Where EmpNo = " & Me.EmpNo)
    strMerge = txtTemplate
    For intField = 0 to rsSource.Fields.Count - 1
        strMerge = Replace(strMerge, "{" & rsSource(intField).Name & "}", rsSource(intField))
    Next intField
    
    txtMerge = strMerge
    
    rsSource.Close
    Set rsSource = Nothing
    

    您可以将此代码放在 txtTemplate 文本框的 AfterUpdate 事件中,它会更新 txtMerge 文本框的内容。您要么需要您的 tag 名称来匹配您的数据库列,否则您可以为 Select 语句中的列设置别名,以便它们匹配 tag 名称。

    【讨论】:

    • Skippy 的回答解决了这个问题。现在我真正想做的是重新构建问题,以便更容易理解,并希望能引起有类似问题的人的注意。我将非常感谢任何能给我一些反馈的人。现在我很清楚,我真正想要的是一种输入表单或存储在表格中的方法,这些信息将用作对表单上字段的引用。 Skippy 的解决方案非常适合我正在尝试做的事情,但似乎这个问题很难描述,因为它是如此自我参照。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 2014-05-07
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    相关资源
    最近更新 更多