ASCAN()
Moderador: Moderadores
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
ASCAN()
Caros, tenho q imprimir um relatorio que filtre uma determinada palavra no banco de dados, ou seja, no campo OCORRENCIA01 c houver "DEPOSITO" .OR. "DEPOS" ele devera entrar no relatorio, entaum estou usando assim:
ASCAN(campo,"DEPOSITO")
Acontece que o ASCAN estah sempre me retornando 0 quando existe campos com essa palavra (DEPOSITO).
O q estah errado no comando?
Marcos Roberto
ASCAN(campo,"DEPOSITO")
Acontece que o ASCAN estah sempre me retornando 0 quando existe campos com essa palavra (DEPOSITO).
O q estah errado no comando?
Marcos Roberto
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
O comando ASCAN é utilizado para busca em VETORES não em campos de um DBF.
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.
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.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Tome cuidado se este campo OCORRENCIA01, for digitado pelo usuário. Pois esse procedimento então, está sujeito a erros. É preferível ser assignado através de um menú onde não permita outra nomenclatura. Desta forma gravaria de forma FIXA e que poderá ser feito indexação nesse campo.
Daí então em lugar de usar ASCAN utilize o SEEK. O LOCATE também poderá servir, mas é desaconselhável quando for previsto uma quantidade muito grande de registros.
Daí então em lugar de usar ASCAN utilize o SEEK. O LOCATE também poderá servir, mas é desaconselhável quando for previsto uma quantidade muito grande de registros.
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.
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.
Adicionalmente à palavra do Pablo, aconselho o uso das funções AT() ou RAt() para a busca das palavras contidas no campo. Leia o NG para mais detalhes.
[]'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!
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!
Acho que no tópico vc vai encontrar o que precisa.
https://pctoledo.org/forum/viewto ... t=leonardo
Jânio
https://pctoledo.org/forum/viewto ... t=leonardo
Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
A solução indicada do Janio de fazer uso do AADD, isto é, colocando em vetores, também é uma saída. Aí sim utilizaria-se o ASCAN(). Mas acredito que esta opção poderá ser comprometida se depender da quantidade de registros e excedendo a memória da máquina.
No entanto a velocidade de procura de strings em memória é mais rápida que em disco, depnderá da quantidade de registros para optar entre uma solução e outra. Não tendo como prever, eu sou mais a procura em disco.
No entanto a velocidade de procura de strings em memória é mais rápida que em disco, depnderá da quantidade de registros para optar entre uma solução e outra. Não tendo como prever, eu sou mais a procura em disco.
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.
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.
O exemplo postado pelo Eolo, utilizando WildSeek, também pode ser aplicado com a SIX no Clipper. É só o caso de indexar pelo campo alvo e usar a função sx_WildSeek(). Funciona do mesmo jeito: muito rápido. Em alguns casos, instantâneo. Claro que, dependendo da finalidade, etc.., não compense ou não seja necessário.
[]'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!
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!
Pablo,
Além do Aadd, me refiro também a função ordwildseek que consta no tópico que indiquei.
Tipo, pode ser feito:
do while ordwildseek("*DEPOSITO*",.t.)
... relatório
...
...
endd
Mas acho que deve haver um INDICE ativo com o campo OCORRENCIA01.
Jânio
Além do Aadd, me refiro também a função ordwildseek que consta no tópico que indiquei.
Tipo, pode ser feito:
do while ordwildseek("*DEPOSITO*",.t.)
... relatório
...
...
endd
Mas acho que deve haver um INDICE ativo com o campo OCORRENCIA01.
Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Sem dúvida.Mas acho que deve haver um INDICE ativo com o campo OCORRENCIA01.
[]'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!
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!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Ahh sim, mas pelo que tudo indica esse campo OCORRENCIA01, deve ser para identificar o lançamento de cada registro e se houver a necessiidade de FILTRAR ou separar tais registros, talvez a indexação seria o mais indicado. Só caberia tratar a entrada no campo, no caso. Mas são suposições minhas ainda não sabemos mais sobre o por quê o colega utilizaria o ASCAN. Espero eu não ter me precipitado com a minha conclusão.
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.
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.
Se vc colocar:
<var1> $ <var2>
será retornado .T. se <var1> existir dentro de <var2>
? 'A' $ 'COMPARANDO STRINGS' // retorna .T.
? 'ST' $ 'COMPARANDO STRINGS' // retorna .T.
? 'ando' $ 'COMPARANDO STRINGS' // retorna .F.
? 'ANDO' $ 'COMPARANDO STRINGS' // retorna .T.
? 'B' $ 'COMPARANDO STRINGS' // retorna .F.
O AT() ou RAT() retorna um número indicando a posição da ocorrência e o "$" retorna se existe ou não.
Espero ter ajudado. Boa sorte.
<var1> $ <var2>
será retornado .T. se <var1> existir dentro de <var2>
? 'A' $ 'COMPARANDO STRINGS' // retorna .T.
? 'ST' $ 'COMPARANDO STRINGS' // retorna .T.
? 'ando' $ 'COMPARANDO STRINGS' // retorna .F.
? 'ANDO' $ 'COMPARANDO STRINGS' // retorna .T.
? 'B' $ 'COMPARANDO STRINGS' // retorna .F.
O AT() ou RAT() retorna um número indicando a posição da ocorrência e o "$" retorna se existe ou não.
Espero ter ajudado. Boa sorte.
Editado pela última vez por gvc em 18 Fev 2008 18:22, em um total de 1 vez.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
A solução ideal depende do problema. Mas como resolvê-lo sem sabê-lo?
[]'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!
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!

