A única saÃda que deu certo foi procurar um a um.... fazer o que....
WITH OBJECT cnSQL
:cSQL := "SELECT PDCONF, PDTRANSA, PDCADASTRO, PDDATEMI, PDPEDCLI, PDCONTATO, " + ;
" PDIIVAL, PDIPIVAL, PDICMVAL, PDSUBVAL, PDVALPRO, PDVALFRE, PDVALSEG," + ;
" PDVALOUT, PDVALDES, PDVALNOT, PDVALEXT, PDTRANSP, PDTRANSP, " + ;
" PDOBS, PDINFINC, PDINFALT, PDSTATUS, " + ;
" JPCADASTRO.CDNOME, JPCADASTRO.CDENDERECO," + ;
" JPCADASTRO.CDNUMERO, JPCADASTRO.CDCOMPL, " + ;
" JPCADASTRO.CDBAIRRO, JPCADASTRO.CDCIDADE," + ;
" JPCADASTRO.CDUF, JPCADASTRO.CDCEP," + ;
" JPCADASTRO.CDCNPJ, JPCADASTRO.CDINSEST," + ;
" JPCADASTRO.CDTELEFONE, JPCADASTRO.CDCONTATO," + ;
" JPCADASTRO.CDMAPA, JPCADASTRO.CDCONTATO," + ;
" JPCADASTRO.CDOUTDOC, JPCADASTRO.CDENDENT," + ;
" JPCADASTRO.CDNUMENT, JPCADASTRO.CDBAIENT," + ;
" JPCADASTRO.CDCEPENT, JPCADASTRO.CDCIDENT," + ;
" JPCADASTRO.CDUFENT, JPCADASTRO.CDCOMENT," + ;
" JPCADASTRO.CDENDCOB, JPCADASTRO.CDBAICOB," + ;
" JPCADASTRO.CDCIDCOB, JPCADASTRO.CDUFCOB," + ;
" JPCADASTRO.CDCEPCOB, JPCADASTRO.CDNUMCOB," + ;
" JPCADASTRO.CDCOMCOB," + ;
" JPTRANSP.TPNOME," + ;
" JPFORPAG.FPDESCRI," + ;
" JPVENDEDOR.VDDESCRI," + ;
" JPTRANSA.TRREACAO, JPTRANSA.TRDESCRI, " + ;
" JPNOTFIS.NFNOTFIS," + ;
" JPITEM.IEDESCRI, JPITEM.IEUNID, JPITEM.IEPESLIQ, JPITEM.IEPESBRU," + ;
" JPITPED.*," + ;
" ( SELECT EDEXTERNO" + ;
" FROM JPEDICFG " + ;
" WHERE EDTIPO=1 AND EDINTERNO=JPITPED.IPPRODUTO AND EDEMPRESA LIKE CONCAT( '%', JPCADASTRO.CDCNPJ, '%' )" + ;
" LIMIT 1 ) AS CODEXTERNO" + ;
" FROM JPPEDIDO" + ;
" LEFT JOIN JPTRANSA ON JPTRANSA.IDTRANSA = JPPEDIDO.PDTRANSA" + ;
" LEFT JOIN JPCADASTRO ON JPCADASTRO.IDCADASTRO = JPPEDIDO.PDCADASTRO" + ;
" LEFT JOIN JPTRANSP ON JPTRANSP.IDTRANSP = JPPEDIDO.PDTRANSP" + ;
" LEFT JOIN JPFORPAG ON JPFORPAG.IDFORPAG = JPPEDIDO.PDFORPAG" + ;
" LEFT JOIN JPVENDEDOR ON JPVENDEDOR.IDVENDEDOR = JPPEDIDO.PDVENDEDOR" + ;
" LEFT JOIN JPNOTFIS ON JPNOTFIS.NFPEDIDO = JPPEDIDO.IDPEDIDO" + ;
" LEFT JOIN JPITPED ON JPITPED.IPPEDIDO = JPPEDIDO.IDPEDIDO" + ;
" LEFT JOIN JPITEM ON JPITEM.IDPRODUTO = JPITPED.IPPRODUTO" + ;
" WHERE IDPEDIDO=" + NumberSQL( nIdPedido )
:Execute()
é o bloco com CODEXTERNO
Como é só para os produtos de um único pedido, tudo bem, sem problema de velocidade.
Depois penso numa saÃda melhor, agora é apagar incêndio.