jbinfo Posted January 18, 2018 Report Share Posted January 18, 2018 Olá à todos, Estamos tentando usar SQLRDD aqui, porém estamos travando no uso do ordscope. Quando usamos o ordscope numa tabela mysql ordenada por código do produto para trazer os produtos do cod 101 até 119 , sendo que nesta tabela tem 500 produtos por exemplo: OrdScope( 0, 101 ); OrdScope( 1, 119 ) ao executar esta função o retorno é de 101 até 500 , trazendo todos produtos após 101, como se o segundo comando do ordscope não funcionasse. Alguém teria alguma dica quanto isso ao usar SQLRDD, a mesma função usanod DBFCDX funciona perfeitamente. Abraço, Tiago! Quote Link to comment Share on other sites More sharing options...
joaosolution Posted January 18, 2018 Report Share Posted January 18, 2018 Tiago Boa tarde Não seria melhor alterar a pesquisa para USE SQL com o filtro desejado? Att João Bosco Quote Link to comment Share on other sites More sharing options...
jbinfo Posted January 19, 2018 Author Report Share Posted January 19, 2018 Bom dia, João. Não queria fazer modificações nos fontes, para poder migrar diretamente para o SQLRDD. Mais esse comando USE SQL, é da SQLRDD ou é do fw/xharbour? Teria um exemplo? Saberia dizer se o ordscope, não funciona na sqlrdd? Quote Link to comment Share on other sites More sharing options...
emotta Posted January 19, 2018 Report Share Posted January 19, 2018 Que eu saiba ORDSCOPE não funciona em SQLRDD, sendo assim não tem como usar desta maneira. Você terá sim que criar desvios em seus fontes, principalmente para usar o que tem de melhor no SQL quando for o caso e quando não é o caso usar o melhor que a forma convencional (DBSKIP, ETC) Um detalhe importante é que a funcao SR_SETFILTER faz o filtro lá no SQL então você tem um ganho de performance com relação ao SET FILTER normal Faça assim mais ou menos assim: nCodIni := 1 nCodFin := 2 If BdSqlRdd() Sr_SetFilter("cod >= "+Sr_cDbValue(nCodIni)+" and cod <= "+Sr_cDbValue(nCodFin)) Else OrdScope( 1, 119 ) EndIf // aqui vc faz se processamento normal If BdSqlRdd() Sr_SetFilter("") // esse comando retira o filtro EndIf Quote Link to comment Share on other sites More sharing options...
jbinfo Posted January 19, 2018 Author Report Share Posted January 19, 2018 Obrigado emotta, vou testar! Quote Link to comment Share on other sites More sharing options...
sistem Posted January 21, 2018 Report Share Posted January 21, 2018 soh para constar, uso o ordscope com sqlrdd sem problema, e tem a seguinte funcao no sqlrdd => sr_SetGotopOnScope(.f.) // nao vai executar o dbgotop() automatico nos ordscope entao era para funcionar ai com vcs []s Quote Link to comment Share on other sites More sharing options...
joaosolution Posted January 22, 2018 Report Share Posted January 22, 2018 Tiago Não serão todos os comando de DBFCDX que irão funcionar diretamente com SQLRDD, a migração de uma RDD para outra nos exige adaptação ao novo RDD, desta forma alguns comandos de consulta e filtros eu tive que alterar. Outra coisa importante também é a questão de performance, pois utilizando comandos SQL o sistema fica mais rápido. Ex: cSql:=" SELECT Cod,Descricao,Valor From TabelaProd Where cod Between 101 and 119" SR_BeginTransaction() Try oSql := SR_GetConnection() Use (cSql) Alias "TabProd" NEW SHARED VIA "SQLRDD" Sr_CommitTransaction() Catch oErro SR_RollBackTransaction() // Retira texto com código do erro cError := Memoline(oErro:Description,100,2) // Grava LOG MemoWrit("error.log",pSql+CRLF+cError) //Trata códigos de erro If Alltrim(Left(cError,At("-",cError)-1)) == "42S22" MsgAlert("Nome de campos errado verifique!","Atenção") Else Throw( oErro ) Endif End Att João Bosco Quote Link to comment Share on other sites More sharing options...
jbinfo Posted January 25, 2018 Author Report Share Posted January 25, 2018 Sputnik...tem algum exemplo de como vc usa ordscope no SQLRDD ? Quote Link to comment Share on other sites More sharing options...
sistem Posted January 25, 2018 Report Share Posted January 25, 2018 DbSelectAreaSql("Cona") Cona->( OrdScope( 0, cCod_Cona ) ) Cona->( OrdScope( 1, cCod_Cona ) ) da mesma maneira que usava com dbf Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 4, 2018 Report Share Posted March 4, 2018 Nas versões mais recentes do SQLRDD o scope está funcionando? Quote Link to comment Share on other sites More sharing options...
sistem Posted March 5, 2018 Report Share Posted March 5, 2018 o ribeiro que mostra SR_Version() ? qual a sua versao? scope funciona Quote Link to comment Share on other sites More sharing options...
miragerr Posted March 6, 2018 Report Share Posted March 6, 2018 Ola, Boa noite Não uso mais OrderScop(), como ja estou em quase tudo 100% SQL puro, uso o SR_SetFilter(), muito melhor e facil de se usar. Espero ter ajudado. Quote Link to comment Share on other sites More sharing options...
emotta Posted March 6, 2018 Report Share Posted March 6, 2018 Ola, Boa noite Não uso mais OrderScop(), como ja estou em quase tudo 100% SQL puro, uso o SR_SetFilter(), muito melhor e facil de se usar. Espero ter ajudado. Também uso desta forma ou abro a workarea direto com o comando SQL. Como uma vez retornado o result set todo processamento fica em memória, fica muito mais rapido e evita transações ao SQL a cada skip, loop, etc... 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.