SQL do Delphi não reconhece acentuação
11/02/2006
0
Em certo formulário, tenho um componente DBLookupComboBox que exibe uma listagem com mais de 5 000 municípios brasileiros, sendo definido (através de uma consulta SQL) que os registros sejam ordenados alfabeticamente, mas percebi que alguns dos registros, cuja primeiras letras são acentuadas, são listados APÓS os municípios iniciados pela letra ´Z´. Algo assim:
Xinguara/PA
Xique-Xique/BA
Zabele/PA
Zacarias/SP
Zortéa/SC
Zé Doca/MA
Água Azul do Norte/PA
Água Boa/MG
Água Boa/MT
...
Óbidos/PA
Óleo/SP
Esclareço que utilizava essa mesma listagem em componentes Access/VBA definindo como origem uma consulta SQL idêntica e nunca tive qualquer problema. Só posso concluir que a implementação SQL instalada no Delphi não reconhece palavras acentuadas (e certamente também cedilhas). Até então, julgava que sistemas que não suportavam acentuação eram mais antigos, legados do Clipper ou Cobol, mas, pelo visto, muito trabalho me espera, e não me refiro o de eliminar a acentuação de todos os registros, pois acredito que não terei muita dificuldade em desenvolver uma função ou procedimento que automatize a tarefa, porém não gostaria de fazer isso antes de checar outras alternativas.
Na verdade, se o ambiente fosse Access, bastaria manter os registros atuais mas criando uma nova coluna na tabela com os registros sem acentuação; defini-la como a que deve ser ordenada na consulta SQL, mas oculta-la ao usuário exibindo somente a que contém os registros acentuados, isso porque no Access é possível exibir ou ocultar facilmente colunas em qualquer ComboBox e ListBox, recurso que o Delphi aparentemente só oferece (com restrições) em componentes do tipo DBGrid.
Por isso, indago aos colegas se existe alguma maneira de que os registros sejam exibidos de maneira correta sem eliminar a ortografia. Desde já, agradeço a atenção dispensada.
Spiritwwwalker
Posts
11/02/2006
Vinicius2k
Qual banco de dados você está utilizando (não ficou bem claro)?
Qual a camada de acesso (BDE, ADO, etc...)?
A ordenação não é implementada pelo Delphi e sim pelo SGBD utilizado (ou engine local) e é necessário espeficicar charsets e collates adequados no momento da criação do banco de dados para que o SGBD interprete corretamente a acentuação/cedilha.
T+
11/02/2006
Tremonti
Utilizo SQL....qual colate devo usar para ter o cedilha e os acentos?
Abraços...
11/02/2006
Foxcyber
11/02/2006
Spiritwwwalker
Em resposta às suas indagações, esclareço que os registros mencionados foram importados de uma tabela Access para uma outra no padrão Paradox, a qual foi criada no próprio Database Desktop, sendo que a consulta propriamente dita foi definida num componente ´Query´ da coleção Data Access do Delphi 5 e possui a seguinte sintaxe:
SELECT * FROM tblMunicipios ORDER BY Municipio
Prezado FoxCyber:
Agradeço sua sugestão, mas não posso adota-la no momento porque me obrigaria a redefinir o layout de quase todos os formulários de minha aplicação.
11/02/2006
Vinicius2k
Minha experiência é ínfima com Paradox (sempre preferi utilizar o próprio Access como banco de dados desktop) portanto peço que me perdõe se isto não for a solução:
1. Configure [b:cd063364f1]LANGDRIVER[/b:cd063364f1] do driver nativo para Paradox para [b:cd063364f1]Paradox ´Intl´ 850[/b:cd063364f1]. BDE Administrator -> Configuration -> Drivers -> Native -> Paradox. Este é o processo que eu fazia com o driver nativo do Access quando utilizava a BDE.
2. Altere a estrutura da sua tabela configurando [b:cd063364f1]Table Language[/b:cd063364f1] para [b:cd063364f1]Paradox ´Intl´ 850[/b:cd063364f1].
PS: Não confunda [i:cd063364f1]Pdox ANSI Intl850[/i:cd063364f1] (que é o default) com [i:cd063364f1]Paradox ´Intl´ 850[/i:cd063364f1]
T+
12/02/2006
Marco Salles
[color=darkred:4fed09c806]1) pergunta : Para o SpiritWWWalker[/color:4fed09c806]
como no BDE Administrador esta definido o LANGDRIVER ???? :?: :?: :?:
Ressalto que :
[color=darkred:4fed09c806]2)pergunta : Para o vinicius [/color:4fed09c806]
[b:4fed09c806]Vinicius , como e aonde se altera a estrtura de uma tabela paradox ???[/b:4fed09c806]
12/02/2006
Edilcimar
12/02/2006
Marco Salles
A estrutura que me refiro , não e a estrutura de tipo de campos , mudar tamanho , criar indices etc... Não e este tipo de estrutura que estou me referindo
Citação de Edicilmar
Citação de Vinicius.2k
eu abro o database desktop mas não vejeo esta opção :cry: :cry: :cry:
12/02/2006
Edilcimar
12/02/2006
Marco Salles
12/02/2006
Edilcimar
12/02/2006
Edilcimar
12/02/2006
Marco Salles
ai foi .. obrigado edicilmar
mas vamos voltar agora no ponto em que paramos . Afinal o tópico é o SpiritWWWalker
*************************************************************
uma pergunta para o SpiritWWWalker..
conforme o vinicius.2k tinha te recomendado : Vá em :
BDE Administrator -> Configuration -> Drivers -> Native -> Paradox
1) [color=darkred:064ddc1dc5]pergunta : Para o SpiritWWWalker [/color:064ddc1dc5]
[b:064ddc1dc5]como no BDE Administrador esta definido o LANGDRIVER ???? [/b:064ddc1dc5]
Ressalto que :
[color=darkblue:064ddc1dc5]LANGDRIVER[/color:064ddc1dc5]
12/02/2006
Spiritwwwalker
Quando postou sua mensagem, já havia efetuado as alterações propostas pelo colega Vinicius2k, mas verificando outras tabelas de minha aplicação, todas tem o LangDriver definido como PdoxANSI Intl850, portanto a que armazena os registros de municípios brasileiros certamente possuía a mesma definição, já que foi criada no padrão Paradox. Ela só diferia das demais por ter seus registros incluídos de maneira automatizada, após estabelecer uma conexão ADO com uma tabela Access.
Prezado Vinicius2k:
Segui suas orientações, mas quando configurei a Table Language para Paradox ´intl´ 850, todos os caracteres acentuados ficaram truncados, seja no DataBase Desktop, seja no formulário. Alterei a configuração para ´Access General´ (deixando o LangDriver como você havia sugerido) e tudo voltou ao normal, inclusive os registros passaram a ser ordenados corretamente no DBLookupComboBox. Agradeço a ajuda de todos os colegas que, mais uma vez, prestaram seu valioso auxílio para a solução de um problema que, a princípio, parecia demandar horas de pesquisas e experimentações.
Clique aqui para fazer login e interagir na Comunidade :)