Array
(
)

DbExpress com MSSQL e Campos do Tipo Char

Italocarlo
   - 18 nov 2005

Pessoal
Estou com o seguinte problema
Eu tenho um banco de dados em SQL Server que acesso ele através dos drivers do dbexpress. Estou tendo um grande problema com relação aos campos char já que ele tá trazendo o valor do campo todo até com os espaços em branco.
Ex.: Tenho um campo char de tamanho 10 que o valor dele é 5 mas quando eu resgato ele me traz 5 . ( com 9 espacos em branco)
Alguem sabe algum parâmetro que eu possa usar para poder somente trazer o 5
Já tentei utilizar o SetOption(eConnTrimChar, Integer(True)); do sqlconnetcion mas mesmo assim nao funcionou.


Bon Jovi
   - 20 nov 2005

A modelagem de dados está errada pra poder acontecer isso. Qdo se cria um campo do tipo char imagina-se que sempre ocupará todo o tamanho. Mude o tipo para varchar.


Italocarlo
   - 21 nov 2005

Para os outros bancos como firebird e oracle eu setando o Parâmetro ´Trim Char´ para True na propriedade da conexão, ele me retorna a string sem espaços em branco, já no MSSQL esse parâmetro nao ta funcionando..
Se alguem souber, ficaria grato como resolver este problema.


Gandalf.nho
   - 21 nov 2005

Como o colega acima falou, use VARCHAR ao invés de CHAR. CHAR normalmente só se usa em casos em que o conteúdo do campo sempre terá exatamente aquele tamanho tais como CEP, sigla de estado, CPF, essas coisas.


Italocarlo
   - 21 nov 2005

Pessoal, essa solucao se aplica para um projeto novo.. mas quando se trata de uma migração de uma aplicação q ja existe e q tem bases em sql server rodando com mais de 30gb de dados.. fica complicadissimo fazer esta mudanca ja q o sql server nao tem uma maneira facil de mudar um tipo de dado de um dominio..

Mas o unico banco que nao funciona o Parametro Trim Char é o MSSQL.

Já no componente da Corelabs .. eles possuem esta opção.. funcionando..

O dbexpress é realmente uma ferramenta confiável para trabalhar ou ainda é uma ferramenta que apresentas alguns bugss não resolvidos..?

Alem desse problema to tendo mais problemas com dbexpress como: O Commando locate gera uma excecao quando chamado pelo SimpleDataSet no datamodule remoto.. Ele naos traz os defaults dos campos not null qnd tem default definido.. porem exige o preenchimento dos mesmos diferentemente do BDE.