Veja nossa lista de componentes aqui!

Veja nossa lista de componentes aqui!

Você, programador/programadora Delphi, já se deparou com essa mensagem de erro?

Pois bem… li várias postagens em blogs de discussão Delphi e muitos desenvolvedores já enfrentaram este tipo de problema, porém, embora alguns desenvolvedores conseguiram uma solução, em nenhuma delas foi apresentada uma explicação sobre a causa deste erro.
O que é relatado sobre este erro é que ele ocorre em comandos “muito simples”, geralmente apenas um SELECT trazendo alguns campos de uma única tabela, sem utilização de JOIN.
Este erro ocorre com o componente TSQLDataSet, onde a sua propriedade “CommandText” possui o código SQL a ser usado para trazer informações de uma tabela. Ao se executar a ação OPEN deste componente, o erro é retornado! Só isso. Sem motivo aparente. Sem explicação.
Vamos então a dois exemplos de códigos onde um não acarreta este erro e outro sim.
Ex.
Consideremos a tabela:
create table produto (
id int(10),
descricao varchar(200),
obs text
) default charset=utf8;
A sequência de comandos a seguir será executada sem erros.
TSQLDataSet.CommandText := ' select id, descricao, obs from produto ';
TSQLDataSet.Open;
Já neste caso a seguir teremos o erro “Invalid field size”.
TSQLDataSet.CommandText := ' select id, descricao, trim(obs) from produto ';
TSQLDataSet.Open;
Perceberam a diferença entre os 2 códigos?
Basta você ter uma tabela codificada com CHARSET=UFT8 e fazer um SELECT trazendo um campo TEXT com alguma “manipulação” de string, que no caso foi a função TRIM() do SQL.
Todo o tratamento da string deve ser previamente gravado na tabela e ao recuperar este campo você deve trazer ele “puro”, como por exemplo “SELECT campo FROM tabela”.
Outras funções de formatação de strings também causam este erro, como por exemplo as funções, TRIM(), UPPER(), LOWER(), e todas funções que formatam o conteúdo do campo.
Não testei outros casos nem outras funções, e não consegui informação suficiente para entender porque essas funções causam este erro, mas a luz para este problema foi encontrada.
Caso você tenha enfrentado este erro e tenha mais informações, deixe seus comentários aqui no post.
Bom desenvolvimento a todos!
Olá caro programador/programadora de Delphi!
Tudo bem com vocês?
Estou fazendo este post para mostrar a vocês o mais novo componente da Hexa.
Batizado de SearchGrid, ele veio para resolver pequenos, porém chatos, problemas enfrentados por nós programadores.
Sabe aquela pequena limitação em alguns componentes, onde você olha bem pra ele e diz: “Você poderia fazer isso também!”
Então… nada melhor que linda OO para nos ajudar não é mesmo?
Basta criar um objeto herdando aquele componente e estender suas funções!
Bom… um ótimo exemplo é este componente SearchGrid.
Ele consegue resolver algumas limitações do TClientDataSet, como por exemplo: Indexação de campos Lookup, indexação de campos Text, filtro fácil de um ou mais campos, além de outros detalhezinhos que sempre nos preocupam… DBGrid zebrado, célula selecionada com destaque personalizado, salvamento e recuperação da configuração do DBGrid (largura e posição das colunas), exibição do conteúdo completo de campos Memo, informação da posição do ponteiro de registro e o total de registros exibidos.
Bom… dá pra perceber que alguns probleminhas chatos foram resolvidos em um único componente!
Vejam um video de demonstração e tirem suas próprias conclusões.