gibaf Posted January 21, 2023 Report Share Posted January 21, 2023 ola a todos imaginem essa query: select CODIGO, NOME, CPF from CLIENTES order by NOME o resultado dessa query foi apresentado no BROWSE (ordem do nome, conforme a query) agora imagina q tem a necessidade de se mudar para a ordem do CPF.. eis a questao: tem como fazer sem ter q fazer uma nova executa de uma nova query (agora pela ordem do CPF) ? ja q os dados ja estao apresentado e ter q, somente, alterar a sequencia (no caso, agora por CPF). se a query nao possibilita fazer isso, as VIEWs, permitem ? se sim, como faz ? obrigado !!! Quote Link to comment Share on other sites More sharing options...
gibaf Posted January 23, 2023 Author Report Share Posted January 23, 2023 estava pensando aqui... se, abrir 3 vezes (no caso) a tabela, conforme abaixo: cQuery1 := "select * from CLIENTES order by CODIGO" dbUseArea( .T. , "SQLRDD" , cQuery1 , "CLI_1" , .T. , .F. , , ) cQuery2 := "select * from CLIENTES order by NOME" dbUseArea( .T. , "SQLRDD" , cQuery2 , "CLI_2" , .T. , .F. , , ) cQuery3 := "select * from CLIENTES order by CPF" dbUseArea( .T. , "SQLRDD" , cQuery3 , "CLI_3" , .T. , .F. , , ) dai, as opces de ordens colocar num combobox, dai, ao selecionar a opcao do combobox fazer mudar o alias do browse, tipo, oBrw:cAlias := "CLI_"+Str(nCbox) claro, ao criar o browse o default ser o primeiro alias (ou a definir por parametro) o q vcs me dizem ? Quote Link to comment Share on other sites More sharing options...
Marca Posted January 30, 2023 Report Share Posted January 30, 2023 Giba. Transforme isso em array. o xBrowse com array vc ordena pela coluna que vc quiser abrindo uma única vez Quote Link to comment Share on other sites More sharing options...
marcioe Posted January 30, 2023 Report Share Posted January 30, 2023 Seguindo a ideia do (marcelo) ele manja do que está falando. Alem disso fica mais rapido. pois não precisa trafegar mais o dados na rede, tendo em vista que ele está em array Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted January 30, 2023 Report Share Posted January 30, 2023 Faria diferente, já que vc usa SQLRDD, criaria indices temporário nativo SQLRDD. dbUseArea( .T. , "SQLRDD" , "Clientes", "CLI" , .T. , .F. ) set index to ("codigo") set index to ("nome") additive set index to ("cpf") additive Depois usa dbsetorder(1..3) Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted January 30, 2023 Report Share Posted January 30, 2023 Poderia incrementar seu browse fazendo filtros obedecendo qualquer das ordens acima usando a função sr_setfilter e Sr_DbRefresh. Exemplo: na ordem 3 CPF. Listar tos os clientes de São Paulo. Dbsetorder (3) Cli->(sr_setfilter("a.cidade ='São Paulo'"),sr_dbrefresh(),dbgotop()) If Cli->(ordkeycount())>0 Cli->(xbrowse()) Endif 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.