Caracteres errados com ADOxParadox no Delphi 7

Delphi

19/10/2004

Caros amigos,

Estou com um grande problema que preciso resolver urgentemente, estou fazendo uma migração de um banco de dados de um sistema concorrente ao da empresa onde trabalho que usa Paradox para o sistema da minha empresa que usa SQL Server 2000, a conexão com o banco Paradox eu faço através de ADOQuery, a conexão se faz perfeita, consigo executar todas as querys necessárias, mas quando eu retorno algum valor do banco de dados Paradox que contenha algum caracter especial, ele vem totalmente errado, há alguns exemplos abaixo de como estou recuperando esses dados.

Caminhão --> Caminh+o
Mendonça --> Mendonãa

e por ai vai, gostaria de saber se tem algum recurso para poder corrigir esses erros. Aguardo resposta urgente!!!!

Valeu


Xande-df

Xande-df

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

19/10/2004

Você tem que setar o Collation do SQLServer para ser compatível com o da base Paradox, para evitar esses erros.


GOSTEI 0
Xande-df

Xande-df

19/10/2004

Não é esse o caso, esses dados já estão vindo errados para as variáveis que os recebem e não na hora de gravar no Sql Server, a conexão com o SQL Server e feita através de um componente desenvolvido pela empresa onde trabalho e é totalmente independente do ADO. O problema está com o ADO e com o Paradox!!!!


GOSTEI 0
Gandalf.nho

Gandalf.nho

19/10/2004

Eu não trabalho com o ADO, mas ele não tem um recurso de CHARACTER SET na conexão?


GOSTEI 0
Xande-df

Xande-df

19/10/2004

Não, foi a primeira coisa que eu procurei quando me deparei com isso, realmente não o encontrei. Se eu não resolver isso, vou ter que mudar todo o meu sistema para acessar o BDE, só que não quero fazer isso pois demoraria um pouco para fazer essa conversão, mas pelo visto...


GOSTEI 0
Leonardoffsilva

Leonardoffsilva

19/10/2004

Verifica qual o código da tabela ASC extendida(acima de 128) que foi utilizada pela aplicação Paradox para arquivar as informações. Ex. (850,870), porque certamente não é a mesma que você está utilizando agora com o SQL Server.
Isso é muito comum acontecer quando de migra de uma tabela BDF para C/S. Sempre tem alguns problemas com acentuaçao, pois esses caracteres são superiores a 128 e dependem de uma tabela especial.


GOSTEI 0
Xande-df

Xande-df

19/10/2004

Po, valeu pela dica, mas eu não tenho como verificar isso, pois o sistema que grava na tabela paradox é um sistema de uma empresa concorrente da que eu trabalho, não tenho acesso a essas informações. Gostaria de saber se dentro do ADOQuery tem algum parâmetro de configuração de caracteres.

Valeu


GOSTEI 0
Gandalf.nho

Gandalf.nho

19/10/2004

Tente abrir a tabela Paradox no Database Desktop e verifique a Language Table.


GOSTEI 0
Xande-df

Xande-df

19/10/2004

Verifiquei, esta com a ´Pdox ANSI Intl850´, mas só tem essa, isto esta certo? Como faço pra alterar?


GOSTEI 0
Leonardoffsilva

Leonardoffsilva

19/10/2004

Bom, já temos algum começo. De forma automática não tem como. Você deverá traduzir os caracteres um a um. Todos.
Faça da seguinte forma:
Para cada registro do paradox: Leia o campo e armazene em uma string. Depois verifique cada caracter e troque os acentos errados pelo código certo.
Grave a string traduzida na tabela SQL Server.

Sempre que faço alguma importação de dados de sistemas em ´Clipper´ (arghh :? ) tenho que fazer isso.

Dá trabalho, mas o serviço fica impecável.


GOSTEI 0
Xande-df

Xande-df

19/10/2004

É meu amigo só que eu não tenho tempo pra isso, o sistema já esta pronto, terei que mexer em + de 5 classes para poder fazer essas trocas, isso é o meio inviável de fazer. Tem que haver um jeito - complicado e + rápido


GOSTEI 0
Xande-df

Xande-df

19/10/2004

Alguém me AJUDAAAAA!!!!!


GOSTEI 0
Fred

Fred

19/10/2004

Na configuração do ODBC tem la(pelo BDE ou SQLexplorer: LANGDRIVER coloca la ´ascii´ ANSI


GOSTEI 0
POSTAR