Office中国论坛/Access中国论坛

标题: 如何使窗体的控件值保存为缺省值 [打印本页]

作者: 简    时间: 2010-3-8 13:06
标题: 如何使窗体的控件值保存为缺省值
我希望组合框里选择sub11并输入数据,然后又选择sub12继续输入完毕后,这时再选择sub11时,我希望先前在Sub11里输入的数据依然存在。

经别人提示,采用退出窗体时将所有控件值保存为默认值,这时再打开该窗体时,该控件的值就出现了。

[attach]41629[/attach]
作者: aslxt    时间: 2010-3-8 13:43
例如:
Private Sub 地点_AfterUpdate()
    地点.DefaultValue = """" & 地点 & """"
End Sub
其中"地点"为一个文本框或组合框的名称
作者: 简    时间: 2010-3-8 19:37
回楼上的,如果控件只有三五个,都还好办,如果是三五十个控件,我挨个挨个的写,好麻烦呢。
作者: todaynew    时间: 2010-3-8 19:40
本帖最后由 todaynew 于 2010-3-8 19:42 编辑
我希望组合框里选择sub11并输入数据,然后又选择sub12继续输入完毕后,这时再选择sub11时,我希望先前在Sub11里输入的数据依然存在。

经别人提示,采用退出窗体时将所有控件值保存为默认值,这时再打开该窗体时, ...
简 发表于 2010-3-8 13:06

[attach]41630[/attach]

[attach]41631[/attach]

用了一个比较笨的办法,不知道是否还有更简单的方法。

Public Function ctlval(frm As Form)
'功能:保存窗体控件值。
'说明:1、使用时,在窗体中增加一个关闭按钮,

'          在按钮事件中调用此函数:Call ctlval(me.form)。
'          特别注意不能在窗体的关闭或者卸载事件中调用该函数,否则会报错。
'     2、如窗体存在子窗体,则需在此基础上修改代码,

'         以保持子窗体控件的默认值。
Dim frmname As String
Dim ctls As Controls
Dim B As Boolean
Dim i As Long, j As Long
Dim A()
'1、获得控件值,并存于数组中。
frmname = frm.Name
frm.Repaint
Set ctls = frm.Controls
j = 0
For i = 0 To ctls.Count - 1
    B = ctls(i).ControlType = acComboBox
    B = B Or ctls(i).ControlType = acComboBox
    B = B Or ctls(i).ControlType = acListBox
    B = B Or ctls(i).ControlType = acTextBox
    If B = True Then
        j = j + 1
        ReDim Preserve A(2, j)
        A(0, j - 1) = ctls(i).Name
        A(1, j - 1) = Nz(ctls(i).Value, "")
    End If
Next
'2、在窗体设计视图中设置控件默认值
DoCmd.OpenForm frmname, acDesign
Forms(frmname).Visible = False
Set ctls = Forms(frmname).Controls
For i = 0 To UBound(A, 2) - 1
    ctls(A(0, i)).DefaultValue = "'" & A(1, i) & "'"
Next
'3、关闭窗体并保留默认值修改结果
DoCmd.Close acForm, frmname, acSaveYes
End Function


作者: 简    时间: 2010-3-10 22:17
问题没有完全解决,不能沉哈~~~
作者: t小宝    时间: 2010-3-11 13:46
如果窗体是绑定的,可以直接复制上一条记录
如果是非绑定的,多建个子窗体,只要不改变子窗体源对象,在关闭窗体前,数据都还在那里
作者: todaynew    时间: 2010-3-11 13:49
问题没有完全解决,不能沉哈~~~
简 发表于 2010-3-10 22:17

请参见《保留控件值》一文。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3