如何将Access窗体ExchangeRate文本框默认值设为上次输入值
实现Access窗体ExchangeRate文本框持久化默认值
要让ExchangeRate文本框记住上次输入的值,作为默认值(重启数据库后仍保留),可以通过存储配置值的方式实现,以下是两种实用方案:
方案一:使用配置表存储(直观易维护)
1. 创建配置表
新建一张名为tbl_Config的表,字段设置如下:
ConfigID:自动编号,主键ConfigName:文本型(长度50),用于标识配置项,比如DefaultExchangeRateConfigValue:双精度型,用于存储汇率值
2. 添加窗体VBA代码
打开frm_Amounts的VBA编辑器,添加以下事件代码:
窗体加载事件(读取默认值)
Private Sub Form_Load() Dim rs As Recordset Set rs = CurrentDb.OpenRecordset("SELECT ConfigValue FROM tbl_Config WHERE ConfigName='DefaultExchangeRate'") '如果存在已保存的汇率,设置为文本框默认值并显示 If Not rs.EOF Then Me.ExchangeRate.DefaultValue = rs!ConfigValue Me.ExchangeRate.Value = rs!ConfigValue End If rs.Close Set rs = Nothing End Sub
ExchangeRate文本框更新后事件(保存新值)
Private Sub ExchangeRate_AfterUpdate() Dim rs As Recordset Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_Config WHERE ConfigName='DefaultExchangeRate'") If rs.EOF Then '首次输入,新增配置记录 rs.AddNew rs!ConfigName = "DefaultExchangeRate" rs!ConfigValue = Me.ExchangeRate.Value rs.Update Else '更新已有配置记录 rs.Edit rs!ConfigValue = Me.ExchangeRate.Value rs.Update End If rs.Close Set rs = Nothing '更新文本框默认值,后续新增记录自动使用该值 Me.ExchangeRate.DefaultValue = Me.ExchangeRate.Value End Sub
方案二:使用注册表存储(无需额外建表)
利用Access内置的SaveSetting和GetSetting函数,将值存在系统注册表中:
添加窗体VBA代码
窗体加载事件
Private Sub Form_Load() Dim defaultRate As Double '读取注册表中的汇率值,默认值为0(首次打开时为空) defaultRate = GetSetting("MyAccessExchangeApp", "Settings", "ExchangeRate", 0) If defaultRate <> 0 Then Me.ExchangeRate.DefaultValue = defaultRate Me.ExchangeRate.Value = defaultRate End If End Sub
ExchangeRate文本框更新后事件
Private Sub ExchangeRate_AfterUpdate() '将当前汇率保存到注册表 SaveSetting "MyAccessExchangeApp", "Settings", "ExchangeRate", Me.ExchangeRate.Value '更新文本框默认值 Me.ExchangeRate.DefaultValue = Me.ExchangeRate.Value End Sub
注意事项
- 确保
Amount_US$的控件来源设置为=[Amount_EUR]*[ExchangeRate],保证计算逻辑正常运行 - 方案一中,首次打开窗体时
tbl_Config无对应记录,ExchangeRate文本框为空,输入后会自动创建配置记录 - 方案二中,注册表路径为
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MyAccessExchangeApp\Settings,可通过注册表编辑器查看
内容的提问来源于stack exchange,提问作者YousifKI
相关产品推荐
相关产品推荐

