0

访问 VBA 非常新,希望对此有一些指导。

我正在搜索一个字符串并在该字段中寻找一个特定的子字符串。该子字符串将具有基于另一个表的值,即

order = "参考订单QQ131415"

问题是,订单号没有特定的模式。有些是 7 位数字,有些是 10 位数字,有些是破折号。

不过,我也可以访问一张包含这些订单号的表,我想我正在尝试将该表用作字典。

我非常基本的 Access VBA 代码是这样的

' order= Instr(1, rst![order], qst![order_id],vbBinaryCompare)'

order 是我尝试提取的订单 ID 的字符串 order_id 是单独表中的实际 ID。

这是 Access VBA 可以处理的吗?

4

1 回答 1

0

所以我认为这会对你有所帮助

您在“order=”后面的句子中对您的代码不是很清楚。你能澄清一下吗?

Instr(string1, String2, [比较])

string1 必需。正在搜索的字符串表达式。string2 必需。寻找字符串表达式。

Instr 返回一个 Variant(在这种情况下为数字),指定一个字符串在另一个字符串中第一次出现的位置。所以应该是: Position= InStr(1, string1, string2, 1)

所以你现在知道 ordernumber 从 Order 中的位置 x 开始。然后,您必须执行 left(Order, Len(order) -x) 来提取字符串。

您可以在嵌套循环中执行此操作,因为您必须按顺序遍历字典中的每条记录。

例如

Dim rsOrder as DAO.recordset
Dim rsOrderId as Dao.recordset
dim orderTest as integer
dim stringcapture as string

Set rsOrder = Currentdb.OpenRecordset("[SELECT STRING]")
rsOrder.Movefirst

Do until rsOrder.EOF or rsOrder.BOF
    Order = rsOrder![OrderFieldName]
    Set rsOrderId = Currentdb.OpenRecordSet("[SELECT STRING]")
    rsOrderID.Movefirst
    Do Until rsOrderID.EOF or rsOrderID.BOF
        OrderID = rsOrderID![OrderIDFieldName]
        orderTest = Instr(1, Order, OrderID,1)
        StringCapture = left(Order, Len(order) -OrderTest)
    rsOrderID.movenext
    Loop
rsOrder.movenext
Loop
rsOrder.close
rsOrderID.close

有什么影响。

于 2019-10-17T16:26:50.403 回答