编写脚本以使用递增变量重复更新查询

时间:2019-05-01 01:45:03

标签: sql ms-access access-vba

我有一张桌子:

a.si
a.p
a.pnsi

si是唯一ID,p是双精度,pnsi为空

我想使用带有变量n的子查询在pnsi上运行更新查询:

(SELECT si FROM a as y WHERE y.si = a.si + n AND y.p > a.p)

我希望能够将n的值从1递增到100,000,仅在pnsi仍然为空的其余记录上运行此查询。

查询具有两个条件: 1.选择(y.si)作为a.pnsi的si值大于a.si 2. y.p大于a.p

这样做的目的是为了减少处理时间,因为此过程将在超过一百万条记录的表上运行,并且在大多数情况下,可以找到一个非常小的n值的正确解决方案。通过以这种方式运行,Access将评估n = 1、2 ...(升序),从而导致很少的记录,其中n会一直增加到100,000。

我需要的是一个脚本,用于递增n的值,以对其余空记录重复n次更新查询。 脚本需要将n变量的当前值发送到Update查询(y.si = a.si + n)。当没有更多记录要更新或当n达到100,000。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

VBA过程可能具有以下代码:

Dim rs As DAO.Recordset, lngCnt As Long
Set rs = CurrentDb.OpenRecordset("SELECT * FROM a WHERE pnsi Is Null;")
For lngCnt = 1 to 100000
    If Not rs.EOF Then
        rs.Edit
        rs!pnsi = lngCnt
        rs.Update
        rs.MoveNext
    Else
        Exit For
    End If
Next