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.
Pesquisa string
Re: Pesquisa string
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 bienWanderson 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.
Saludos
Adrian
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
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
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Armando ficou demasiado lento usando WildMatch ya que necessito leitura en toda tabla, mira lo códigoArmando 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
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
- Patricio Avalos Aguirre
- Posts: 1028
- Joined: Fri Oct 07, 2005 1:56 pm
- Location: La Serena, Chile
- Contact:
si los datos son fijos puedes hacer indIces parcelados
espero que te sirva
Code: Select all
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()
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
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
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.Patricio Avalos Aguirre wrote:si los datos son fijos puedes hacer indIces parcelados
espero que te sirvaCode: Select all
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()
Gracias