Jump to content
Fivewin Brasil

FOR em xBrowse


Theotokos

Recommended Posts

Boa Noite!!!!

Em clipper eu usava este comando abaixo para mostrar em um browse apenas os registro que desejava (Como um Filtro):

  oObject := tbrowsedb(08,03,22,76)
  *
  oObject:While      := {|| .T. }
  oObject:For        := {|| Empty(VA_DATPAGO) .And. Empty(VA_VALPAGO) }
NO FIVEWIN COM XBROWSE TEM COMO FAZER ISTO?
Link to comment
Share on other sites

Bem, como vc está mudando, creio que terá que estudar a xBrowse para pode utilizar da sua maneira, o jeito mais fácil será pegar a xBrowse.prg na pasta ..\FWH\source em conjunto com o xBrowse.ch da pasta ..\FWH\include e fazer testes, entender como ele apresenta os dados para não mudar muito o antigo com o novo.

Link to comment
Share on other sites

Boa Noite!!!!

Em clipper eu usava este comando abaixo para mostrar em um browse apenas os registro que desejava (Como um Filtro):

  oObject := tbrowsedb(08,03,22,76)
  *
  oObject:While      := {|| .T. }
  oObject:For        := {|| Empty(VA_DATPAGO) .And. Empty(VA_VALPAGO) }
NO FIVEWIN COM XBROWSE TEM COMO FAZER ISTO?

Use o OrdScope(), esta função faz um bom trabalho. Veja um exemplo para datas inicial e final

Alias->(OrdScope(TOPSCOPE,Dtos(dIni_Mes)) )
Alias->(OrdScope(BOTTOMSCOPE,Dtos(dFim_Mes)) ), no caso de datas sua indexação fica melhor usando a funçao Dtos(), daí é só utilizar o xBrowse que os dados serao apresentados conforme o OrdScope(). Aqui utilizei ono exemplo datas, mas pode ser qualquer campo/variével indexados
Link to comment
Share on other sites

Use o OrdScope(), esta função faz um bom trabalho. Veja um exemplo para datas inicial e final

Alias->(OrdScope(TOPSCOPE,Dtos(dIni_Mes)) )
Alias->(OrdScope(BOTTOMSCOPE,Dtos(dFim_Mes)) ), no caso de datas sua indexação fica melhor usando a funçao Dtos(), daí é só utilizar o xBrowse que os dados serao apresentados conforme o OrdScope(). Aqui utilizei ono exemplo datas, mas pode ser qualquer campo/variével indexados

Vlw! Mas desta forma precisa que esteja indexado por Data por exemplo... Eu Preciso que esteja em ordem de Número do Pedido...

Link to comment
Share on other sites

Vlw! Mas desta forma precisa que esteja indexado por Data por exemplo... Eu Preciso que esteja em ordem de Número do Pedido...

Vc pode fazer por qualquer variável, por ex.: Ped_Ini e Ped_Fim, então vc informa o pedido inicial e final para o OrdScope, assim:

Alias->(OrdScope(TOPSCOPE,Ped_Ini) )
Alias->(OrdScope(BOTTOMSCOPE,Ped_Fim) )
Link to comment
Share on other sites

Vc pode fazer por qualquer variável, por ex.: Ped_Ini e Ped_Fim, então vc informa o pedido inicial e final para o OrdScope, assim:

Alias->(OrdScope(TOPSCOPE,Ped_Ini) )
Alias->(OrdScope(BOTTOMSCOPE,Ped_Fim) )

Então não precisa estar indexado pelo campo em que vou pesquisar? Vou testar isto, ai vai facilitar a minha vida. rsrsrsrs Vlw!!! Obgdão!!!

Link to comment
Share on other sites

Vc pode fazer por qualquer variável, por ex.: Ped_Ini e Ped_Fim, então vc informa o pedido inicial e final para o OrdScope, assim:

Alias->(OrdScope(TOPSCOPE,Ped_Ini) )
Alias->(OrdScope(BOTTOMSCOPE,Ped_Fim) )

Meu amigo, testei mas não dá não.... Tem mesmo que utilizar o indice correspondente ao campo em que desejo filtrar...

Function BcDdCliente(cP,cC,oB)
    Local cPro1 := cP:cText()
    Local cPro2 := cP:cText()
    *
    OrdScope( 0, NIL )
    OrdScope( 1, NIL )
    *
    Do Case
       Case AllTrim(cC) = "Nome Fantasia/Nome Cliente"
           dbSetOrder( 2 )     // define a ordem de filtro 
            ordScope( 0, RTrim(cPro1) )   // TOP (De...)
            ordScope( 1, RTrim(cPro2) )   // BOTTOM (..Até)
            dbGoTop() 
       Case AllTrim(cC) = "Razão Social/Apelido"
           dbSetOrder( 5 )     // define a ordem de filtro 
            ordScope( 0, RTrim(cPro1) )   // TOP (De...)
            ordScope( 1, RTrim(cPro2) )   // BOTTOM (..Até)
            dbGoTop() 
      Case AllTrim(cC) = "CNPJ/CPF"
           dbSetOrder( 3 )     // define a ordem de filtro 
            ordScope( 0, RTrim(cPro1) )   // TOP (De...)
            ordScope( 1, RTrim(cPro2) )   // BOTTOM (..Até)
            dbGoTop() 
    EndCase
    
    oBrw:Refresh()
        
Return(.T.)
 
Link to comment
Share on other sites

Meu amigo, testei mas não dá não.... Tem mesmo que utilizar o indice correspondente ao campo em que desejo filtrar...

Function BcDdCliente(cP,cC,oB)
    Local cPro1 := cP:cText()
    Local cPro2 := cP:cText()
    *
    OrdScope( 0, NIL )
    OrdScope( 1, NIL )
    *
    Do Case
       Case AllTrim(cC) = "Nome Fantasia/Nome Cliente"
           dbSetOrder( 2 )     // define a ordem de filtro 
            ordScope( 0, RTrim(cPro1) )   // TOP (De...)
            ordScope( 1, RTrim(cPro2) )   // BOTTOM (..Até)
            dbGoTop() 
       Case AllTrim(cC) = "Razão Social/Apelido"
           dbSetOrder( 5 )     // define a ordem de filtro 
            ordScope( 0, RTrim(cPro1) )   // TOP (De...)
            ordScope( 1, RTrim(cPro2) )   // BOTTOM (..Até)
            dbGoTop() 
      Case AllTrim(cC) = "CNPJ/CPF"
           dbSetOrder( 3 )     // define a ordem de filtro 
            ordScope( 0, RTrim(cPro1) )   // TOP (De...)
            ordScope( 1, RTrim(cPro2) )   // BOTTOM (..Até)
            dbGoTop() 
    EndCase
    
    oBrw:Refresh()
        
Return(.T.)
 

TeoThokos,

Veja, o campo que vc quer pesquisar tem que está indexado, o que a função OrdScope faz é filtrar os registros para o intervalo que quer mostrar no XBRowse.

Outro detalhe, chame a função Alias->(DbGotop() ) apos a função OrdScope().

Link to comment
Share on other sites

TeoThokos,

Veja, o campo que vc quer pesquisar tem que está indexado, o que a função OrdScope faz é filtrar os registros para o intervalo que quer mostrar no XBRowse.

Outro detalhe, chame a função Alias->(DbGotop() ) apos a função OrdScope().

Vc está usando a função Rtrim() para indexar os campos?, se não retire-a quando chamar o campo.

Link to comment
Share on other sites

Vc está usando a função Rtrim() para indexar os campos?, se não retire-a quando chamar o campo.

Vlw w muito Obrigado.... Com OrdScope funciona perfeitamente, utilizo em outras situações, é que nesta especifica eu preciso que esteja indexado por PEDIDO, e filtrar os dados por (Data Inicial e Data Final) e um outra opção que filtra os dados por (Nome Cliente) mas tudo isto permanecendo a ordem (indice) por PEDIDO...

Por isso estava tentando a opção do inicio do topico:

oObject := tbrowsedb(08,03,22,76)

*

oObject:While := {|| .T. }

oObject:For := {|| Empty(VA_DATPAGO) .And. Empty(VA_VALPAGO) }

MAS TAMBEM NAO FILTROU NADA....

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...