首页 文章

Access 2010 - 输入表单元素的引用作为文本字段的值

提问于
浏览
0

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

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

a)联系记录,一次一个

b)字母模板,一次一个

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

是否有可能和/或明智地尝试在表格中存储类似下面的内容,或者将其输入到表单上的字段中?

[txtFlavor] & " is dull but popular."

然后将其显示在表单的其他位置

Vanilla is dull but popular.

我确实感到愚蠢,并且我确信我错过了一些明显的东西 . 我做的每件事都只是字面上重复而不是作为参考 .

1 回答

  • 0

    您可以让用户使用“标记”作为数据库信息的占位符来创建模板,其方式与在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 名称匹配 .

相关问题