Página 1 de 1

Pesquisa sensitiva no xbrowse

Enviado: 29 Mai 2015 09:10
por Daiane
Pessoal,to tentando usar a pesquisa sensitiva em alguns browses que criei,
mas estranhamente em alguns funciona e em outros não
e eu utilizo da mesma forma.

Código: Selecionar todos

	@ 10,10 XBROWSE ::xBrw;
		FIELDS 12->CODS, 12->NOMES, 12->TIPOST, 12->CPF;
		HEADERS "Código", "Nome", "Tipo", "CPF";
		OF ::oChild SIZE -10,altura PIXEL;// FASTEDIT;
		ON DBLCLICK ::IncOuAlt(.F.) //ON LEFT CLICK ::RefreshButtons()//CadSocTomadores:RefreshButtons()
		::xBrw:bSeek            := {|c| 12->(DbSeek( Upper( c ) )) } 
Neste caso ele ta fazendo a pesquisa pelo codigo,mas eu quero que faça pelo nome.
Utilizei dessa mesma forma em outro browse e ele pesquisou pelo nome e não código.

Alguém pode me ajudar?
Então como eu faço para definir qual campo será feito a pesquisa sensitiva?
pensei q ao clicar no campo ele ja faria a pesquisa q eu queira,mas isso n ta acontecendo.

Pesquisa sensitiva no xbrowse

Enviado: 29 Mai 2015 09:54
por Kapiaba

Código: Selecionar todos

#include "FiveWin.Ch"
#include "xbrowse.ch"
#include "hbcompat.ch"

//----------------------------------------------------------------------------//

Function Main()

   local oRs, oDlg, oBrw, oCbx, oFont
   local lWildSeek   := .f.
   local nOpt        := 1

   oRs         := GetRecSet()
   oRs:Sort    := oRs:Fields( 0 ):Name

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
   DEFINE DIALOG oDlg SIZE 900,400 PIXEL ;
      TITLE FWVERSION ;
      FONT oFont

   @ 30,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
      DATASOURCE oRs AUTOCOLS AUTOSORT ;
      CELL LINES NOBORDER

   WITH OBJECT oBrw
      :Married:SetCheck()
      :bClrSel       := { || { CLR_BLACK,CLR_HGRAY } }
      :nStretchCol   := STRETCHCOL_WIDEST
      //
      :CreateFromCode()
   END

   @ 10,10 COMBOBOX nOpt PROMPTS { "Starting With", "Containing" } ;
      SIZE 60,14 PIXEL OF oDlg  ;
      ON CHANGE ( oBrw:lSeekWild := ( nOpt == 2 ), ;
                  oBrw:Refresh(), oBrw:SetFocus() )

   @ 10, 80 SAY oBrw:oSeek PROMPT oBrw:cSeek SIZE 80,10 PIXEL OF oDlg ;
      COLOR CLR_RED,CLR_YELLOW

   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT ( oBrw:SetFocus(), .f. )

   RELEASE FONT oFont
   oRs:Close()
   oRs:ActiveConnection:Close()

Return nil

//----------------------------------------------------------------------------//

static function GetRecSet()

   local oRs, oCn
   local cStr := "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ;
                 "c:\fwh\samples\;Extended Properties=dBASE III;" + ;
                 "User ID=Admin;Password=;"

   if ( oCn := FW_OpenAdoConnection( cStr ) ) == nil
      MsgStop( "Connection Fail" )
      QUIT
   elseif ( oRs := FW_OpenRecordSet( oCn, ;
      "SELECT FIRST,CITY,MARRIED,HIREDATE,SALARY FROM CUSTOMERS" ) ) == nil
      MsgStop( "CUSTOMERS can not be opened" )
      oCn:Close()
      QUIT
   endif

return oRs

//----------------------------------------------------------------------------//
 

Pesquisa sensitiva no xbrowse

Enviado: 29 Mai 2015 09:57
por Kapiaba

Pesquisa sensitiva no xbrowse

Enviado: 29 Mai 2015 10:06
por Kapiaba

Código: Selecionar todos

//--Testando Pesquisa Dinamina--//		Arthur Silvestre
	cCampo:="Codigo"
	If Select("cAlias")=0
	   use 'SuaTabela' shared new alia cAlias
	   if neterr()
	      mendisp()
	      close data
	      retu .f.
	   endif
	   set index to cIndex
	endif
	select cAlias
	set filter to
	*
	oBrwMerca:= TxBrowse():New( oDlgIncOrc )   
	oBrwMerca:CreateFromResource( 361 )   
	oBrwMerca:cAlias := 'cAlias'
	oBrwMerca:bGoTop()
	*
	oBrwMerca:lHeader 	  := .F.
        oBrwMerca:lHScroll        := .F.
        oBrwMerca:lVScroll        := .F.
	oBrwMerca:nMarqueeStyle   :=  5
	oBrwMerca:lAdjusted 	  := .T.
	oBrwMerca:lRecordSelector := .F.
	oBrwMerca:lUpdate         := .T.
	*
   nvalor=0
	ADD COLUMN oCol TO XBROWSE oBrwMerca DATA cAlias->nomepro TITLE "Nome" SIZE 328.3
   REDEFINE GET oNomepro var vnomepro Pict "@!" ID 4020 OF oDlgIncOrc;
   ON CHANGE (BcDdProduto(oNomepro,cCampo,oBrwMerca), oDlgIncOrc:Refresh() ) valid ValidDoGet(nvalor)
   oNomepro:bKeyChar	 := {|nKey| (nvalor:=0,IIF ( nKey == VK_RETURN .or. nKey == VK_TAB , nvalor:=1 , )) }
   oBrwMerca:bKeyChar := {|nKey| IIF( nKey == VK_RETURN, {vnomepro:=pro->nomepro,onomepro:Refresh(),vcodipro:=pro->codipro,ocodipro:Refresh(),oBrwMerca:Hide(),oBrwMerca:Refresh(),xsetfocus(oquantid)},)}




//----------------------------------------------------------------------------//
Function BcDdProduto(cP,cC,oB)
	Local cPro := cP:cText()

	if empty(cPro)
		oBrwMerca:Hide() ; oBrwMerca:Refresh()
	else
		oBrwMerca:Show() ; oBrwMerca:Refresh()
	endif

   set order to 2
	dbSetOrder( INDEXORD() )     // define a ordem de filtro 
	ordScope( 0, RTrim(cPRO) )   // TOP (De...)
	ordScope( 1, RTRim(cPro) )   // BOTTOM (..Até)
	* 
	dbGoTop() 
	oB:Refresh()
Return(.T.)
//----------------------------------------------------------------------------//
Function ValidDoGet(nvalor)
if nvalor=1
	oBrwMerca:Hide()
	oBrwMerca:Refresh()
	sysrefresh()
	select cAlias
	if	!eof()
		vnomepro:=cAlias->nomepro; onomepro:refresh()
		vcodipro:=cAlias->codipro; ocodipro:Refresh()
	endif
	xsetfocus(oquantid)
	oDlgIncOrc:Refresh()
else
	oDlgIncOrc:Refresh()
	oBrwMerca:Setfocus()
	sysrefresh()
endif
Return .t.

Pesquisa sensitiva no xbrowse

Enviado: 29 Mai 2015 10:07
por Kapiaba

Código: Selecionar todos

No resource crio :- Browse   - Combo : Cliente Selecionar pelo qual campo deseja procurar 
- Get : onde vai digitar o que deseja procurar.

  DEFINE DIALOG oDlg RESOURCE "DLG_CON_MER"  TITLE "..:: Manutenção de Dados .::. PRODUTOS ::.."
	*
   oDlg:lTransparent := .T.
   oDlg:lHelpIcon    := .F.
   *
	oBrwMerca := TxBrowse():New( oDlg )   
	oBrwMerca:CreateFromResource( 4002 )   
	oBrwMerca:cAlias := 'BanMerca'   
	*
   ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_GENERICO TITLE ""           			SIZE 032 ALIGN LEFT
	*
   ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_FAMILIA  TITLE "Família"    			SIZE 150            
	ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_CODBAR   TITLE "Codigo de Barras" 	SIZE 150 					 
   ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_VENDA    TITLE "Pr.Venda"   			SIZE 100 COLORS CLR_HRED ALIGN RIGHT PICTURE "@E R$99,999.99"
   ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_QUANTIDA TITLE "Qtde"       			SIZE 080 COLORS CLR_HRED ALIGN RIGHT PICTURE "@E 9,999.99"
   ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_DESCRICA TITLE "Descrição"  			SIZE 450 COLORS CLR_HRED
	*
   ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_CODIGO   TITLE "Código"     			SIZE 080                 
   ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_REFERENC TITLE "Cod.Peça"    			SIZE 100
	*
   ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_DENTRADA TITLE "Dt.Ult.Entrada"   	SIZE 100 
   ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_QENTRADA TITLE "Qt.Ult.Entrada"   	SIZE 100 
	*
   ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_DSAIDA   TITLE "Dt.Ult.Saída"     	SIZE 100 
   ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_QSAIDA   TITLE "Qt.Ult.Saída"     	SIZE 100 
	*
   ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_DATACADA TITLE "Dt.Cadastro"        SIZE 100 
   ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_DALTERA  TITLE "Dt.Ult.Alteração"   SIZE 100 
	*
	ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_CUSTO    TITLE "Pr.Custo"  			SIZE 150 COLORS CLR_HRED ALIGN RIGHT PICTURE "@E R$99,999.99"
	*
	ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_PERMITIR TITLE "Estoque" SIZE 50
	*
	REDEFINE COMBOBOX oCbx VAR cCampo PROMPTS {"Descrição","Código","Code Bar","Cod.Peça","Família","Aplicação"} UPDATE ID 108 OF oDlg
	*
	REDEFINE GET oGet VAR cProcura ID 106 OF oDlg ON CHANGE (BcDdProduto(oGet,cCampo,oBrwMerca), oDlg:Refresh())
	*
   REDEFINE BUTTON ID 107 OF oDlg ACTION (EditProduto(1), oBrwMerca:Refresh(), oDlg:Update(), oDlg:Refresh()) When lS_Cadastro
   REDEFINE BUTTON ID 105 OF oDlg ACTION (oDlg:End())
   REDEFINE BUTTON ID 102 OF oDlg ACTION (EditProduto(2), oBrwMerca:Refresh(), oDlg:Update(), oDlg:Refresh()) When lS_Altera
   REDEFINE BUTTON ID 103 OF oDlg ACTION (Excluir(), oBrwMerca:Refresh(), oDlg:Update(), oDlg:Refresh()) When lS_Exclui
   *
	oBrwMerca:nRowHeight 			:= 35
	oBrwMerca:lColDividerComplete := .f.
	oBrwMerca:nDataLines          := 1    // Number of lines of the data rows
   oBrwMerca:nHeaderLines        := 1    // Number of lines of the header    
	oBrwMerca:nFooterLines        := 1    // Number of lines of the footer    
	oBrwMerca:nDataType           := 0    // Data type to be used: 0->rdd, 1->array, ... (more to come) If navigation codeblocks are not specified then get automatically initialized when adjusting the browse depending on this DATA value
	oBrwMerca:nHeaderHeight		 	:= 25
	oBrwMerca:nColDividerStyle    := 2    // Column divider style: 0 No lines 1 Black line 2 Dark gray line 3 Raised 4 Inset 5 Fore Color 6 Light gray    
	oBrwMerca:nRowDividerStyle    := 2    // Column divider style: 0 No lines 1 Black line 2 Dark gray line 3 Raised 4 Inset 5 Fore Color 6 Light gray    
	oBrwMerca:nMarqueeStyle       := 4    // Marquee style (row selected) 0 No Marquee 1 Dotted cell 2 Solid cell 3 Highlight cell 4 Highlight row & Raise Cell 5 Highlight row 6 Highlight row & multiselect 
	oBrwMerca:bSeek               := {|c| cProcura := Pad(C,30), oGet:Refresh(), DbSeek(Upper( c )) }
	oBrwMerca:bClrSelFocus			:= {|| {cCorFrente, cCorfundo} }
	oBrwMerca:bClrSel      		 	:= {|| {cCorFrente, cCorfundo} }
	oBrwMerca:bClrStd 				:= {|| {cCorFrente, IIF( BANMERCA->( OrdKeyNo() )%2 == 0, CLR_WHITE, nRGB(232,232,232) ) }}
	oBrwMerca:SetRDD(.F.)
	*
	oBrwMerca:lAllowRowSizing 		:= .F.
	oBrwMerca:lAllowColSwapping   := .F.
	oBrwMerca:lAllowColHiding     := .F.
	*
	oBrwMerca:aCols[3]:oDataFont := oFont
	oBrwMerca:aCols[4]:oDataFont := oFont
	oBrwMerca:aCols[5]:oDataFont := oFont
	oBrwMerca:aCols[6]:oDataFont := oFont
	oBrwMerca:aCols[7]:oDataFont := oFont
	oBrwMerca:aCols[8]:oDataFont := oFont
	*
	oBrwMerca:aCols[5]:AddBmpFile( "BMP\Organiza.bmp" )
	oBrwMerca:aCols[5]:nHeadBmpNo    := 0
	oBrwMerca:aCols[5]:nHeadBmpAlign := 1
	*
	oBrwMerca:aCols[7]:AddBmpFile( "BMP\Organiza.bmp" )
	oBrwMerca:aCols[7]:nHeadBmpNo    := 1
	oBrwMerca:aCols[7]:nHeadBmpAlign := 1
	*
   oBrwMerca:aCols[5]:bLClickHeader := {|| Sel("BanMerca",1), oBrwMerca:aCols[5]:nHeadBmpNo := 1, oBrwMerca:aCols[7]:nHeadBmpNo := 0,oBrwMerca:Refresh() }
   oBrwMerca:aCols[7]:bLClickHeader := {|| Sel("BanMerca",2), oBrwMerca:aCols[5]:nHeadBmpNo := 0, oBrwMerca:aCols[7]:nHeadBmpNo := 1,oBrwMerca:Refresh() }
   *
	oBrwMerca:aCols[1]:AddBmpFile( "BMP\UP.Bmp" )
	oBrwMerca:aCols[1]:AddBmpFile( "BMP\DOWN1.Bmp" )
	oBrwMerca:aCols[1]:bBmpData 		 := { || If(BanMerca->M_PERMITIR,1,If( BanMerca->M_QUANTIDA > M_EMINIMO, 1, 2 )) }
	oBrwMerca:aCols[1]:bStrData 		 := { || "" }
	oBrwMerca:aCols[1]:nDataBmpAlign := 3
   *
	If lS_Altera
		oBrwMerca:aCols[4]:nEditType     := EDIT_GET
	   oBrwMerca:aCols[4]:bOnPostEdit   := {|o,x| RecLock(),FieldPut( FieldPos("M_VENDA"), x ),UnLockRecord() }
	   oBrwMerca:aCols[4]:cEditPicture  := "@E 9,999.99"
	   oBrwMerca:aCols[4]:lEditBorder	 := .f.
	   oBrwMerca:aCols[4]:bEditValid	 := {|| !Empty(M_VENDA), oBrwMerca:SetFocus(), .t. }  //	nPosTmp:= RecNO(), oBrwMerca:Refresh(.t.), DbGoTo(nPosTmp), .t. }
		*
		oBrwMerca:aCols[5]:nEditType     := EDIT_GET
	   oBrwMerca:aCols[5]:bOnPostEdit   := {|o,x| GravaAltQtde(x) }
	   oBrwMerca:aCols[5]:cEditPicture  := "@E 9,999.99"
	   oBrwMerca:aCols[5]:lEditBorder	 := .f.
	   oBrwMerca:aCols[5]:bEditValid	 := {|| oBrwMerca:SetFocus(), .t. } // nPosTmp:= RecNO(), oBrwMerca:Refresh(.t.), DbGoTo(nPosTmp), .t. }
	End
   *
   oBrwMerca:bLDblClick := {|| If(MsgYesNo("Imprimir Folha MESA?"),PrtMesa(M_CODIGO),) }
   oBrwMerca:cToolTip	 := "- Dois Clique no Produto para Imprimir Folha MESA"
   *
   oBrwMerca:SetFocus()
   oBrwMerca:lFastEdit := .t.
   *
	ACTIVATE DIALOG odlg CENTER  
	*
	DbCloseAll()
Return
*
*
*
Function BcDdProduto(cP,cC,oB)
	Local cPro := cP:cText()
	
	Do Case
	   Case AllTrim(cC) == "Descrição"
	      Sel(DBF(),2)
      Case AllTrim(cC) == "Família"    // Abre o Arquivo em Ordem Familia
         Sel(DBF(),4)      
      Case AllTrim(cC) == "Aplicação"  // Abre o Arquivo em Ordem Aplicacao
         Sel(DBF(),3)
      Case AllTrim(cC) == "Código"     // Abre o Arquivo em Ordem Codigo
         Sel(DBF(),1)
      Case AllTrim(cC) == "Cod.Peça"   // Abre o Arquivo em ordem Cod.Peça
         Sel(DBF(),5)
      Case AllTrim(cC) == "Code Bar"   // abre o Arquivo em ordem codigo de Barras
         Sel(DBF(),6)
    EndCase
	*                  
   dbSetOrder( INDEXORD() )     // define a ordem de filtro 
	ordScope( 0, RTrim(cPRO) )   // TOP (De...)
	ordScope( 1, RTRim(cPro) )   // BOTTOM (..Até)
	* 
	dbGoTop() 
	oB:Refresh()
	*
Return(.T.)

Pesquisa sensitiva no xbrowse

Enviado: 29 Mai 2015 11:37
por Daiane
fiz dessa forma mas não adiantou

oBrwMerca:bSeek := {|c| cProcura := Pad(C,30), oGet:Refresh(), DbSeek(Upper( c )) }

Pesquisa sensitiva no xbrowse

Enviado: 29 Mai 2015 11:56
por janio
Até onde sei, o DbSeek() faz a procura pela CHAVE ATIVA do índice!

Vc está setando a chave correta???

Janio

Pesquisa sensitiva no xbrowse

Enviado: 29 Mai 2015 11:57
por Kapiaba

Código: Selecionar todos

FUNCTION browqry( oQry, cVar, aCampos, aTitulos )

   LOCAL oWnd, oDlg, oBrow, cCodigo := cVar, aBtn[2]

   IF cVar == NIL
      cCodigo := ""
   ENDIF

   DEFINE DIALOG oDlg RESOURCE "DLG_BRW_BUSCAR" of oWnd ;
      TITLE "Seleccione " + aTitulos[1]

   oQry:SetOrder( aCampos[2] ) // ORDENO POR NOMBRE/DESCRIPCION
   oQry:GOTOP(); oQry:REFRESH()

   oBrow := TXBrowse():New( oDlg )

   WITH OBJECT oBrow
        :SetDolphin( oQry, .t., .t., aCampos )
        :nMarqueeStyle    := MARQSTYLE_HIGHLROW
        :nColDividerStyle := LINESTYLE_BLACK
        :nStretchCol      := STRETCHCOL_LAST
        :lColDividerComplete := .t.
        :nHeaderHeight := 30
        :l2007 := .t.
        :lFooter := .t.
        :lRecordSelector := .t.
        :bClrStd := {|| IF( oQry:RecNo() % 2 == 0, {CLR_BLACK, CLR_WHITE}, {0, RGB(203,226,254)} ) }
        :bKeyDown := {|nKey| IIF( nkey == 13 ,;
                                ( cCodigo := oQry:FieldGet( aCampos[1]), oDlg:END() ), ) }
        :bLDblClick := {|| ( cCodigo := oQry:FieldGet( aCampos[1]), oDlg:END() ) }
   END WITH

   oBrow:aCols[1]:cHeader       := aTitulos[1]
   oBrow:aCols[1]:bStrData      := {|| IIF( oQry:LastRec() > 0 ,;
                                          cValToChar(oQry:FieldGet( aCampos[1] )), ) }
   oBrow:aCols[1]:nHeadStrAlign := AL_LEFT
   oBrow:aCols[1]:nDataStrAlign := AL_LEFT

   oBrow:aCols[2]:cHeader       := aTitulos[2]
   oBrow:aCols[2]:bStrData      := {|| IIF( oQry:LastRec() > 0 ,;
                                          cValToChar(oQry:FieldGet( aCampos[2] )), ) }
   oBrow:aCols[2]:nHeadStrAlign := AL_LEFT
   oBrow:aCols[2]:nDataStrAlign := AL_LEFT

   oBrow:CreateFromResource(100)

   REDEFINE SAY ID 101 OF oDlg // BUSQUEDA INCREMENTAL
   REDEFINE SAY oBrow:oSeek VAR oBrow:cSeek ;  // BUSQUEDA INCREMENTAL
      COLOR CLR_BLACK, nRGB( 128, 128, 255 ) ID 102 OF oDlg

   REDEFINE BUTTONBMP aBtn[1] ID 201 OF oDlg UPDATE ;
      ACTION ( cCodigo := oQry:FieldGet( aCampos[1] ), oDlg:END() ) ;
      BITMAP "OK32" PROMPT "Aceptar"

   REDEFINE BUTTONBMP aBtn[2] ID 202 OF oDlg UPDATE ;
      ACTION ( oDlg:END() ) ;
      BITMAP "CANCEL32" PROMPT "Cancelar"

   aBtn[2]:lCancel := .t.

   ACTIVATE DIALOG oDlg CENTER

RETURN ( cCodigo )
 

Pesquisa sensitiva no xbrowse

Enviado: 29 Mai 2015 14:30
por Daiane
É janio, vc está certo, a ordem esta setada para o codigo,pois tem q ficar em ordem crescente,
mas quero fzr a pesquisa por nome e não posso mudar a ordem

tentei fazer isso aq
::xbrowBusca:bSeek := {|c| 5->(ordsetfocus(2)), 5->(DbSeek( Upper( c ) )) }
Mas não deu certo,ele mudou a ordem para nome

alguma ideia?