Volto aqui novamente para pedir a seguinte ajuda:
É possivel fazer busca em um dbf com caracteres acentuados, em que o sistema entenda que a letra "É" igual a "E"?
caracteres acentuados
Moderador: Moderadores
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
caracteres acentuados
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
caracteres acentuados
Olá Clodoaldo,
Usei estas dicas (não se preocupe com o nome dos tópicos, servem para todas situações): indice com harbour/minigui
Aqui a função RemoverAcentos: Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
Usei estas dicas (não se preocupe com o nome dos tópicos, servem para todas situações): indice com harbour/minigui
Aqui a função RemoverAcentos: Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
sambomb
- Usuário Nível 3

- Mensagens: 250
- Registrado em: 24 Out 2008 17:02
- Localização: Itaocara - RJ - Brasil
caracteres acentuados
Eu criei essa função para remover a acentuação, ela mantém o mesmo número de caracteres sendo válida na indexação, talvez te ajude 
Código: Selecionar todos
****************************************************************************
function RemAce(cAux, lOem, lUpper)
****************************************************************************
*
* Remove acentuação
* Parametros: cAux, lOem, lUpper
* Retorno: cResult
*
* Autor: Samir
* 30/7/2009 - 13:57:52
*
****************************************************************************
Local i := 0, cCharA := "", cCharS := "", nPos := 0
local cListaAAnsi := 'ãâáàéèêíìîóòõôúùûçÃÂÁÀÉÈÊÍÌÎÓÒÕÔÚÙÛÇ'
local cListaSAnsi := 'aaaaeeeiiioooouuucAAAAEEEIIIOOOOUUUC'
local cListaAOem := 'ƃ …ˆ‚Š¡Œ“䢕£—–‡¶Çµ·ÒÔÖÞ×àãåâéëê€'
local cListaSOem := 'aaaaeeeiiioooouuucAAAAEEEIIIOOOOUUUC'
If ValType(lUpper) = "U"
lUpper := .F.
end
If ValType(lOem) = "U"
lOem := .F.
end
//-- Desabilitar Oem ou Ansi de acordo com o parâmetro
If !lOem
cListaAOem := ""
cListaSOem := ""
else
cListaAAnsi := ""
cListaSAnsi := ""
end
//-- Analisar todos caracteres
for i := 1 to Len(cAux)
//-- Verificar se é um caracter acentuado ANSI
nPos := At( SubStr(cAux , i , 1) , cListaAAnsi )
if nPos > 0
//-- Pegar o caracter equivalente não acentuado
cCharA := SubStr(cListaAAnsi , nPos , 1)
cCharS := SubStr(cListaSAnsi , nPos , 1)
cAux := StrTran(cAux, cCharA, cCharS)
end
//-- Verificar se é um caracter acentuado OEM
nPos := At( SubStr(cAux , i , 1) , cListaAOem )
if nPos > 0
//-- Pegar o caracter equivalente não acentuado
cCharA := SubStr(cListaAOem , nPos , 1)
cCharS := SubStr(cListaSOem , nPos , 1)
cAux := StrTran(cAux, cCharA, cCharS)
end
end
//-- Aplicar Upper de acordo com o parâmetro
If lUpper
cAux := Upper(cAux)
end
Return cAux
/*------------------------------------------------------------------------*/
Rca Sistemas - Itaocara - RJ