如何在 foxpro table 中查找丢失的记录?

How to find missing records in foxpro table?

我有一个 table 如下所示。

cAcctNumber nSerialNo cBatchNo
12345 120 456
12345 122 456
12345 123 456
12345 125 456
12345 100 500
12345 105 500
12345 106 500
12345 108 500

现在我想要这样的输出,

nSerialNo
121
124
101
102
103
104
107

我做了这样的事情,

Select cAcctNumber, cBatchNo, nSerialNo , ;
   Min(nSerialNo) as minCN,;
   Max(nSerialNo) as maxCN,; 
   Count(*) as BatchCount; 
   From Cheque_no Group By cAcctNumber, cBatchNo, nSerialNo ;
   Into Cursor Batches  READWRITE 


Select Batches 
Go Top
nMin = minCN
Go Bottom
nMax = maxCN
nMaxRecno = Recno()


Create Cursor MissingChequeno  (nSerialNo I)

For I = nMin+1 To nMax-1
   Try
      Insert Into Batches Values (I)
      
      Insert Into MissingChequeno  Values (I)
   Catch 
   Endtry
ENDFOR 

需要根据每个 cBatchNo 来获取我丢失的记录。这意味着 Batch 456 missing ** nSerialNo 121,nSerialNo 124** and Batch 456 missing nSerialNo 101,nSerialNo 102,nSerialNo 103,n序列号 104,n序列号 107 。 我怎样才能得到我的输出? 谢谢

有 N 种方法可以做到这一点。其中之一是:

Create Cursor Cheque_no ;
    (cAcctNumber i,nSerialNo i,cBatchNo i)
Insert Into Cheque_no Values(12345,120,456)
Insert Into Cheque_no Values(12345,122,456)
Insert Into Cheque_no Values(12345,123,456)
Insert Into Cheque_no Values(12345,125,456)
Insert Into Cheque_no Values(12345,100,500)
Insert Into Cheque_no Values(12345,105,500)
Insert Into Cheque_no Values(12345,106,500)
Insert Into Cheque_no Values(12345,108,500)




Local Array laNums[1]
Select Min(nSerialNo), Max(nSerialNo) From Cheque_no Into Array laNums
Local ix
Create Cursor allNums(num i)
For ix = laNums[1] To laNums[2]
    Insert Into allNums Values (m.ix)
Endfor

Select N.num As nSerialNo ;
    From allNums N ;
    where Not Exists (Select * From myTable T Where T.nSerialNo = N.num) ;
    into Cursor MissingChequeno nofilter

Browse