如何在 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
我有一个 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