You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access表单加载时如何将绑定文本框值复制到未绑定文本框?

解决Access表单加载时复制计算控件值的问题

问题背景

  • 绑定计算控件txtField1的控件源为:
    =IIf(IsNull([txtID]),"",DLookUp("[Reason_1]","[Escalations]","[ID]=" & [txtID] & ""))
    
    可正常显示内容,但含撇号时无法通过插入查询保存到表。
  • 未绑定控件txtField2手动输入含撇号内容可正常提交,需要在表单加载时将txtField1的值复制到txtField2。
  • 尝试在表单Load事件中执行txtField2.Value = txtField1.Value,txtField2显示为空;但在txtField2_Click事件中执行相同代码可正常复制。

解决方案

原因分析

表单Load事件触发时,计算控件txtField1的数据源还未完成计算和渲染,此时读取其Value属性会得到空值。而点击事件触发时,控件已经完成加载,所以能正常读取值。

可行方法

  1. 使用Form_Current事件
    这个事件在表单加载完成、每次切换记录时都会触发,能确保控件值已加载:

    Private Sub Form_Current()
        ' 先强制刷新txtField1确保值已计算
        Me.txtField1.Requery
        Me.txtField2.Value = Me.txtField1.Value
    End Sub
    
  2. 使用Form_Activate事件
    表单激活时触发,适合单表单场景:

    Private Sub Form_Activate()
        Me.txtField1.Requery
        Me.txtField2.Value = Me.txtField1.Value
    End Sub
    
  3. 延迟赋值(用Timer)
    如果上述事件仍有问题,可通过Timer控件延迟执行赋值:

    • 给表单添加一个Timer控件,设置Interval属性为100(100毫秒)
    • 在Timer事件中执行赋值并关闭Timer:
      Private Sub Timer_Timer()
          Me.txtField2.Value = Me.txtField1.Value
          Me.Timer.Enabled = False ' 只执行一次
      End Sub
      

额外提示

如果txtID的值是动态变化的(比如用户修改后),可以在txtID_AfterUpdate事件中也添加赋值代码,确保txtField2同步更新:

Private Sub txtID_AfterUpdate()
    Me.txtField1.Requery
    Me.txtField2.Value = Me.txtField1.Value
End Sub

内容的提问来源于stack exchange,提问作者Shiela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 22:02:08