Microsoft Access窗体关闭重开后文本框值无法保存求助
在Microsoft Access中保留窗体关闭重开后文本框的值
方法1:用数据表持久化存储
- 新建一张单记录的配置表(比如叫
用户配置表),添加一个和文本框数据类型匹配的字段(例如文本框保存值),手动添加一条记录(ID设为1方便后续定位)。 - 在窗体的
关闭事件中添加VBA代码,把文本框当前值写入表:
Private Sub Form_Close() ' 文本类型用单引号包裹,数字类型直接去掉单引号,日期类型用#包裹 CurrentDb.Execute "UPDATE 用户配置表 SET 文本框保存值 = '" & Me.你的文本框名称 & "' WHERE ID=1" End Sub
- 在窗体的
加载事件中读取表中存储的值,赋值给文本框:
Private Sub Form_Load() Dim rs As Recordset Set rs = CurrentDb.OpenRecordset("SELECT 文本框保存值 FROM 用户配置表 WHERE ID=1") If Not rs.EOF Then Me.你的文本框名称 = rs!文本框保存值 End If rs.Close Set rs = Nothing End Sub
方法2:通过全局变量结合默认值属性临时保留
这个方法仅在Access进程未关闭时有效,重启Access后值会丢失:
- 新建一个标准模块,定义全局变量:
Public g_SavedTextBoxVal As Variant
- 窗体关闭时把文本框值存入全局变量:
Private Sub Form_Close() g_SavedTextBoxVal = Me.你的文本框名称.Value End Sub
- 窗体加载时,将全局变量赋值给文本框的默认值属性:
Private Sub Form_Load() If Not IsEmpty(g_SavedTextBoxVal) Then ' 文本类型需要用双引号包裹,数字类型直接赋值 Me.你的文本框名称.DefaultValue = """" & g_SavedTextBoxVal & """" End If End Sub
方法3:用注册表跨会话保留值
如果需要关闭Access后再次打开仍能保留值,可使用注册表存储:
- 窗体关闭时写入注册表:
Private Sub Form_Close() ' 自定义应用名称、配置项名称,替换成自己的内容 SaveSetting "我的Access工具", "窗体配置", "文本框留存值", Me.你的文本框名称.Value End Sub
- 窗体加载时读取注册表值:
Private Sub Form_Load() Dim savedVal As String savedVal = GetSetting("我的Access工具", "窗体配置", "文本框留存值", "") If savedVal <> "" Then ' 非文本类型需转换,比如数字用CLng(savedVal),日期用CDate(savedVal) Me.你的文本框名称.Value = savedVal End If End Sub
内容的提问来源于stack exchange,提问作者weasam alaa
相关产品推荐
相关产品推荐

