converter minusculas em maisculas num dbf

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

lapinhazzz
Usuário Nível 3
Usuário Nível 3
Mensagens: 130
Registrado em: 20 Abr 2009 10:52
Localização: LAGOA

converter minusculas em maisculas num dbf

Mensagem por lapinhazzz »

Boa Tarde amigos do Forum.

Será que alguém tem uma rotina para modificar uma base de dados inteira de letras minusculas para maiusculas.

Obrigado
lapinhazzz
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á

converter minusculas em maiusculas num dbf

Mensagem por Pablo César »

Bom sabemos que a função UPPER converte em MAIUSCULAS caracteres desde CHR(097) até CHR(122) seriam a,b,c,d...//...w,x,y,z, mas não converte "ç" nem vogais acentuadas, isso você terá que prever se há casos assim e se eles estão no modo ANSI ou OEM. Fora isso, se você quer uma rotina que processe todos os campos do tipo caracter de um dbf, você vai precisar obter a estrutura do seu dbf e processar campo a campo (quando forem do tipo "C"aracter, varrendo registro a registro e subtituindo com UPPER e função para tramento de acentos. Eu pegaria o antigo DBase e eu mesmo faria um replace em cada campo que desejar caso não precisar tratar caracteres especiais ("ç" e vogais acentuadas).

Aqui tem uma função, não revisei como ela está atualmente mas já é algum caminho: https://pctoledo.org/forum/viewto ... 299#p38963
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.
Avatar do usuário
Vander
Usuário Nível 3
Usuário Nível 3
Mensagens: 214
Registrado em: 23 Jul 2004 01:43
Localização: João Monlevade - MG

Re: converter minusculas em maisculas num dbf

Mensagem por Vander »

Lapinhazzz,
Eu uso a função abaixo para remover acentos e Ç. Voce pode fazer semelhante.

Código: Selecionar todos

variavel := CONVERT(UPPER(seu_campo))
..
..
Dá o replace
//----------------------------
Function CONVERT( cTexto )
   // remove branco
    cTexto := StrTran( cTexto, " ", " " )
   // acento agudo
   cTexto := StrTran( cTexto, "Á", "A" )
   cTexto := StrTran( cTexto, "É", "E" )
   cTexto := StrTran( cTexto, "Í", "I" )
   cTexto := StrTran( cTexto, "Ó", "O" )
   cTexto := StrTran( cTexto, "Ú", "U" )
   // acento circunflexo
   cTexto := StrTran( cTexto, "Â", "A" )
   cTexto := StrTran( cTexto, "Ê", "E" )
   cTexto := StrTran( cTexto, "Î", "I" )
   cTexto := StrTran( cTexto, "Ô", "O" )
   cTexto := StrTran( cTexto, "Û", "U" )
   // til
   cTexto := StrTran( cTexto, "Ã", "A" )
   cTexto := StrTran( cTexto, "Õ", "O" )
   // ce-cedilha
   cTexto := StrTran( cTexto, "Ç", "C" )
   // trema
   cTexto := StrTran( cTexto, "Ü", "U" )
   // crase
   cTexto := StrTran( cTexto, "À", "A" )
   cTexto := StrTran( cTexto, "È", "E" )
   cTexto := StrTran( cTexto, "Ì", "I" )
   cTexto := StrTran( cTexto, "Ò", "O" )
   cTexto := StrTran( cTexto, "Ù", "U" )
Return cTexto
Vander
HbMake v1.17
xHarbour build 0.99.70 Intl. (SimpLex)
Borland C++ 5.5.1
fivewin 6.12 (FREE)
Workshop 4.5
MEdit
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: converter minusculas em maisculas num dbf

Mensagem por gvc »

Ao que me lembro o upper não converte os caracteres acentuados assim como o '@!' não faz o mesmo com as E/S.
Vc vai precisar colocar todos os caracteres especiais que aparecem na sua base na rotina de conversão.
"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}
lapinhazzz
Usuário Nível 3
Usuário Nível 3
Mensagens: 130
Registrado em: 20 Abr 2009 10:52
Localização: LAGOA

Re: converter minusculas em maisculas num dbf

Mensagem por lapinhazzz »

vou experimentar.
Obrigado a todos
lapinhazzz
Responder