我正在进行访问,我需要将字符串从一个表单发送到另一个表单,因此我想使用字符串(),但应用程序并不需要它。
有什么建议吗?
更新
我有一个带有2个文本框的表单,每个文本框将采用相同语法的数据,如textbox1:" JOHN" textbox2:" DAVID" 我有并为每个文本框添加按钮,这些文本框存储不同数组中的每个值。 添加按钮检查每个文本框的值是否存在于2个不同的表中,table1用于textbox1,table2用于textbox2。 如果它存在,我需要保留它们直到用户按下加载第二个表单的其他按钮。 用户可以在每个文本框中设置无限数量的值,方法是在设置新值时按add。
当我加载第二个表单时,我需要保留每个表中存在的值,但是要分开加载2个子表单,根据每个值加载一些数据。
一切正常,除非我不知道如何将2个数组从表单1传递到表单2,数组1的值为textbox1,数组2的值为textbox2
答案 0 :(得分:0)
如果需要在表单加载时传递它,可以将值连接到单个字符串并将其传递给.OpenArgs
。
在另一个表单的load事件中,您可以拆分字符串并创建一个数组。
DoCmd.OpenForm "FormName", acNormal, , , acFormPropertySettings, acWindowNormal, "String1;String2;String3;String4"
'...
Private Sub Form_Load()
Dim arr As Variant
With Me
If Not IsNull(.OpenArgs) Then
arr = Split(.OpenArgs, ";")
End If
End With
End Sub
您可以像这样构建.OpenArgs
字符串:
dim oneString as String
With Me
oneString = .YourtextBoxName1.Value & ";" & .YourtextBoxName2.Value 'etc...
End With
DoCmd.OpenForm "FormName", acNormal, , , acFormPropertySettings, acWindowNormal, oneString
将其放入标准模块:
Private mArrValues() As Variant
'ArrayValues
Public Property Get ArrayValues() As Variant
ArrayValues = mArrValues()
End Property
'Add value to array
Public Sub AddToArrayValues(ByVal index As Integer, value As String)
ReDim Preserve mArrValues(0 To index)
mArrValues(index) = value
End Sub
'Erase
Public Sub EraseArrayValues()
Erase mArrValues
End Sub
您可以像这样向数组添加值:
Module1.AddToArrayValues 0, "Thomas"
Module1.AddToArrayValues 1, "Henry"
Module1.AddToArrayValues 2, "Bob"
您可以按索引检索值:
Dim i As Integer
For i = LBound(Module1.ArrayValues) To UBound(Module1.ArrayValues)
Debug.Print Module1.ArrayValues(i)
Next i
'Thomas
'Henry
'Bob
忘记在重新填充之前需要擦除阵列:
Module1.EraseArrayValues