【发布时间】:2021-11-01 12:34:41
【问题描述】:
我正在尝试检查表的一列中的记录是否与 ArrayList 的至少一个值匹配,如果是,则显示在下一个表单中匹配的记录
我有一个充满字符串的 ArrayList,但我不知道如何检查表中的记录并将其插入下一种形式的文本框,其中一列的至少一个记录数据与 ArrayList 中的一个值匹配。
这不起作用:
Public Sub Command42_Click()
Dim NotTrained As ArrayList
Set NotTrained = New ArrayList
NotTrained.Add "value1"
NotTrained.Add "value2"
DoCmd.OpenForm "form_name", WhereCondition:=NotTrained.Contains(handover_No) = True
End Sub
我不知道我是否能够在 WhereCondition 中执行此操作,或者我需要打开下一个表单并将数据插入 NextForm.Load() Sub 的文本框中。
在下一个表单中,文本框将源代码控制设置为我希望从中获取记录的表中的列。
【问题讨论】:
-
您的问题不清楚。 “显示那些在下一个表格中匹配的记录”是什么意思?如果“将表格中的记录插入到下一个表单的文本框中”,基于什么来做到这一点?填充特定字符串的文本框之间存在什么关联?请编辑您的问题并澄清这个问题,否则,恐怕没有人可以帮助您以您提出问题的方式......
-
handover_No是表中列的名称。例如,如果其中一条记录在 handover_No 列中的值为value1,则在单击时打开的下一个表单中,它将显示有关匹配的记录的其他信息,如姓名 surname 和将源代码控制设置为这些列的文本框中的 handover_No在那张桌子上。抱歉不清楚 -
使用字符串作为过滤/选择记录的手段在数据库中效率不高。使用记录的自动编号主键要好得多。我不确定你为什么要建立一个 ArrayList - 看看在 ID 号的 CSV 列表上使用
.OpenForm操作的WHERE条件 -DoCmd.OpenForm "frmShip",,,"ShipID IN(10,11,12)" -
好的,我得到了您的建议,我对其进行了一些更改,现在它基于 ID 而不是字符串工作。有什么方法可以让我有这样的代码
DoCmd.OpenForm "frmShip",,,"ShipID IN(ArrayList)"而不是这个DoCmd.OpenForm "frmShip",,,"ShipID IN(10,11,12)" -
不,您必须从 ArrayList 创建 ID 列表。但是你为什么首先创建 ArrayList - 创建 ID 列表而不是 ArrayList 可能更容易。
标签: vba ms-access arraylist contains