在访问表单上保存选择
Save Selections on Access Form
我是 Microsoft Access 的新手,想将 ListBox
选择保存到 Form
。以下是更多详细信息:
我在我的 Form
上放置了一个 ListBox
,其中包含本地、地区、国家三个选项。这三个选择与 Table
相关联。当我单击三个选项时,我可以在三个选项之间进行选择。当我 Refresh All
我的选择保持不变。但是,当我保存并关闭数据库并重新打开时,我的 ListBox
恢复为本地,大概是因为它是我的 Table
中的第一个选项。我试图通过创建 Default Value
来解决这个问题。 Default Value
是最常用的本地、区域或国家类别。这个问题是当我 Refresh All
和 Default Value
我的 ListBox
自动恢复到默认 在 任何其他操作可以发生之前。我希望它以最简单的方式(再次因为我对 Access 很陌生)做的是 Form
保存我的选择。 (即,当我关闭并重新打开我的数据库时,Listbox
显示我上次选择的内容,而不是本地或我 table 中的第一个值)。
一旦我实现了这一点,我还想在一个单独的文本框中创建一个公式,上面写着 IIF(ListBox = "Local" then do this
当我尝试这个公式时,我也遇到了麻烦(我的公式无法识别列表框选择如本地、区域等)这可能是一个单独的问题,或者实际上可能相关,具体取决于原始问题的最终解决方案。
我尝试了很多方法,包括使用 Default Value
、将 ListBox
替换为 Textbox
和 OptionGroup
,两者都在与 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。
使用相同的路由,您可以管理要保存的其他设置。
让我知道此解决方案是否适合您。
再见:-)
我是 Microsoft Access 的新手,想将 ListBox
选择保存到 Form
。以下是更多详细信息:
我在我的 Form
上放置了一个 ListBox
,其中包含本地、地区、国家三个选项。这三个选择与 Table
相关联。当我单击三个选项时,我可以在三个选项之间进行选择。当我 Refresh All
我的选择保持不变。但是,当我保存并关闭数据库并重新打开时,我的 ListBox
恢复为本地,大概是因为它是我的 Table
中的第一个选项。我试图通过创建 Default Value
来解决这个问题。 Default Value
是最常用的本地、区域或国家类别。这个问题是当我 Refresh All
和 Default Value
我的 ListBox
自动恢复到默认 在 任何其他操作可以发生之前。我希望它以最简单的方式(再次因为我对 Access 很陌生)做的是 Form
保存我的选择。 (即,当我关闭并重新打开我的数据库时,Listbox
显示我上次选择的内容,而不是本地或我 table 中的第一个值)。
一旦我实现了这一点,我还想在一个单独的文本框中创建一个公式,上面写着 IIF(ListBox = "Local" then do this
当我尝试这个公式时,我也遇到了麻烦(我的公式无法识别列表框选择如本地、区域等)这可能是一个单独的问题,或者实际上可能相关,具体取决于原始问题的最终解决方案。
我尝试了很多方法,包括使用 Default Value
、将 ListBox
替换为 Textbox
和 OptionGroup
,两者都在与 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。 使用相同的路由,您可以管理要保存的其他设置。
让我知道此解决方案是否适合您。
再见:-)