SELECT cn_name, cn_port, cn_printer FROM lcontrol ; WHERE !EMPTY(lcontrol.cn_name) .and. lcontrol.cn_name NOT IN ; (SELECT ctrlname FROM ctrlset WHERE ctrlset.printform = .T.); INTO TABLE (hdir+"tTEMPLCONTROL.DBF")>>The below works:
>>SELECT cn_name, cn_port, cn_printer FROM lcontrol ; >> WHERE !EMPTY(lcontrol.cn_name) .and. lcontrol.cn_name IN ; >> (SELECT ctrlname FROM ctrlset WHERE ctrlset.printform = .T.); >> INTO TABLE (hdir+"tTEMPLCONTROL.DBF") >>>>so does the reverse:
>>SELECT cn_name, cn_port, cn_printer FROM lcontrol ; >> WHERE !EMPTY(lcontrol.cn_name) .and. lcontrol.cn_name IN ; >> (SELECT ctrlname FROM ctrlset WHERE ctrlset.printform = .F.); >> INTO TABLE (hdir+"tTEMPLCONTROL.DBF") >>However, the reverse of the first using NOT does not work, any idea why anyone?
>>SELECT cn_name, cn_port, cn_printer FROM lcontrol ; >> WHERE !EMPTY(lcontrol.cn_name) .and. lcontrol.cn_name NOT IN ; >> (SELECT ctrlname FROM ctrlset WHERE ctrlset.printform = .T.); >> INTO TABLE (hdir+"tTEMPLCONTROL.DBF") >>The 2nd two statements should produce the same results, but they do not. What is wrong with the "not in" portion?
>SELECT cn_name, cn_port, cn_printer FROM lcontrol ; > WHERE !EMPTY(lcontrol.cn_name) .and. ; > NOT EXISTS(SELECT ctrlname FROM ctrlset > WHERE lcontrol.cn_name = ctrlset.ctrlname AND ctrlset.printform = .T.); > INTO TABLE (hdir+"tTEMPLCONTROL.DBF")