seek sem case sensitive e operar datas

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

rogerio
Usuário Nível 1
Usuário Nível 1
Mensagens: 15
Registrado em: 09 Jul 2004 21:48

seek sem case sensitive e operar datas

Mensagem por rogerio »

Ola Pessoal,

Aqui estou eu de novo para pedir a ajuda de voces.

TEnho um bd que foi importado de um programa VB. Os clientes estao cadastrados com as iniciais maiusculas e acentos. Existe um jeito de fazer uma procura com o seek ignorando o tipo de letra e acentos ou terei que converter tudo para maiuscula ??? E os acentos ???

Alguem teria tmbem uma funcao que opere datas ?? TEnho somente a SOMAMES, mas preciso fazer um programinha para controlar ferias e as vezes tenho que operar com dias, meses e anos simultaneamente.

De novo um agradecimento antecipado e um grande abraco a todos.

Rogerio
rpc@ubanet.com.br
Avatar do usuário
mvbrandao
Usuário Nível 1
Usuário Nível 1
Mensagens: 22
Registrado em: 15 Jul 2004 09:52
Localização: Rio de Janeiro - RJ

Mensagem por mvbrandao »

Olá,
achei essa funcao e naum testei, use-a transformando o nome junto com dbseek().

Código: Selecionar todos

*****************************************************************************
*** NOME       : Tiracent.prg
*** UTILIZA€ÇO : Retorna palavras sem acentua‡Æo para busca ou indexa‡Æo
*** AUTOR      : Marcos Fernandes Penna
*** INÖCIO     : 12/11/2001
*** REVISÇO    :
***            :
*****************************************************************************

*** Exemplo: Index on Tiracento(Cidade) to arquivo
*** Seek Tiracento(Cidade)
assim Ca‡apava estar  na mesma ordem que Cacapava
ou SÆo Paulo ser  exibido na mesma ordem que Sao Paulo

 *************************
 Function Tiracento(nNome)
 *************************
 nNome:=StrTran(nNome," ","a")
 nNome:=StrTran(nNome,"Æ","a")
 nNome:=StrTran(nNome,"…","a")
 nNome:=StrTran(nNome,"ƒ","a")
 nNome:=StrTran(nNome,"µ","A")
 nNome:=StrTran(nNome,"Ç","A")
 nNome:=StrTran(nNome,"·","A")
 nNome:=StrTran(nNome,"¶","A")
 nNome:=StrTran(nNome,"‚","e")
 nNome:=StrTran(nNome,"Š","e")
 nNome:=StrTran(nNome,"ˆ","e")
 nNome:=StrTran(nNome,"
Marcos Brandão
marcos@bco.com.br
Avatar do usuário
mvbrandao
Usuário Nível 1
Usuário Nível 1
Mensagens: 22
Registrado em: 15 Jul 2004 09:52
Localização: Rio de Janeiro - RJ

Mensagem por mvbrandao »

Rogerio,

O codigo ficou conrrompido, entao postei para seu e-mail a funcao em arquivo prg.

um abraço
Marcos Brandão
marcos@bco.com.br
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

O uso da função StrTran() desta forma deve criar uma boa sobrecarga. Pensando nisso, fiz uma função C que é bem mais rápida (pode ser usada numa chave de indexação) e depende apenas de duas tabelas, fonte e destino. Um exemplo de uso:

Código: Selecionar todos

function DelAcentos(cStr)
return   STRanslate(cStr,"áéíóúàèìòùãõâêôçÁÉÍÓÚÀÈÌÒÙÃÕÂÊÔÇ",;
                         "aeiouaeiouaoaeocAEIOUAEIOUAOAEOC" )
Se interessar, ela está disponível para download na minha página.

[]'s
Maligno
http://www.buzinello.com/prg
Responder