我是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
替换为OptionGroup
和ListBox
,两者都在与SaveRecord
相同。我还尝试将宏After Update
添加到事件属性部分{{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。 使用相同的路由,您可以管理要保存的其他设置。
如果此解决方案适合您,请告诉我。
再见: - )