Página 1 de 1

Busqueda Avanzada de Información

Enviado: 21 Mai 2010 16:27
por victorale07
hola:
tengo un programa en redes, el cual utilizo dbseek() con indices cdx, para la busqueda rapida de información.
Utilizo un campo en la base de datos llamado NOMBRE en el cual se ingresa el nombre+apellidos
ejemplo:
1 JUAN PEREZ SOTO
2 LUIS SOTO JIMENEZ
3 MARIO RAMIREZ GOMEZ
4 MARIO FERNANDEZ SOTO
5... ETC...

la Base de Datos es bastante grande, 20.000 Registros Aproximadamente.-

Pero necesito ubicar solo los de Apellidos SOTO, como lo puedo hacer para que la busqueda sea tan rápida como
la instrucción dbseek().-

Gracias.-

Busqueda Avanzada de Información

Enviado: 21 Mai 2010 16:40
por Pablo César
Hay una rotina ofrecida por el colega billy1943 en este tópico: https://pctoledo.org/forum/viewto ... EEK#p57649

Sinó, creo que deberias usar la funcion wildseek pero creo que es de la rdd Six e no de la cdx, averigue atraves de la opcion de menu "Busca" para ver como es.

Re: Busqueda Avanzada de Información

Enviado: 21 Mai 2010 17:30
por victorale07
gracias Pablo, voy a probar la rutina "procura.txt".

Re: Busqueda Avanzada de Información

Enviado: 21 Mai 2010 19:03
por Maligno
Hay una función llamada sx_WildSeek(), parte de la biblioteca SIX, que sirve exactamente para lo que quiere: buscar por cualquier parte del nombre. Ejemplo: sx_WildSeek("*SOTO") move el puntero para el primer registro que contiene el nombre parcial. Y una nueva llamada sx_WildSeek("*SOTO,.T.) continuará la búsqueda,desde la posición actual del puntero.
Por supuesto, esta biblioteca también tiene muchas características interesantes y otras herramientas que también pueden ser utilizadas.

Re: Busqueda Avanzada de Información

Enviado: 21 Mai 2010 19:10
por alaminojunior
Existe também a possibilidade de fazer a pesquisa com a função AT() do Clipper.

Código: Selecionar todos

Function Busca(arg) // arg = parte do nome para pesquisar
local dtmp:= {}, bnom:= subs(netname(),1,8), lugar:= recno() // matriz com estrutura da tabela temp. ; nome da tabela temp. 
aadd(dtmp,{"tmpcod","N",7,0})
aadd(dtmp,{"tmpnom","C",50,0})
aadd(dtmp,{"tmpcid","C",25,0})
dbcreate(bnom,dtmp) // cria tabela temp. que receberá os reg´s encontrados
use &bnom excl new // avre-se a tabela temp
sele cdcli000 // seleciona a tabela principal de clientes
dbgotop() 
do while !eof() 
   if at(alltrim(arg),clinom) > 0 // encontrou o registro
      &bnom->(dbappend())
      repl &bnom->tmpcod with clicod
      repl &bnom->tmpnom with clinom
      repl &bnom->tmpcid with clicid
      skip
   else
      skip
   endif
enddo
goto lugar
return &bnom->(reccount()) // aqui está retornando o número de reg´s para uma outra função que os exibirá 


Eu fazia uso desta função nos prg´s em Clipper e achava bem rápida, apesar da tabela principal ter cerca de 10.000 registros.

Re: Busqueda Avanzada de Información

Enviado: 21 Mai 2010 19:57
por Maligno
Funciona, claro. Mas o problema é a velocidade. Com um índice composto, a pesquisa parece até instantânea, mesmo que numa base de dados bem volumosa.

Busqueda Avanzada de Información

Enviado: 22 Mai 2010 09:17
por Pablo César
Hay una función llamada sx_WildSeek(), parte de la biblioteca SIX
Si, justamente a esa que yo me referia cuando dije que era de la RDD SIX, pero la RDD que el colega está usando, me parece que es CDX. Aunque creo que no es dificil de adaptar la SIX en lugar de CDX. Si no demuestra resultado favorable el ejemplo de la funcion procura.txt, entonces no tendrá mejor salida que emigrar para RDD SIX o desconosco que haya la misma funcion para CDX...

Re: Busqueda Avanzada de Información

Enviado: 22 Mai 2010 10:10
por alxsts
Olá!

Se o amigo estiver compilando com Clipper 5.3, poderá utilizar as funções OrdWildSeek() e OrdScope().

Busqueda Avanzada de Información

Enviado: 22 Mai 2010 11:57
por Pablo César
Achei um tópico (no fundo do baú) que fala sobre mudança no registro (vou confirmar com Rochinha, se é ainda válido), sobre uma rotina de pesquisa em arquivo temporario (também do colega Rochinha) e sobre alguns pontos esclarecedores sobre o tema RDD, para quem quiser rever: https://pctoledo.org/forum/viewto ... CDX#p18391

Re: Busqueda Avanzada de Información

Enviado: 24 Mai 2010 20:58
por victorale07
gracias, voy a testear....