Jump to content
Fivewin Brasil

Executar Comando Sql, com SQLRDD


microfly

Recommended Posts

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

luizzzz.jpg?1537234177

 

 

 

Link to comment
Share on other sites

 

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()

Link to comment
Share on other sites

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.    
 

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

 

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...