我正在访问访问,我需要从一种表单发送到另一种表单,所以我想使用string((,但是应用程序不想要它。/p>
有什么建议?
update
我有一个带有2个文本框的表单,每个文本框都将带有相同语法的数据,例如TextBox1:" John" TextBox2:" David"我有并为每个文本框添加按钮,它们在不同的数组中存储每个值。添加按钮正在检查每个文本框的值是否存在2个不同表中,Tabtbox1和table2 for Textbox2中是否存在。如果存在,我需要保留它们,直到用户按下另一个加载第二个表格的按钮为止。用户可以在每个文本框中设置无限的值,通过在设置新值时按添加。
,当我加载第二种形式时,我需要保留每个表中存在但分离的值,但要根据每个值加载一些数据。
所有人都在工作,除了我不知道如何将2个数组从表单1传递到形式2,带有textbox1值的数组1,而阵列2则带有textbox22
如果您需要在加载表单时将其传递,则可以将值串联到单个字符串并通过.OpenArgs
。
在另一个形式的加载事件上,您可以拆分字符串并创建一个数组。
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
更新1:
您可以这样构建.OpenArgs
字符串:
dim oneString as String
With Me
oneString = .YourtextBoxName1.Value & ";" & .YourtextBoxName2.Value 'etc...
End With
DoCmd.OpenForm "FormName", acNormal, , , acFormPropertySettings, acWindowNormal, oneString
更新2:
将其放在标准模块中:
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