Pesquisa string

Pesquisa string

Postby Wanderson » Thu Aug 02, 2007 5:22 pm

Olá,

Tenho uno campo de dbf caracter 25 chamdo NF que faz parte de una tag
conteúdo = "12345/12121/74844/41414"

Necessito filtrar todos los dados con parte de NF = "74844" existe una maneira senão dbsetfilter() ? Es muy lento.

NF faz parte de una TAG en média 100.000 registros

Salu2.
Wanderson
 
Posts: 332
Joined: Thu Nov 17, 2005 9:11 pm

Re: Pesquisa string

Postby ACC69 » Thu Aug 02, 2007 5:43 pm

Wanderson wrote:Olá,

Tenho uno campo de dbf caracter 25 chamdo NF que faz parte de una tag
conteúdo = "12345/12121/74844/41414"

Necessito filtrar todos los dados con parte de NF = "74844" existe una maneira senão dbsetfilter() ? Es muy lento.

NF faz parte de una TAG en média 100.000 registros

Salu2.


Hola usa la funcion ORDWILDSEEK(), te encontrara la palabra interna en la base de datos, no lo he probado, pero he visto ejemplos como de Jose Murugosa y funciona bien
Saludos
Adrian
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Postby Armando » Thu Aug 02, 2007 6:47 pm

Wanderson:

Tambien te recomiendo la función WildMatch().

Se usa así:

WildMatch("*DISCO",(cFile)->PRD_DES)

Te devuelve .T. si la palabra DISCO se encuentra en cualquier parte del campo PRD_DES.

Prueba a usar la busqueda con y sin asterico para que veas la diferencia.

WildSeek() y WildMatch() son para xHarbour (desconozco si Harbour la tiene).

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3105
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Postby Wanderson » Thu Aug 02, 2007 7:51 pm

Armando wrote:Wanderson:

Tambien te recomiendo la función WildMatch().

Se usa así:

WildMatch("*DISCO",(cFile)->PRD_DES)

Te devuelve .T. si la palabra DISCO se encuentra en cualquier parte del campo PRD_DES.

Prueba a usar la busqueda con y sin asterico para que veas la diferencia.

WildSeek() y WildMatch() son para xHarbour (desconozco si Harbour la tiene).

Saludos


Armando ficou demasiado lento usando WildMatch ya que necessito leitura en toda tabla, mira lo código

Do While ! oCtoPar:Eof()
oCtoPar:Load()

If WildMatch("*"+alltrim(nrnf),oCtoPar:NOTAS)
AAdd(VETCTOS,oCtoPar:SIGLAPAR+"-"+oCtoPar:CTO)
Endif
oCtoPar:Skip(+1)
Loop
Enddo

Salu2
Wanderson
 
Posts: 332
Joined: Thu Nov 17, 2005 9:11 pm

Postby Patricio Avalos Aguirre » Thu Aug 02, 2007 8:32 pm

si los datos son fijos puedes hacer indIces parcelados

Code: Select all  Expand view
INDEX ON SUBSTR( CAMPO, 1, 5 )  TAG PASO1
INDEX ON SUBSTR( CAMPO, 7, 5 )  TAG PASO2
INDEX ON SUBSTR( CAMPO, 13, 5 ) TAG PASO3
INDEX ON SUBSTR( CAMPO, 19, 5 ) TAG PASO3

luego puedes usar ordScope

OrdSetFocus( "paso3" )
OrdScope( 0, "74844" )
OrdScope( 1, "74844" )
browse()


espero que te sirva
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1060
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Postby Wanderson » Thu Aug 02, 2007 10:54 pm

Patricio Avalos Aguirre wrote:si los datos son fijos puedes hacer indIces parcelados

Code: Select all  Expand view
INDEX ON SUBSTR( CAMPO, 1, 5 )  TAG PASO1
INDEX ON SUBSTR( CAMPO, 7, 5 )  TAG PASO2
INDEX ON SUBSTR( CAMPO, 13, 5 ) TAG PASO3
INDEX ON SUBSTR( CAMPO, 19, 5 ) TAG PASO3

luego puedes usar ordScope

OrdSetFocus( "paso3" )
OrdScope( 0, "74844" )
OrdScope( 1, "74844" )
browse()


espero que te sirva


Patricio es o problema, los datos não são fijos hora tiene "12354/52451/1212" ora tiene apenas "35212" non puedo usar indices parcelados.

Gracias
Wanderson
 
Posts: 332
Joined: Thu Nov 17, 2005 9:11 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 49 guests