Ms access 具有从可变数量ms访问开始的条件的串行

Ms access 具有从可变数量ms访问开始的条件的串行,ms-access,serialization,Ms Access,Serialization,伙计们,我有这个功能,你们中的一些人帮了我。我试图添加一个条件,但我不能 我的职能: Sub MakeNum2() Dim rs As DAO.Recordset, intS As Integer, strG As String Set rs = CurrentDb.OpenRecordset("SELECT [Warehouse] & [TransType] AS Grp, TblImportTemp.zdate, TblImportTemp.Doc From TblImpo

伙计们,我有这个功能,你们中的一些人帮了我。我试图添加一个条件,但我不能

我的职能:

Sub MakeNum2()
Dim rs As DAO.Recordset, intS As Integer, strG As String
Set rs = CurrentDb.OpenRecordset("SELECT [Warehouse] & [TransType] AS Grp, TblImportTemp.zdate, TblImportTemp.Doc From TblImportTemp ORDER BY [Warehouse] & [TransType], TblImportTemp.zdate;")

strG = rs!grp
While Not rs.EOF
    If strG = rs!grp Then
        intS = intS + 1
        rs.Edit
        rs!Doc = intS
        rs.Update
        rs.MoveNext
    Else
        intS = 0
        strG = rs!grp
    End If
Wend

End Sub
我不需要它从编号1开始序列化,因此我需要添加的条件是从QryLastDoc获取最后一个文档编号,其中Grp(在我的函数中)=Grp2在QryLastDoc中,并将此编号设置为序列的开始,然后像往常一样为每个新文档添加1。 QryLastDoc

SELECT QryTransTopDoc.Warehouse, QryTransTopDoc.Type, Last(QryTransTopDoc.Doc) AS LastOfDoc, [Warehouse] & [Type] AS Grp2
FROM QryTransTopDoc
GROUP BY QryTransTopDoc.Warehouse, QryTransTopDoc.Type, [Warehouse] & [Type];
结果:第一条记录将是QryLastDoc+1中的最后一个文档编号,然后以下记录将是doc+1,提前感谢

编辑#1:这不能由德卢库普人来做

`intS = Nz(DLookup("Doc", "QryTransTopDoc", "Grp2='" & rs!Grp & "'"), 0)`
Dlookup Result将是序列化的基本编号,这意味着第一个记录文档将是Dlookup+1,然后以下记录将是DOC+1,我希望我能解释得更多。再次感谢

可以使用DLookup()域聚合函数来拉动生成的最后一个值,以设置初始值为外部循环的变量。然后在循环中增加变量

Dim rs As DAO.Recordset, intS As Integer, strG As String
Set rs = CurrentDb.OpenRecordset("SELECT [Warehouse] & [TransType] AS Grp, TblImportTemp.zdate, TblImportTemp.Doc From TblImportTemp ORDER BY [Warehouse] & [TransType], TblImportTemp.zdate;")
intS = Nz(DLookup("Doc", "QryTransTopDoc", "Grp2='" & rs!Grp & "'"), 0)
strG = rs!grp
While Not rs.EOF
    If strG = rs!grp Then
        intS = intS + 1
        rs.Edit
        rs!Doc = intS
        rs.Update
        rs.MoveNext
    Else
        intS = Nz(DLookup("Doc", "QryTransTopDoc", "Grp2='" & rs!Grp & "'"), 0)
        strG = rs!grp
    End If
Wend
或者在表上使用DMax()


或者,不要将此值保存到表中,而是在需要时进行计算

“不能让它工作”意味着什么——错误信息、错误结果、什么也没发生?应该提供有问题的代码。不,我不知道怎么做,这对我来说不是那么简单,因为它不总是得到最后一个文档并向其中添加1,它只是在第一个记录中这样做,以获得第一个序列继续使用该函数,因为通常不会工作,问题是它并不总是这样,这一步将仅用于第一个记录,如果我使用dlookup,所有记录的文档编号都将相同,因为它从查询中获取最后一个文档编号,在这个过程中不会更改,我希望我能解释更多是,使用DLookup或DMax提取值并设置变量的起始值,然后为后续值增加变量-假设您使用的是问题中所示的循环。请将其应用到函数中好吗?答案已编辑。