E se pegar um comando deste.....
O comando por si só é complicado, nada que faça vai deixar visível do que se trata, nem text/endtext, nem outra coisa.
Código: Selecionar todos
:cSQL := ;
"SELECT " + ;
" IDESTOQUE, ESPRODUTO, ESDATLAN, ESCADASTRO, ESCFOP, ESPEDIDO, ESTIPLAN, " + ;
" IF( JPNFEKEY.KKCHAVE IS NULL, LPAD( RIGHT( TRIM( ESNUMDOC ), 7 ), 7, '0' ), LPAD( '', 7, ' ' ) ) AS NUMDOC," + ;
" ESQTDE * IF( JPITEM.IEQTDCOM < 1, 1, JPITEM.IEQTDCOM ) AS QTDE," + ;
" ESQTDE * ESVALOR AS VALOR," + ;
" JPITEM.IEUNID AS UNIDADE, JPITEM.IEANP AS ANPPRO, JPITEM.IEDESCRI AS ITENOME, " + ;
" IF( TABANPINS.AIANP IS NULL OR JPANPOPE.AOANPREG = '1022002', JPCADASTRO.CDCNPJ, LPAD( '', 14, '0' ) ) AS CADCNPJ, " + ;
" JPCADASTRO.CDCIDADE AS CADCIDADE, JPCADASTRO.CDUF AS CADUF, JPCADASTRO.CDNOME AS CADNOME," + ;
" TABCIDADE.CIIBGE AS IBGE," + ;
" IF( TABANPINS.AIANP IS NULL OR JPANPOPE.AOANPREG = '1022002', TABANPLOC.ALANP, LPAD( '', 7, '0' ) ) AS ANPLOC," + ;
" IF( TABANPINS.AIANP IS NULL OR JPANPOPE.AOANPREG = '1022002', LPAD( '', 7, '0' ), TABANPINS.AIANP ) AS ANPINS," + ;
" IF( TABANPINS.AIANP IS NULL, LPAD( '',10,' '), TABANPAGE.AAANP ) AS ANPAGE," + ;
" IF( TABANPINS.AIANP IS NULL OR JPANPOPE.AOANPREG = '1022002', TABANPATI.ATCNAE, LPAD( '', 5, '0' ) ) AS ANPATI," + ;
" IF( TABANPINS.AIANP IS NULL, IF( JPCADASTRO.CDCNAE = '9999999', JPANPOPE.AOANPOUT, JPANPOPE.AOANPNREG ), JPANPOPE.AOANPREG ) AS ANPOPE, " + ;
" JPNFEKEY.KKCHAVE AS NFEKEY " + ;
" FROM JPESTOQUE" + ;
" LEFT JOIN JPITEM ON JPITEM.IDPRODUTO = JPESTOQUE.ESPRODUTO" + ;
" LEFT JOIN JPCADASTRO ON JPCADASTRO.IDCADASTRO = JPESTOQUE.ESCADASTRO" + ;
" LEFT JOIN ( SELECT DISTINCT CIIBGE, CIUF, CINOME FROM JPCIDADE ) AS TABCIDADE " + ;
" ON JPCADASTRO.CDUF = TABCIDADE.CIUF AND LEFT( JPCADASTRO.CDCIDADE, 20 ) = LEFT( TABCIDADE.CINOME, 20 )" + ;
" LEFT JOIN " + ;
" ( SELECT DISTINCT ALIBGE, ALANP FROM JPANPLOC WHERE LENGTH( ALVALATE ) < 1 ) AS TABANPLOC" + ;
" ON TABANPLOC.ALIBGE = TABCIDADE.CIIBGE " + ;
" LEFT JOIN " + ;
" ( SELECT DISTINCT AICNPJ, AIANP FROM JPANPINS WHERE LENGTH( AIVALATE ) < 1 ) AS TABANPINS" + ;
" ON TABANPINS.AICNPJ = IF( LENGTH( JPCADASTRO.CDCNPJ ) = 18," + ;
" CONCAT( SUBSTR( JPCADASTRO.CDCNPJ, 1, 2 ), SUBSTR( JPCADASTRO.CDCNPJ, 4, 3 )," + ;
" SUBSTR( JPCADASTRO.CDCNPJ, 8, 3 ), SUBSTR( JPCADASTRO.CDCNPJ, 12, 4 )," + ;
" SUBSTR( JPCADASTRO.CDCNPJ, 17, 2 ) ), 'X' ) " + ;
" LEFT JOIN " + ;
" ( SELECT DISTINCT AACNPJ, AAANP FROM JPANPAGE WHERE LENGTH( AAVALATE ) < 1 ) AS TABANPAGE " + ;
" ON TABANPAGE.AACNPJ = IF( LENGTH( JPCADASTRO.CDCNPJ ) = 18," + ;
" CONCAT( SUBSTR( JPCADASTRO.CDCNPJ, 1, 2 ), SUBSTR( JPCADASTRO.CDCNPJ, 4, 3 ), SUBSTR( CDCNPJ, 8, 3 ) ), 'X' ) " + ;
" LEFT JOIN JPANPOPE ON JPANPOPE.AOCFOP = JPESTOQUE.ESCFOP" + ;
" LEFT JOIN " + ;
" ( SELECT DISTINCT ATCNAE FROM JPANPATI WHERE LENGTH( ATVALATE ) < 1 ) AS TABANPATI" + ;
" ON TABANPATI.ATCNAE = Left( JPCADASTRO.CDCNAE, 5 )" + ;
" LEFT JOIN JPPEDIDO ON JPPEDIDO.IDPEDIDO = JPESTOQUE.ESPEDIDO" + ;
" LEFT JOIN JPNOTFIS ON JPNOTFIS.NFPEDIDO = JPPEDIDO.IDPEDIDO" + ;
" LEFT JOIN JPNFEKEY ON JPNFEKEY.KKMODFIS = '55'" + ;
" AND JPNFEKEY.KKNOTFIS = IF( JPNOTFIS.NFNOTFIS IS NULL, JPESTOQUE.ESNUMDOC, JPNOTFIS.NFNOTFIS )" + ;
" AND IF( JPNOTFIS.NFNOTFIS IS NULL, " + ;
" JPNFEKEY.KKEMINFE = JPCADASTRO.CDCNPJ AND KKDESNFE = " + StringSQL( jpempresa->emCnpj ) + ", " + ;
" JPNFEKEY.KKEMINFE = " + StringSQL( jpempresa->emCnpj ) + " )" + ;
" WHERE " + ;
" ESDATLAN BETWEEN CAST( " + DateSQL( dDataInicial ) + " AS DATE )" + ;
" AND CAST( " + DateSQL( dDataFinal ) + " AS DATE )" + ;
" AND JPITEM.IEANP IN ( SELECT IDANPPRO FROM JPANPPRO WHERE APISIMP = 'S' )"
:cSQL += " AND ESQTDE <> 0" + ;
" ORDER BY ESDATLAN, IDESTOQUE"
:Execute()
Só se for pra copiar de/para HEIDISQL, de resto não ajuda nada.
As vezes coloco
? :cSQL no fonte, pra poder copiar/colar da tela o comando montado, mas fazer o que....
Criar uma rotina especial pra esse comando, só pra substituir duas variáveis.....
Até parece que deixaria o comando mais simples
" ESDATLAN BETWEEN CAST( " + DateSQL( dDataInicial ) + " AS DATE )" + " AND CAST( " + DateSQL( dDataFinal ) + " AS DATE )" + ;