Jump to content
Fivewin Brasil

Acesso SQLServer e Oracle sem SQLRDD


EDUTEK

Recommended Posts

Boa tarde

Eu uso o SQLRDD no meu projeto principal para coletar dados e gerar relatórios auxilares e pequena atualizações no ERP da empresa, agora vou precisar monta um outro sistema de Coletar de dados e emissão de relatorios mas não poderei usar o SQLRDD.

Qual a melhor maneira de fazer isso para conectar no Oracle e no SQLServer ?

alguém tem algum exemplo.

no meu sistema mesmo usando o SQLRDD procuro usar para incluir, alterar e exlcuir os comando SQL já

conforme rotina

function grava_dados(_acao,_atabela,_aCampo,_adados, _alias, _logs)
__logs    := iif(_logs=nil,"N",_logs)    &&&  Não vai gravar log por um periodo
__alias   := iif(_alias=nil,_aTabela,_alias)
__qtdeReg := len(_aCampo)
__tabela :=  _atabela
__acao   := _acao
if __acao = "I"
   if _sql()
      _idLanc := pega_idlanc()       
      cSql := "INSERT INTO "+ __TABELA +" ("            
      for i = 1 to __qtdeReg
         __Campo := _aCampo[i]         
         cSql += __Campo +", "         
      next
      cSql += "idlanc"
      cSql +=  ")  VALUES ( "                                                                                                       
      for x = 1 to __qtdeReg
         __Dados := _aDados[x]    
         cSql += SR_cDBValue( __Dados ) +", "
      next      
      cSql += 	SR_cDBValue( _idlanc  )+") "                  
      __atual    :=  ajusta_type_dados(__dados)
      _log_item += "Coluna :"+__Campo+" > Conteudo ["+rtrim(__atual)+"]. "+chr(13)+chr(10)    
      proc_sql(cSql)
      &__tabela->( SR_DBRefresh() )                                                                                                           		  
   else
      dbselectarea(__alias)
      if appendrec()
         for i = 1 to __qtdeReg
            __Campo := _aCampo[i]         
            __Dados := _aDados[i]        
            if __logs = "S"
               __atual    :=  ajusta_type_dados(__dados)            
               _log_item += "Coluna :"+__Campo+" > Conteudo ["+rtrim(__atual)+"]. "+chr(13)+chr(10)            
            endif
            &__alias->&__campo := __dados
         next
         if __logs = "S"         
            _log_item += "Coluna : idlanc  > Conteudo ["+rtrim(_idlanc)+"]. "+chr(13)+chr(10)                     
         endif
         &__alias->idlanc := _idlanc                  
      endif
      &__alias->( dbcommit() )
      &__alias->( dbunlock() )
   endif
elseif __acao = "A"
   if _sql()
      dbselectarea(__alias)
      _idlanc := &__alias->idlanc   
      cSql := "UPDATE "+ __TABELA +" SET "            
      for i = 1 to __qtdeReg
         __Campo  := _aCampo[i]      
         __Dados  := _aDados[i]                           
         if i = __qtdereg
            cSql += __Campo +" = " + SR_cDBValue( __Dados ) +"  "         
         else                                     
            cSql += __Campo +" = " + SR_cDBValue( __Dados ) +", "
         endif
         __atual    :=  ajusta_type_dados(__dados)
         __anterior :=  ajusta_type_campo(__dados,__campo)
         if __atual <> __anterior
            _log_item += "Coluna :"+__Campo+" > de ["+rtrim(__anterior)+"] para ["+rtrim(__atual)+"]. "+chr(13)+chr(10)
         endif                                 
      next
      cSql += "WHERE  nrecno ="+SR_cDBValue( mRegistro  )+" "      
      proc_sql(cSql)
      &__alias->( SR_DBRefresh() )
   else
      dbselectarea(__alias)
      if travareg()   
         _idlanc := &__alias->idlanc
         for i = 1 to __qtdeReg      
            __Campo  := _aCampo[i]         
            __Dados  := _aDados[i]   
            if __logs = "S"            
               __atual    :=  ajusta_type_dados(__dados)         
               __anterior :=  ajusta_type_campo(__dados,__campo)
               if __atual <> __anterior
                  _log_item += "Coluna :"+__Campo+" > de ["+rtrim(__anterior)+"] para ["+rtrim(__atual)+"]. "+chr(13)+chr(10)
               endif                 
            endif
            &__alias->&__campo := __dados
         next
      endif
      &__alias->( dbcommit() )
      &__alias->( dbunlock() )      
   endif   
elseif __acao = "X"
   dbselectarea(__alias)
   _idlanc := &__alias->idlanc
   if _sql()
      cSql := "DELETE FROM "+__tabela + " "
      cSql += "WHERE  nRecno = "+SR_cDBValue( mRegistro ) + " "
      proc_sql(cSql)
      &__alias->( SR_DBRefresh() )      
   else
      dbselectarea(__alias)   
      if travareg()
         &__alias->( dbdelete() )
      endif
      &__alias->( dbcommit() )
      &__alias->( dbunlock() )      
*      &__alias->( dbSkip(0) )                                                  
   endif            
   if __logs = "S"   
      for i = 1 to __qtdeReg      
         __Campo  := _aCampo[i]         
         __Dados  := _aDados[i]   
         __atual    :=  ajusta_type_dados(__dados)
         _log_item += "Coluna :"+__Campo+" > Conteudo ["+rtrim(__atual)+"]. "+chr(13)+chr(10)
      next
   endif
else    
   if _sql()
      dbselectarea(__alias)
      _idlanc := &__alias->idlanc   
      cSql := "UPDATE "+ __TABELA +" SET "            
      for i = 1 to __qtdeReg
         __Campo  := _aCampo[i]      
         __Dados  := _aDados[i]                           
         if i = __qtdereg
            cSql += __Campo +" = " + SR_cDBValue( __Dados ) +"  "         
         else                                     
            cSql += __Campo +" = " + SR_cDBValue( __Dados ) +", "
         endif
         __atual    :=  ajusta_type_dados(__dados)
         __anterior :=  ajusta_type_campo(__dados,__campo)
         if __atual <> __anterior
            _log_item += "Coluna :"+__Campo+" > de ["+rtrim(__anterior)+"] para ["+rtrim(__atual)+"]. "+chr(13)+chr(10)
         endif                                 
      next
      cSql += "WHERE  nrecno ="+SR_cDBValue( mRegistro  )+" "      
      proc_sql(cSql)
      &__alias->( SR_DBRefresh() )
   else
      dbselectarea(__alias)
      if travareg()   
         _idlanc := &__alias->idlanc
         for i = 1 to __qtdeReg      
            __Campo  := _aCampo[i]         
            __Dados  := _aDados[i]   
            if __logs = "S"            
               __atual    :=  ajusta_type_dados(__dados)
               __anterior :=  ajusta_type_campo(__dados,__campo)
               if __atual <> __anterior
                  _log_item += "Coluna :"+__Campo+" > de ["+rtrim(__anterior)+"] para ["+rtrim(__atual)+"]. "+chr(13)+chr(10)
               endif                 
            endif
            &__alias->&__campo := __dados
         next
      endif
      &__alias->( dbcommit() )
      &__alias->( dbunlock() )
*      &__alias->( dbSkip(0) )                                            
   endif      
endif
__tab := __alias
if __logs = "S"
   log_cones(__acao, __tabela, _idLanc )                  
endif
dbselectarea(__tab)         
return .t.

e passo os parâmetro desta forma

   grava_dados("A","cfg_prog", { "dtimpcte", "hrimpcte" }, { mdtHoje, mhrHoje },  alias(), "N")

ta meio confuso mas ele monta certinho para gravar tanto em tabelas DBF quando em tabelas SQL.

 

mas meu foco seria como fazer isso sem o SQLRDD.

se alguem tiver algum exemplo...

 

 

 

 

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...