gibaf Posted August 26, 2009 Report Share Posted August 26, 2009 ola a todos !!! alguem tem uma solucao pra fazer "filtro" por expresao, de forma q a performance fique aceitavel em banco dbf com muitos registros ??? obrigado !!! Gilberto Frohlich - Toledo/PR giba_f@hotmail.com giba_f@yahoo.com.br xHarbour xBuild+Fivewin 2.7+PellesC+(Postgres+DB2) Quote Link to comment Share on other sites More sharing options...
gibaf Posted August 26, 2009 Author Report Share Posted August 26, 2009 ola a todos !!! alguem tem uma solucao pra fazer "filtro" por expresao, de forma q a performance fique aceitavel em banco dbf com muitos registros ??? obrigado !!! Gilberto Frohlich - Toledo/PR giba_f@hotmail.com giba_f@yahoo.com.br xHarbour xBuild+Fivewin 2.7+PellesC+(Postgres+DB2) Quote Link to comment Share on other sites More sharing options...
vagner Posted August 26, 2009 Report Share Posted August 26, 2009 Olá, Nesse caso, acho melhor vc montar um dbf temporário, fica rápido e vc pode filtrar qq coisa Ex.: Use Clientes ... Copy to CliAux for "GIBA" $ Upper(Nome) Vagner Wirts VI Encontro está chegando , não perca Quote Link to comment Share on other sites More sharing options...
LUIS1361303120 Posted August 26, 2009 Report Share Posted August 26, 2009 Vagner so uma perguntinha,, se usar isso ele vai jogar na memoria do computador ou vai criar um arquivo em disco,, pois uso esse tipo de filtro usando o ads do fivewin..,,, se esse for melhor vai salvar a minha pele em pesquisa por lei no dbf... pois eu faco assim: *----------------------------- Function PSLEM( nKey , oGet ) Local cFras, cChave SELE LEI LEI->(OrdSetFocus("LEIPESQ")) cFras := AllTrim( oGet:cTitle ) cChave:= "'"+CFRAS+"' $upper(PESQ1+' '+PESQ2+' '+PESQ3+' '+PESQ4+' '+PESQ5+' '+PESQ6+' '+PESQ7)" lei->(adssetaof(cchave)) IF EOF() SET FILTER TO lei->(ADSRefreshAOF()) BUCLEI() ENDIF verdLEI() statusl = 1 olbx1:GoTop() ; olbx1:refresh() return nil luis Quote Link to comment Share on other sites More sharing options...
vagner Posted August 26, 2009 Report Share Posted August 26, 2009 Olá Luiz, Não uso o ADS, me parece que no ADS, vc pode usar comandos sql, nesse caso eu passei para criar um arquivo temporário ou seja criar arquivo fÃsico, e vc pode criar com o Ãndice e dar uma append from tb, com certeza para o dbf (normal) fica muiiito mais rápido que um set filter da vida Vagner Wirts VI Encontro está chegando , não perca Quote Link to comment Share on other sites More sharing options...
LUIS1361303120 Posted August 27, 2009 Report Share Posted August 27, 2009 valeu,, testei esse comando, mas parece do jeito que eu faco a pesquisa so filtra daquele jeito, se uso o seek ou esse copy?? ele nem se mexe do lugar e nao retorna nenhum filtro,, nao sei o que por que ocorre isso, mas com o ads, eu nao sei como usar os comando de sql,, se tem que trocar de driver etc,,, se algum puder me ajudar ficarei grato, pois eu uso para pesquisa em um arquivo de leis que possui os seguintes campos: numero string pesq1 a pesq7 tudo texto e data e sao esse campos que filtro no momento ainda estou dando conta do recado mas se os registros comecarem a cresce ai nao sei qual sera a velocidade do sistema na pesqisa, mas obrigado, por que aprendi mais uma... luis Quote Link to comment Share on other sites More sharing options...
gibaf Posted August 27, 2009 Author Report Share Posted August 27, 2009 filtro no ads faz assim (fica muito rapido): xFiltro = "faz seu filtro" AdsSetAof( xFiltro ) Gilberto Frohlich - Toledo/PR giba_f@hotmail.com giba_f@yahoo.com.br xHarbour xBuild+Fivewin 2.7+PellesC+(Postgres+DB2) Quote Link to comment Share on other sites More sharing options...
gibaf Posted August 27, 2009 Author Report Share Posted August 27, 2009 hein Vagner ??? a sua dica, em tabelas com poucos registros tudo bem... mas qdo tem 30 mil, 50 mil ou 100 mil registros ??? como fica a performance ! q tem q ficar no piscar de olhos..rs obrigado !!!! Gilberto Frohlich - Toledo/PR giba_f@hotmail.com giba_f@yahoo.com.br xHarbour xBuild+Fivewin 2.7+PellesC+(Postgres+DB2) Quote Link to comment Share on other sites More sharing options...
vagner Posted August 27, 2009 Report Share Posted August 27, 2009 citação:hein Vagner ??? a sua dica, em tabelas com poucos registros tudo bem... mas qdo tem 30 mil, 50 mil ou 100 mil registros ??? como fica a performance ! q tem q ficar no piscar de olhos..rs obrigado !!!! Gilberto Frohlich - Toledo/PR giba_f@hotmail.com giba_f@yahoo.com.br xHarbour xBuild+Fivewin 2.7+PellesC+(Postgres+DB2) id=quote>id=quote>Para ficar num piscar de olhos, o mais fácil é fazer com OrdScope hehehehe, estou só mostrando que assim desse jeito fica mais rápido do que o SetFilter , agora como disse eu não uso o ADS Luiz, qndo vc cria um arquivo temporário vc precisa depois de criar, trabalhar com ele, senão ele não irá retornar mesmo Vc poderia também criar um Ãndice temporário ao invéz do DBF +- assim : Use Clientes .... Inde On Nome To ClieAux For "GIBA" $ Nome Use Clientes Inde ClieAux ... Vagner Wirts VI Encontro está chegando , não perca Quote Link to comment Share on other sites More sharing options...
gibaf Posted August 27, 2009 Author Report Share Posted August 27, 2009 eu ate uso o ads, mas nele nao to com o problema do filtro, q o AdsSetAof() faz rapidinho.... mas qdo eh configurado pro dbf, eh q eh o problema... tambem ja tentei o indice temporario... mas nesse caso eu tenho outro problema: digamos q a minha tabela tem 3 indices: 1-codigo 2-nome 3-fone qdo eu crio o indice temporario, ele vai criar um 4, mas eu preciso q o indices citados recebam o filtro, pq o cliente fica numa tela q pode mudar a ordem dos dados, pelos: 1-codigo 2-nome 3-fone q sao padroes da app. e o indice temporario, vai me criar um order 4 com o filtro, mas se o usuario resolver mudar a ordem pelo 1, ou 2 ou 3, melecou !!!! tendeu ??? ajudas e dicas, continuam bem vindas, por favor !!! obrigado !!!! Gilberto Frohlich - Toledo/PR giba_f@hotmail.com giba_f@yahoo.com.br xHarbour xBuild+Fivewin 2.7+PellesC+(Postgres+DB2) Quote Link to comment Share on other sites More sharing options...
aferra Posted August 27, 2009 Report Share Posted August 27, 2009 Ola Giba, tudo blz? eu resolvi utilizar o indice temporario desta forma e está indo bem claro que ainda não tenho um base de dados de 50 mil, mas estou nos 25 mil e ficou bem rapido. a forma que encontrei: // abre o banco com o alias de uso normal use tabela1 alias Tab1 new // abre o banco com o alias temporario use tabela1 alias tmp1 new index on codigo to codigo TEMPORARY browse() se quero trocar o indice faço assim index on nome to nome TEMPORARY gotop() obrw:refresh() depois dou um dbclosearea("tmp1") e tudo sumiu sem muito esquentar a cabeça, e vc pode usar da forma que precisar... Alessandroid=blue> FW20d+CL53b+Blk7+@Say+CDX FW9.06+xHb121+PellesC+CDX "O fracasso jamais me surpreenderá, se minha vontade de vencer for suficientemente forte..."id=red> 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.