buscar la coincidencia en toda la cadena

buscar la coincidencia en toda la cadena

Postby artu01 » Tue Jan 24, 2017 12:30 am

Gente
el dbseek busca a partir del comienzo la coincidencia, se puede buscar la coincidencia dentro de toda la cadena a buscar?
similar a cuando se busca por nombre en los contactos del celular


Gracias
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: buscar la coincidencia en toda la cadena

Postby Sistem » Tue Jan 24, 2017 12:57 am

artu01
con xbrowse yo uso asi:
oLbx:lIncrFilter := .t.
oLbx:lSeekWild := .t.

@ 1, 1 SAY oLbx:oSeek PROMPT oLbx:cSeek PICTURE "@!" UPDATE OF oDlg PIXEL COLOR CLR_BLACK FONT oFont SIZE 220, 22 BORDER
FWH2008 | xHarbour | BCC74 | SQLRDD
User avatar
Sistem
 
Posts: 226
Joined: Sun May 13, 2012 7:52 am

Re: buscar la coincidencia en toda la cadena

Postby joseluisysturiz » Tue Jan 24, 2017 5:56 am

Creo esto te serviria, saludos... :shock:

AT()
Devuelve la posición de una subcadena dentro de una cadena de caracteres
------------------------------------------------------------------------------
Sintaxis

AT(<cBúsqueda>, <cDestino>) --> nPosición

Argumentos

<cBúsqueda> es la subcadena de caracteres que se va a buscar.

<cDestino> es la cadena de caracteres en la que se realiza la
búsqueda.

Devuelve

AT() devuelve la posición de la primera aparición de <cBúsqueda> dentro
de <cDestino>, como valor numérico entero. Si no se encuentra
<cBúsqueda>, AT() devuelve cero.

Descripción

AT() es una función de tratamiento de caracteres que se utiliza para
determinar la posición de la primera aparición de una subcadena dentro
de otra cadena. Si sólo necesita saber si una subcadena se encuentra
dentro de otra, utilice el operador $. Para encontrar la última
aparición de una cadena dentro de otra, utilice RAT().

Ejemplos

C Los ejemplos siguientes muestran la utilización normal de AT():

? AT("a", "abcde") // Resultado: 1
? AT("bcd", "abcde") // Resultado: 2
? AT("a", "bcde") // Resultado: 0
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: buscar la coincidencia en toda la cadena

Postby artu01 » Tue Jan 24, 2017 6:18 am

Gracias Jose Luis quizas no me haya dejado entender pero quiero que en un xbrowse conforme vaya digitando en una busqueda se vayan filtrando los registros segun mi cadena a buscar pero que no solamente la coincidiencia sea desde el principio sino que este sea en cualquier parte sobre el campo.
Creo que Sistem me ha dado una luz, probare y comento
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: buscar la coincidencia en toda la cadena

Postby Carlos Mora » Tue Jan 24, 2017 3:00 pm

Hola
Si la variable donde se encuentra lo que buscas se llama, por ejemplo, cSearch, y el campo donde buscas es Descrip, entonces usa el siguiente filtro

SET FILTER TO cSearch$Field->Descrip


El operador $ : a$b retorna .T. si a está dentro de b, en cualquier lugar. Tambien se puede hacer con AT(), pero $ hace lo que buscas.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: buscar la coincidencia en toda la cadena

Postby artu01 » Tue Jan 24, 2017 10:29 pm

Sistem wrote:artu01
con xbrowse yo uso asi:
oLbx:lIncrFilter := .t.
oLbx:lSeekWild := .t.

@ 1, 1 SAY oLbx:oSeek PROMPT oLbx:cSeek PICTURE "@!" UPDATE OF oDlg PIXEL COLOR CLR_BLACK FONT oFont SIZE 220, 22 BORDER

Sistem
Funciono Perfecto! .... eso si tuve que ponerle AUTOSORT al xbrowse que dicho sea de paso es una maravilla te ahorra
mucho codigo de programación

Mil gracias a todos
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: buscar la coincidencia en toda la cadena

Postby artu01 » Wed Jan 25, 2017 12:04 am

Sistem wrote:artu01
con xbrowse yo uso asi:
oLbx:lIncrFilter := .t.
oLbx:lSeekWild := .t.

@ 1, 1 SAY oLbx:oSeek PROMPT oLbx:cSeek PICTURE "@!" UPDATE OF oDlg PIXEL COLOR CLR_BLACK FONT oFont SIZE 220, 22 BORDER

Ahora tengo otro problema como es que le quito el filtro al xbrowse, puse lo de abajo pero no resulta no me aparecen todos los registros.
Code: Select all  Expand view  RUN

oBrw:lIncrFilter := .f.
oBrw:lSeekWild := .f.
oBrw:cFilterFld := ""
TABLA->(ORDSCOPE(TOPSCOPE,NIL))
TABLA->(ORDSCOPE(BOTTOMSCOPE,NIL))
 
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: buscar la coincidencia en toda la cadena

Postby artu01 » Wed Jan 25, 2017 12:24 am

fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 52 guests