está me retornando erro nessa linha TCQUERY cSQL NEW ALIAS "QRANKING"
substitui por: oQuery := TQuery():New() oQuery:ExecSql(cSql) ///aqui --- oQuery:SetAlias("QRANKING") e da mesma forma retorna erro ao debugar
está me retornando erro nessa linha TCQUERY cSQL NEW ALIAS "QRANKING"
substitui por: oQuery := TQuery():New() oQuery:ExecSql(cSql) ///aqui --- oQuery:SetAlias("QRANKING") e da mesma forma retorna erro ao debugar
User Function RKMARCA()
local dInicio := "20220101" local dFim := "20221231" local nResult := 0 local cSql := ""
cSql := "select RANK() OVER (ORDER BY sum(RESULTADO.VALOR) DESC) AS 'RK MARCA' " cSql += "from (SELECT B1XDESCM AS MARCA,(CASE WHEN (Z7_TPOPER='1') THEN ((Z7_QUANT)) " cSql += "ELSE ((-Z7_QUANT)) END) AS QUANTIDADE," cSql += "ROUND((CASE WHEN (Z7_TPOPER='1') THEN (((Z7_QUANT Z7_PRCVEN)))"cSql += "ELSE ((-(Z7_QUANT Z7_PRCVEN)))END),2) AS VALOR, '' CURVA_DOMA, '' CURVA_MARCA" cSql += "FROM SZ7010 " cSql += "INNER JOIN SZ6010 ON SZ7010.Z7_DOC = SZ6010.Z6_DOC AND SZ7010.Z7_SERIE = SZ6010.Z6_SERIE" cSql += "LEFT JOIN SB1010 ON SB1010.D_E_L_E_T='' AND B1COD = Z7_COD" cSql += "LEFT JOIN SA3010 ON SA3010.D_E_L_E_T='' AND A3COD = Z6_CODVEND" cSql += "WHERE SZ7010.D_E_L_E_T=''" cSql += "AND Z7_ESTOQUE IN ('S','E')" cSql += "AND Z7_TPOPER IN ('1','2')" cSql += "AND CONVERT(DATE,Z7_EMISSAO, 103) >= CONVERT(DATE," + dInicio + ",103)" cSql += "AND CONVERT(DATE,Z7_EMISSAO, 103) <= CONVERT(DATE," + dFim + ",103)"
cSql += "UNION all"
cSql += "SELECT B1XDESCM AS MARCA, D2_QUANT AS QUANTIDADE," cSql += "ROUND(D2_VALBRUT - D2_SEGURO,2) AS VALOR,'' CURVA_DOMA,'' CURVA_MARCA" cSql += "FROM SD2010" cSql += "LEFT JOIN SC5010 ON SC5010.D_E_L_E_T='' AND C5NUM = D2_PEDIDO AND C5_FILIAL = D2_FILIAL" cSql += "LEFT JOIN SB1010 ON SB1010.D_E_L_E_T='' AND B1COD = D2_COD" cSql += "INNER JOIN SA3010 ON SA3010.D_E_L_E_T='' AND SA3010.A3COD = C5_VEND1" cSql += "WHERE SD2010.D_E_L_E_T='' AND C5_X_TPOPE IN ('01','09','18')" cSql += "AND CONVERT(DATE,D2_EMISSAO, 103) >= CONVERT(DATE," + dInicio + ",103)" cSql += "AND CONVERT(DATE,D2_EMISSAO, 103) <= CONVERT(DATE," + dFim + ",103)"
cSql += "UNION all"
cSql += "SELECT B1XDESCM AS MARCA,-D1_QUANT AS QUANTIDADE" cSql += ", -D1_QUANT * D1_VUNIT AS VALOR, '' CURVA_DOMA, '' CURVA_MARCA" cSql += "FROM SD1010" cSql += "INNER JOIN SC5010 ON C5_NOTA = D1_NFORI AND C5_FILIAL = D1_FILORI AND SC5010.D_E_L_E_T='' AND C5X_TPOPE IN ('01','09','18')" cSql += "LEFT JOIN SB1010 ON SB1010.D_E_L_E_T='' AND B1COD = D1_COD" cSql += "INNER JOIN SA3010 ON SA3010.D_E_L_E_T='' AND SA3010.A3COD = C5_VEND1" cSql += "WHERE SD1010.D_E_L_E_T='' AND D1_TIPO='D' " cSql += "AND CONVERT(DATE,D1_EMISSAO, 103) >= CONVERT(DATE," + dInicio + ",103)" cSql += "AND CONVERT(DATE,D1_EMISSAO, 103) <= CONVERT(DATE," + dFim + ",103)"
cSql += "and B1_XMARCA != '') RESULTADO" cSql += "group by RESULTADO.MARCA "
//CONVERTENDO O cSQL PARA O FORMATO SQL cSql := ChangeQuery(cSql)
TCQUERY cSQL NEW ALIAS "QRANKING" //EXCECUTA O COMANDO SQL CRIANDO UMA TABELA TEMPORARIA
DbSelectArea("QRANKING") //ABRE O RESULTADO DA CONSULTA
While !Eof().and. len(nResult) < 1 //Eof ARQUIVO RETORNADO DO SQL WHILE ATÉ TERMINAR DE LER O ARQUIVO
// atribuindo valor do alias para o campo nResult := QRANKING-> Z0_RKMARCA
DbSelectArea("QRANKING") //ABRE DE NOVO A AREA DA TABELA DO BANCO
DBSKIP()//PULA PARA A PROXIMA LINHA
End DBCloseArea() //FECHA A AREA ABERTA
RETURN nResult
Essa código abre uma query, qual o erro que você está tendo, pode ser que a query esteja incorreta.
— Daniel Mendes 13 de Mar de 2023
Olá, por favor, poderia colocar o seu código completo, por favor. A classe TQuery é sua, poderia colocar ela também. Aguardo, obrigado.
— Daniel Mendes 13 de Mar de 2023adicionei o código
— Andreas 13 de Mar de 2023