microfly Posted September 18, 2018 Report Share Posted September 18, 2018 Olá a todos, Amigos boa noite, estou com um problema para executar o seguinte comando SQL usando SQLRDD. Se executo em uma Ferramenta Case Tipo o Phpmyadmin, HeidSql, MysqlFront, etc. é exibido o Resultado, mas no código PRG compilado, não executa FUNCTION Imprime_DAV(v_Numero_Orcamento) ******************************************************************************** RepDir := CurDrive() +":\"+ CurDir() + '\RELS\' TITULO := 'DAV - DOCUMENTO AUXILIAR DE VENDA' RELATORIO_FAST := 'EMISSAO_DAV.fr3' *---------------------------------------------------------------------------- IF FILE( (CurDrive() +":\"+ CurDir() + '\RELS\'+RELATORIO_FAST)) cComm_Cabecalho:= "select * from orcamento WHERE orcamento = " + SR_cDBValue( v_Numero_Orcamento ) + " ORDER BY orcamento DESC" EXECUTA_SQL(cComm_Cabecalho,"tmp_orcamento") *------------------------------------------------------------------------- cComm_Cliente:= "select * from cliente WHERE codcli = " + SR_cDBValue( tmp_orcamento->codcli ) EXECUTA_SQL(cComm_Cliente,"tmp_cliente") *------------------------------------------------------------------------- cComm_Itens:= " select itens.*, " cComm_Itens:= cComm_Itens + " pro.codbar AS c_barras, pro.nompro AS pro_nompro, pro.und AS pro_und " cComm_Itens:= cComm_Itens + " from itemorca as itens " cComm_Itens:= cComm_Itens + " LEFT JOIN produtos AS pro ON itens.codbar = pro.codbar " cComm_Itens:= cComm_Itens + " WHERE itens.orcamento = " + SR_cDBValue( v_Numero_Orcamento ) + " ORDER BY itens.orcamento DESC " EXECUTA_SQL(cComm_Itens,"tmp_Itens") *------------------------------------------------------------------------- oFrPrn := frReportManager():new() oFrPrn:SetIcon(1) // ícone da janela do FRH oFrPrn:SetTitle( 'Relatorio ' + TITULO ) // título da janela do FRH oFrPrn:LoadLangRes( (CurDrive() +":\"+ CurDir() + '\RELS\' + 'brazil.xml' )) // arquivo de idioma oFrPrn:SetWorkArea("tmp_orcamento", select("tmp_orcamento")) oFrPrn:SetWorkArea("tmp_cliente", select("tmp_cliente")) oFrPrn:SetWorkArea("tmp_Itens", select("tmp_Itens")) oFrPrn:LoadFromFile(RepDir+RELATORIO_FAST) // para leitura direta de arquivo FR3 oFrPrn:PreviewOptions:SetAllowEdit( .F. ) *------------------------------------------------------------------------- M->RELATORIO_DESINER = (.T.) IF M->RELATORIO_DESINER = (.T.) oFrPrn:DesignReport() // aqui para "desenhar" o relatório endif oFrPrn:PreviewOptions:SetZoomMode(2) oFrPrn:ShowReport() // aqui para gerar o preview do relatório. oFrPrn:DestroyFR() ELSE MsgStop('Está Faltando o Arquivo' + RepDir+(ARQUIVO_FR3)) ENDIF RETURN(.T.) *----------------------------------------------------------------------------------------------------------------------------------------------------- já o mesmo comando em Ferramenta case select itens.*, pro.codbar AS c_barras, pro.nompro AS pro_nompro, pro.und AS pro_und from itemorca as itens LEFT JOIN produtos AS pro ON itens.codbar = pro.codbar WHERE itens.orcamento = 1 ORDER BY itens.orcamento DESC EXECUTA_SQL(cComm_Itens,"tmp_Itens") Será que está correto ? Veja a imagem Quote Link to comment Share on other sites More sharing options...
evandro Posted September 18, 2018 Report Share Posted September 18, 2018 Olá, Isto costuma ser igual a um mágico. Chama a atenção para uma coisa mas o problema está em outra coisa bem diferente. Dá algum erro? Qual? Salve o conteúdo da variável cComm_Itens em um arquivo ( via memowrit() ) para ver o que está realmente sendo enviado. Quote Link to comment Share on other sites More sharing options...
microfly Posted September 18, 2018 Author Report Share Posted September 18, 2018 Olá, Isto costuma ser igual a um mágico. Chama a atenção para uma coisa mas o problema está em outra coisa bem diferente. Dá algum erro? Qual? Salve o conteúdo da variável cComm_Itens em um arquivo ( via memowrit() ) para ver o que está realmente sendo enviado. boa tarde Evandro ja fiz tudo isso , nao da erro na compilacao, ja foi feito isso tb via memowrit() Quote Link to comment Share on other sites More sharing options...
EDUTEK Posted September 18, 2018 Report Share Posted September 18, 2018 vc use o "parse" para execuar a instrução ? Quote Link to comment Share on other sites More sharing options...
EDUTEK Posted September 18, 2018 Report Share Posted September 18, 2018 eu uso duas forma uma usando o PARSE E OUTRA SQL PURO. FUNCTION EXECUTA_SQL(cComm, cAlias, cTABELA) LOCAL oSql, nerr, nPos aTabela := iif(ctabela=nil,mPreDbf1,cTabela) aTabela := mlocal_path + "\temp\"+aTabela nerr := npos := "" apCode := SR_SQLParse( cComm, @nErr, @nPos ) oSql := SR_GetConnection() cComm := SR_SQLCodeGen( apCode,, oSql:nSystemID ) nerr := osql:exec( cComm,,.t.,,aTabela,cAlias) RETURN .T. FUNCTION EXECUTA_SQL_PURO(cComm, cAlias, cTABELA) LOCAL oSql, nerr, nPos aTabela := iif(ctabela=nil,mPreDbf1,cTabela) aTabela := mlocal_path + "\temp\"+aTabela nerr := npos := "" oSql := SR_GetConnection() nerr := osql:exec( cComm,,.t.,,aTabela,cAlias) RETURN .T. Quote Link to comment Share on other sites More sharing options...
evandro Posted September 18, 2018 Report Share Posted September 18, 2018 Olá, nao da erro na compilacao Não digo erro de compilação. Digo mensagem de erro da lib. Se não executa na lib, deve haver um código de erro, uma informação qualquer. Quote Link to comment Share on other sites More sharing options...
emotta Posted September 19, 2018 Report Share Posted September 19, 2018 Este problema foi resolvido, na verdade existiam dois erros. O primeiro era um espaço logo no começo da instrução SQL cComm_Itens:= " select itens.*, " O correto é: cComm_Itens:= "select itens.*, " O outro problema era dentro da função EXECUTA_SQL. Dentro dela eram executados os comandos de "parse" e isso estragava a instrução SQL neste caso. Então foi criado um 3o parametro que determinava se dentro da função EXECUTA_SQL deveria executar ou não as funções de PARSE. Neste caso se passa .F. para não executar o parse. Então deu tudo certo. Ficou pendente só o motivo do PARSE estragar a instrução, isso não deu tempo de ver. Fica então a solução para esta situação, caso alguem passe por este problema. Não pode ter espaço no inicio da instrução e também verificar se as funcoes de PARSE estão estragando a instrução. Eu nunca uso as funções de PARSE nas minhas. Quote Link to comment Share on other sites More sharing options...
microfly Posted September 19, 2018 Author Report Share Posted September 19, 2018 Este problema foi resolvido, na verdade existiam dois erros. O primeiro era um espaço logo no começo da instrução SQL cComm_Itens:= " select itens.*, " O correto é: cComm_Itens:= "select itens.*, " O outro problema era dentro da função EXECUTA_SQL. Dentro dela eram executados os comandos de "parse" e isso estragava a instrução SQL neste caso. Então foi criado um 3o parametro que determinava se dentro da função EXECUTA_SQL deveria executar ou não as funções de PARSE. Neste caso se passa .F. para não executar o parse. Então deu tudo certo. Ficou pendente só o motivo do PARSE estragar a instrução, isso não deu tempo de ver. Fica então a solução para esta situação, caso alguem passe por este problema. Não pode ter espaço no inicio da instrução e também verificar se as funcoes de PARSE estão estragando a instrução. Eu nunca uso as funções de PARSE nas minhas. Boa tarde quero agradecer a todos que tentaram me ajudar em especial ao meu amigo Eduardo Motta que entrou aqui na minha maquina e perdeu algum tempo para me ajudar , que DEUS abencoe a todos. Muito Obrigado aferra 1 Quote Link to comment Share on other sites More sharing options...
emotta Posted September 20, 2018 Report Share Posted September 20, 2018 Boa tarde quero agradecer a todos que tentaram me ajudar em especial ao meu amigo Eduardo Motta que entrou aqui na minha maquina e perdeu algum tempo para me ajudar , que DEUS abencoe a todos. Muito Obrigado Aprendi mais uma com essa... Abraços aferra 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.