在访问表单上保存选择

时间:2015-02-24 14:15:00

标签: ms-access ms-access-2010

我是Microsoft Access的新手,希望将ListBox选项保存到Form。以下是更多细节:

我在ListBox上放置了Form,其中有三个选项包括Local,Regional,National。这三个选项与Table相关联。当我点击三个选项时,我可以在三个选项之间进行选择。当我Refresh All我的选择保持不变时。但是,当我保存并关闭数据库并重新打开时,我的ListBox会恢复为本地状态,大概是因为它是我Table中的第一个选项。我试图通过创建Default Value来解决此问题。 Default Value将是最常用的本地,区域或国家类别。这个问题是当Refresh All Default Value ListBox我的Form自动恢复为默认值之后可以发生任何其他操作。我想以最简单的方式做到这一点(再次因为我是Access的新手)是Listbox保存我的选择。 (即当我关闭并重新打开我的数据库时,IIF(ListBox = "Local" then do this显示我上次选择的内容,而不是本地或我表格中的第一个值。

一旦我实现了这一点,我还想在一个单独的文本框中创建一个公式Default Value当我尝试这个公式时,我也遇到了麻烦(我的公式无法识别ListBox选择)作为本地,区域等)这可能是一个单独的问题,或者实际上可能是相关的,取决于对原始问题的最终解决方案。

我尝试了很多方面,包括使用ListBox,将Textbox替换为OptionGroupListBox,两者都在与SaveRecord相同。我还尝试将宏After Update添加到事件属性部分{{1}}。

谢谢。

1 个答案:

答案 0 :(得分:1)

最简单,最常见的解决方案是拥有一个外部ini文件,您可以在其中保存选项。在加载事件期间,您可以加载ini文件。

这取自我开发的数据库。您可以根据自己的需要调整它们

'---------------------------------------------------------------------------
' Load configuration file if existing
' Return False if not loaded
' Each valid line is in the form <Keyword>=<Value>
'---------------------------------------------------------------------------
Public Function LoadConfig(strCfgFilePath As String) As Boolean
    Dim fso As FileSystemObject
    Dim ts As TextStream
    Dim vnt As Variant
    Dim strReadLine As String
    Dim intNumParams As Integer

    LoadConfig = False                      ' Set default return value to False (w/ errors)

    '-------------------------------------------------
    ' Exit if config file not found
    '-------------------------------------------------
    Set fso = New FileSystemObject
    If Not fso.FileExists(strCfgFilePath) Then
        Set fso = Nothing
        Exit Function
    End If

    Set ts = fso.OpenTextFile(strCfgFilePath)           ' Open config file

    intNumParams =1                     ' Fixed number of parameters that must be read

    '-------------------------------------------------
    ' LOOP - Read all lines of the config file
    '
    Do While Not ts.AtEndOfStream

        strReadLine = ts.ReadLine               ' Read a line
        vnt = Split(strReadLine, "=")               ' Extract the words from the line read

        '-------------------------------------------------
        ' IF - 2 words must be found
        '
        If Not IsEmpty(vnt) Then
            If UBound(vnt) = 1 Then

                Select Case CStr(vnt(0))

                    Case "RegionalSetting"          ' Keyword of the parameter to be read
                        g_strRegionalSettings = vnt(1)      ' Assign parameters to global variables
                        intNumParams = intNumParams - 1

            'Add parameters here ....

                End Select

            End If
        End If
        '
        ' END IF - 2 words must be found
        '-------------------------------------------------

    Loop
    '
    ' LOOP END - Read all lines of the config file
    '-------------------------------------------------

    If intNumParams = 0 Then
        LoadConfig = True                   ' Set result = TRUE if all params has been read
    End If

    ts.Close                            ' Close config file
    Set ts = Nothing                        ' Release memory
    Set fso = Nothing

End Function

'---------------------------------------------------------------------------
' Write configuration file
' Return False in case of errors
' Lines are in the form <Keyword>=<Value>
'---------------------------------------------------------------------------
Public Function WriteConfig(strCfgFilePath As String) As Boolean
On Error GoTo Err_WriteConfig

    Dim fso As FileSystemObject
    Dim ts As TextStream

    Set fso = New FileSystemObject
    Set ts = fso.CreateTextFile(strCfgFilePath, True)           ' Create text file (Overwrite if existing)
    ts.WriteLine "RegionalSetting" + "=" + g_strRegionalSettings    ' Write lines
    WriteConfig = True                          ' Set result = TRUE

Exit_WriteConfig:

    ts.Close                                ' Close file and release memory
    Set ts = Nothing
    Set fso = Nothing
    Exit Function

Err_WriteConfig:

    WriteConfig = False                          ' Set result to FALSE in case of any errors

End Function

您可以在Select事件期间(单击所需设置时)将全局变量g_strRegionalSettings设置为ListBox的值。

关闭数据库时可以调用WriteConfig。 使用相同的路由,您可以管理要保存的其他设置。

如果此解决方案适合您,请告诉我。

再见: - )