Busqueda Avanzada de Información

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

victorale07
Usuário Nível 2
Usuário Nível 2
Mensagens: 67
Registrado em: 20 Ago 2009 19:55
Localização: chile

Busqueda Avanzada de Información

Mensagem 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.-
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Busqueda Avanzada de Información

Mensagem 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
victorale07
Usuário Nível 2
Usuário Nível 2
Mensagens: 67
Registrado em: 20 Ago 2009 19:55
Localização: chile

Re: Busqueda Avanzada de Información

Mensagem por victorale07 »

gracias Pablo, voy a probar la rutina "procura.txt".
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Busqueda Avanzada de Información

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Busqueda Avanzada de Información

Mensagem 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.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Busqueda Avanzada de Información

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Busqueda Avanzada de Información

Mensagem 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...
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Busqueda Avanzada de Información

Mensagem por alxsts »

Olá!

Se o amigo estiver compilando com Clipper 5.3, poderá utilizar as funções OrdWildSeek() e OrdScope().
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Busqueda Avanzada de Información

Mensagem 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
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
victorale07
Usuário Nível 2
Usuário Nível 2
Mensagens: 67
Registrado em: 20 Ago 2009 19:55
Localização: chile

Re: Busqueda Avanzada de Información

Mensagem por victorale07 »

gracias, voy a testear....
Responder