查找给定编号前后的记录

时间:2019-09-04 14:22:23

标签: access-vba

我有一张表格,上面列出了申请号,序列和日期。当要为应用程序添加新的序列号时,我需要检查上一个序列的日期和之后的序列日期(如果存在)。

表格示例:

APPNO   SEQUENCE   DATE
17638       1      08/10/2019
17638       2      08/12/2019
17638       4      08/20/2019

如果我要添加序列= 3的同一应用程序,则必须检查前一个序列的日期和后一个序列的日期。如果我要添加序列= 5的同一应用程序,则只检查最后添加的序列的日期。

使用记录集该如何完成?如何遍历记录集并在Access VBA中获得所需的信息?

我已经创建了一个记录集并设置了循环,但是我不知道从这里开始。我是Access新手。

开始于

strSql = "SELECT ST_APPNO_TX, ST_SEQUENCE_TXT, ST_DATE_DT FROM SUBMISSIONS_TBL where ST_APPNO_TXT= = '" & appno & "' ORDER ST_SEQUENCE_TXT;"
maxVal = DLookup("[MaxVal]", "[MaxSequence_qry]", "[ST_APPNO_TXT]=" & appno)

Set cnnLocalConnection = CurrentProject.AccessConnection
        Set rstSequence = New ADODB.Recordset

        rstSequence.Open strSql, cnnLocalConnection, adOpenForwardOnly, adLockReadOnly
        preSeq = ""
        For N = 1 To rstSequence.RecordCount

我想获取前一个序列和后一个序列(如果存在)的值

1 个答案:

答案 0 :(得分:0)

有很多方法可以获取所需的信息-您可以使用以下SQL查询获取给定应用程序和序列的前面的后续序列记录:

先前的顺序记录:

select top 1 t.* 
from submissions_tbl t
where 
    t.st_appno_txt = [YourAppNo] and 
    t.st_sequence_txt < [YourSequenceNo] 
order by 
    t.st_sequence_txt desc

成功顺序记录:

select top 1 t.* 
from submissions_tbl t
where 
    t.st_appno_txt = [YourAppNo] and 
    t.st_sequence_txt > [YourSequenceNo] 
order by 
    t.st_sequence_txt

或者,您可以分别使用DMaxDMin函数来获取前面或后面的序列号:

之前的序列号:

DMax("st_sequence_txt", "submissions_tbl", "st_appno_txt = '17638' and st_sequence_txt < '3'")

成功序列号:

DMin("st_sequence_txt", "submissions_tbl", "st_appno_txt = '17638' and st_sequence_txt > '3'")