João Cezar Posted October 25, 2013 Report Share Posted October 25, 2013 Olá Tenho uma consulta de produtos com opção de filtro onde escolho 1-Produtos em Estoque ou 2-Produtos sem Estoque ou 3-Todos Produtos, tentei usar o setfilter() ficou lento em rede, não posso criar indices fixos nem temporarios, pensei em usar o metodo bskip do browse, mas não estou conseguindo fazer funcionar, alguem poderia me dar um exemplo ? Segue o que estou fazendo: oBrwConsul:bSkip := { | nRecs | SkipEstoq( nRadio, cAlias, nRecs ) } ... ... ... FUNCTION SkipEstoq( nRadio, cAlias, nRecords ) LOCAL nSkipped DEFAULT nRecords := 1 IF nRadio == 1 IF (cAlias)->PrEstq <= 0 ; IF( nRecords < 0, nRecords--, nRecords++ ); ENDIF ELSEIF nRadio == 2 IF (cAlias)->PrEstq > 0 ; IF( nRecords < 0, nRecords--, nRecords++ ) ; ENDIF ENDIF nSkipped := (cAlias)->( DbSkipper( nRecords ) )RETURN nSkipped Quote Link to comment Share on other sites More sharing options...
emotta Posted October 25, 2013 Report Share Posted October 25, 2013 Voce terá o mesmo problema do SetFilter... Se vc usa o SQLRDD use a funcao SR_SETFILTER e se for DBF aí a melhor opcao é indice temporario mesmo com condicional... mas como falou que nao pode ser essa ai complicou... Quote Link to comment Share on other sites More sharing options...
vagner Posted October 25, 2013 Report Share Posted October 25, 2013 Qual seria o motivo de não poder usar índices temporários ?, acho q seria a melhor saída para vc Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 25, 2013 Report Share Posted October 25, 2013 E o ORDSCOPE() pode usar. Quote Link to comment Share on other sites More sharing options...
vagner Posted October 25, 2013 Report Share Posted October 25, 2013 E o ORDSCOPE() pode usar. Kapi, Se ele não têm índice fixo, não dá pra usar OrdScope Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 25, 2013 Report Share Posted October 25, 2013 Kapi, Se ele não têm índice fixo, não dá pra usar OrdScope Tá SERTO, ai sem chance, tem que ser TEMPORÁRIO...abs, indo tomar umas brejas com meu amigo Decker. Quote Link to comment Share on other sites More sharing options...
João Cezar Posted October 26, 2013 Author Report Share Posted October 26, 2013 Essa aplicação, como estou migrando do clipper para fwh + xharbour ainda tem muita coisa em clipper então para manter a compatibilidade tenho de usar ainda o DBFNTX, a minha tabela de produtos já tem 15 indices criado então não posso criar mais indices fixos, como é uma pesquisa por descrição do produto eu uso o indice já criado apenas por descrição e faço um ORDSCOP a medida que o usuario vai digitando letra a letra, por isso não posso ficar criando indice temporario a cada letra que o usuario digitar. Quote Link to comment Share on other sites More sharing options...
SAOliveira Posted October 26, 2013 Report Share Posted October 26, 2013 Não se se esta funcionando mas tente em dicas - Busca/Pesquisa incremental Quote Link to comment Share on other sites More sharing options...
SAOliveira Posted October 26, 2013 Report Share Posted October 26, 2013 De uma olhada, que sabe serve ou te ajuda. **----------------------------------------------------------** STATIC FUNCTION BuscaCooperado() **----------------------------------------------------------** _nombusca:=Space(60) COP->(OrdSetFocus(2)) ; COP->(DBSeek("A")) DEFINE DIALOG oDlgBuscaCop RESOURCE "COP_CADASTRO_BUSCA" OF oDlg oDlgBuscaCop:cCaption:=" ..:: Localizar Cooperado no cadastro ::.." oDlgBuscaCop:lTransparent:=.F. oDlgBuscaCop:lHelpIcon:=.f. oDlgBuscaCop:oFont:=oPub:fNorm11 oDlgBuscaCop:SetColor(oPub:CorPreto,oPub:CorCinza) REDEFINE SAY ID 1001 OF oDlgBuscaCop FONT oPub:fNorm11 COLOR oPub:CorPreto,oPub:CorCinza REDEFINE GET Onombusca VAR _nombusca PICTURE "@!K" ID 101 OF oDlgBuscaCop FONT oPub:fBCour13 COLOR oPub:CorGet,oPub:CorFundoGet UPDATE ; on Change(Conteudo(Onombusca,nKey,oBrwBuscaCop)) REDEFINE xBrowse oBrwBuscaCop ID 201 OF oDlgBuscaCop Alias("COP") COLUMNS 1,2 oBrwBuscaCop:bKeydown := { |nkey| if(nkey == VK_RETURN,(_codcop:=COP->a_codcop,Ocodcop:Refresh(),oDlgBuscaCop:END()),NIL ) } oBrwBuscaCop:SetColor( PRETO,CINZACC ) oBrwBuscaCop:l2007 := .T. oBrwBuscaCop:lAllowRowSizing := .F. // Nao move as Linhas (nao sei) oBrwBuscaCop:lHScroll := .F. // Barra rolagem Horizontal oBrwBuscaCop:lVScroll := .T. // Barra rolagem vertical oBrwBuscaCop:lRecordSelector := .T. // Barra aponta registro lateral esquerda; oBrwBuscaCop:nRecSelColor := RGB(205,220,255) // cor da barra lateral pontador de linha oBrwBuscaCop:lAllowColSwapping := .F. // Click no header (.f.)Trava oBrwBuscaCop:nDataLines := 1 oBrwBuscaCop:lColDividerComplete := .T. // linha divisoria de colunas mesmo com tabela vazia. oBrwBuscaCop:bClrStd := {|| { AZUL,FundoGet } } // cor da linha sem focu oBrwBuscaCop:bClrSel := {|| { AZUL,FundoGet } } // cor da celula sem focu oBrwBuscaCop:bClrSelFocus := {|| { PRETO,RGB(188,210,238) } } // cor da celula em focu oBrwBuscaCop:bClrRowFocus := {|| { PRETO,RGB(188,210,238) } } // cor da coluna sem focu oBrwBuscaCop:nColDividerStyle := 4 // cor da divisao de coluna LINESTYLE_LIGHTGRAY oBrwBuscaCop:nRowDividerStyle := 4 // cor da divisao da linha LINESTYLE_LIGHTGRAY oBrwBuscaCop:nMarqueeStyle := 5 //MARQSTYLE_HIGHLROW // tipo de linha selecionada MARQSTYLE_HIGHLROW oBrwBuscaCop:nRowHeight := 20 oBrwBuscaCop:SetRDD() oBrwBuscaCop:lHeader := .T. // se vai mostrar header cabeçalho) oBrwBuscaCop:nHeaderLines := 1 oBrwBuscaCop:nHeaderHeight := 22 oBrwBuscaCop:bClrHeader := {|| {oPub:CorPreto,RGB(205,220,255) }} // cor do reader oBrwBuscaCop:aCols[1]:cHeader :="Cooperado" oBrwBuscaCop:aCols[1]:nHeadStrAlign:=AL_CENTER oBrwBuscaCop:aCols[1]:nDataStrAlign:=AL_LEFT oBrwBuscaCop:aCols[1]:bStrData :={|| COP->a_nomcop } oBrwBuscaCop:aCols[1]:oDataFont :=oPub:fBCour13 oBrwBuscaCop:aCols[1]:nWidth :=380 oBrwBuscaCop:aCols[2]:cHeader :="Sta" oBrwBuscaCop:aCols[2]:nHeadStrAlign:=AL_CENTER oBrwBuscaCop:aCols[2]:nDataStrAlign:=AL_CENTER oBrwBuscaCop:aCols[2]:bStrData :={|| IF(COP->a_fl1cop=="L","",COP->a_fl1cop) } oBrwBuscaCop:aCols[2]:oDataFont :=oPub:fBCour13 oBrwBuscaCop:aCols[2]:nWidth :=20 PCS_ATIVADIALOG('oDlgBuscaCop') Ocodcop:SetFocus() RETURN(.T.) **---------------------------------------------** Static Function Conteudo(oGetP,xKey,oDlgg) **---------------------------------------------** Local RetornoChave:="" MontaChaveBuscaArquivo(oGetP,xKey,oDlgg,@RetornoChave) IF(Len(AllTrim(retornochave))==0) _busca:="A" ELSE _busca:=AllTrim(RetornoChave) ENDIF COP->(DBSeek(_busca)) oBrwBuscaCop:Refresh() Return(.t.) **----------------------------------------------------** STATIC FUNCTION MontaChaveBuscaArquivo(oGetP,xKey,oDlgg,RetornoChave) **----------------------------------------------------** Local cChave:=(oGetP:oGet:Buffer)//,nPosAnt:=Recno() RetornoChave:=AllTrim(cChave) Return(RetornoChave) 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.