edutraini Posted April 19, 2021 Report Share Posted April 19, 2021 Boa tarde Pessoal tenho uma duvida sobre a rotina abaixo USE DCOTITE0 INDEX XCOTITE1,XCOTITE2,XCOTITE3,XCOTITE4 ALIAS COTATE NEW Sele Cotate dbsetorder(2) seek str(at_mCodcli,6) index on nrocota to &va_arqicot while cotate->codcli=at_mCOdcli .and. cotate->nrocota = at_mCotacao set index to xcotite1,xcotite2,xcotite3,xcotite4,&va_ARQIcot dbsetorder(5) Usando dbf eu faço um indice temporario para criar um filtro aonde ele vai pegar todos as cotacoes de um determinado cliente Qual a melhor forma para mudar essa rotina para sqlexpress usando sqlrdd Eu ja tentei usando o comando do rdd USE DCOTITE0 shared INDEX XCOTITE1,XCOTITE2,XCOTITE3,XCOTITE4 ALIAS COTATE NEW via "sqlrdd", mas ele nao esta criando o indice e tambem fica criando indice dentro da tabela no sql Obrigado A Quote Link to comment Share on other sites More sharing options...
Ariston Santos Posted April 20, 2021 Report Share Posted April 20, 2021 Pode ser que alguém tenha opinião diferente mas eu, particularmente, prefiro usar XBROWSE com ARRAY. Motivo: Com o tempo sua tabela vai conter milhares ou milhões de registros e quando isso acontecer, vai ficar muito lento o uso sem ARRAY. Neste tópico eu postei um exemplo com paginação: http://fivewin.com.br/index.php?/topic/29470-xbrowse-limitar-quantidade-de-registros/ Quote Link to comment Share on other sites More sharing options...
emotta Posted April 20, 2021 Report Share Posted April 20, 2021 Use Sr_setfilter pra fazer o filtro na tabela ou a melhor solução é usar o dbusearea passando o select desejado Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted April 20, 2021 Report Share Posted April 20, 2021 21 horas atrás, emotta disse: Use Sr_setfilter pra fazer o filtro na tabela ou a melhor solução é usar o dbusearea passando o select desejado Exatamente ! Uso estas duas opções, depende da situação a ser aplicada. Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted April 20, 2021 Report Share Posted April 20, 2021 Caso use sr_setfilter, poderá indexar nós padrões SQLRDD. Set index to "nrocota" additive // desta vc cria um índice temporário padrão SQLRDD. Com select + dbusearea() vc ordena "order by" Estas duas formas foram que encontrei para substituir o enunciado do escopo desta mensagem. Além da opção do usar XBROWSE com ARRAY, post de Ariston, muito útil, também uso o temporário em memória, uso recurso da própria SQLRDD, consequentemente uso índices em memória, fica legal c/xbrowse, inclusive otimiza conversão de .PRG de DBF para SQLRDD, segue abaixo: Sr_SetRddTemp("dbfcdx") SR_GetConnection():Exec( cCmdSql,,.t.,,"mem:test" ) Index on "nomedocampo" tag "01" memory temp->(dbgotop()) xbrowse() temp->(dbclosearea()) Quote Link to comment Share on other sites More sharing options...
edutraini Posted April 21, 2021 Author Report Share Posted April 21, 2021 Obrigado a todos vou fazer o teste depois eu falo Quote Link to comment Share on other sites More sharing options...
edutraini Posted April 22, 2021 Author Report Share Posted April 22, 2021 Bom dia a todos Fiz o teste usando o Sr_setfilter e a select Acabei optando pelo sr_setfilter pois na tela de cotacao os itens que estao no browse o cliente pode selecionar com um click o itens que ele vai enviar na cotacao Ja na opcao select toda vez que ele clicar em selecionar o item eu tinha que atualizar a base de dados e fazer um nova select Porisso acabei optando pelo sr_setfilter pois ele ja faz atualizao na hora Gostaria da opiniao de vcs sobre os pos e contra Obrigado Quote Link to comment Share on other sites More sharing options...
emotta Posted April 22, 2021 Report Share Posted April 22, 2021 tenho vários cadastros com SR_SETFILTER e funcionando bem o unico problema é que conforme ele navega pelas linhas do xbrowse é feita uma requisição para o SQL, vejo esse como unico inconveniente 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.