在访问表单上保存选择

Save Selections on Access Form

我是 Microsoft Access 的新手,想将 ListBox 选择保存到 Form。以下是更多详细信息:

我在我的 Form 上放置了一个 ListBox,其中包含本地、地区、国家三个选项。这三个选择与 Table 相关联。当我单击三个选项时,我可以在三个选项之间进行选择。当我 Refresh All 我的选择保持不变。但是,当我保存并关闭数据库并重新打开时,我的 ListBox 恢复为本地,大概是因为它是我的 Table 中的第一个选项。我试图通过创建 Default Value 来解决这个问题。 Default Value 是最常用的本地、区域或国家类别。这个问题是当我 Refresh AllDefault Value 我的 ListBox 自动恢复到默认 任何其他操作可以发生之前。我希望它以最简单的方式(再次因为我对 Access 很陌生)做的是 Form 保存我的选择。 (即,当我关闭并重新打开我的数据库时,Listbox 显示我上次选择的内容,而不是本地或我 table 中的第一个值)。

一旦我实现了这一点,我还想在一个单独的文本框中创建一个公式,上面写着 IIF(ListBox = "Local" then do this 当我尝试这个公式时,我也遇到了麻烦(我的公式无法识别列表框选择如本地、区域等)这可能是一个单独的问题,或者实际上可能相关,具体取决于原始问题的最终解决方案。

我尝试了很多方法,包括使用 Default Value、将 ListBox 替换为 TextboxOptionGroup,两者都在与 ListBox 相同。我还尝试将宏 SaveRecord 添加到事件 属性 部分 After Update.

谢谢。

最简单和更常见的解决方案是拥有一个外部 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 设置为列表框的值(当您单击所需的设置时)。

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

让我知道此解决方案是否适合您。

再见:-)