*- updtakastk.prg **** Local lcmasterid, lnavgrec1, lnavgrec2, lnavgrec3, lnpackno, lntakano, lntotrec, lntrnno USEFILE('cuttm') USEFILE('cuttct') USEFILE('packtc') lntakano = 0 Select cuttm Set Order To takano Select cuttct Set Order To takano Select packtm Set Order To MASTERID Select packtc Set Order To takano Select cuttct Wait Window 'Working... Please Wait...' At Srows() / 2, Scols() / 2 Nowait Select cuttct Scan for not empty(takano) && might build a binary index on empty(takano) depending on data size and distribution lntakano = takano &&If Not Empty(m.lntakano) ** Below code taking Maximum time in Coverage result && Replace packed With ' ', packno With 0, recuttno With 0 In cuttct If Seek(m.lntakano, 'packtc', 'takano') &&lcmasterid = packtc.MASTERID lnpackno = Iif(Seek(packtc.MASTERID, 'packtm', 'masterid'), packtm.packno, 0) ** Below code taking Maximum time in Coverage result Replace packed With Iif(m.lnpackno <> 0, 'Y', ' '), packno With m.lnpackno, recuttno with 0 && In cuttct Else && on first glance always overwritten ??? && lntrnno = Iif(Seek(m.lntakano, 'cuttm', 'takano'), cuttm.trnno, 0) && Replace packed With Iif(m.lntrnno <> 0, 'Y', ' '), recuttno With m.lntrnno In cuttct lntrnno = Iif(Seek(m.lntakano, 'cuttm', 'takano1'), cuttm.trnno, 0) Replace packed With Iif(m.lntrnno <> 0, 'Y', ' '), recuttno With m.lntrnno, packno with 0 && In cuttct Endif &&Endif Endscan Wait Clearsetting up relations in advance might not much/more help in this case, as only 1 seek is needed fo each record.