EDUTEK Posted April 3, 2019 Report Share Posted April 3, 2019 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... Quote Link to comment Share on other sites More sharing options...
ADutheil Posted April 4, 2019 Report Share Posted April 4, 2019 Veja http://wiki.fivetechsoft.com/doku.php?id=fwh_ado_api#fwh_ado_api_examples 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.