Erro em Select

Delphi

12/05/2005

Pessoal bom dia, estou fazendo um select Super simples
Qry_PesqItens.Close;
Qry_PesqItens.Sql.clear;
Qry_PesqItens.sql.add(´Select * From Itens´);
Qry_PesqItens.Sql.add(´Where Lower(str_descricao) like :str_descricao´);
Qry_PesqItens.Parambyname(´str_descricao´).asstring := ´¬´ + LowerCase(Trim(EdtPesquisa.text)) + ´¬´;
Qry_PesqItens.Sql.add(´Order By str_descricao´);
Qry_PesqItens.Open;

porém quando dou um Open nesta querie me retorna o seguinte erro Arithimetic Exception, numeric Owerflow ou string Truncation, sempre que tive este erro era problema do dado ser maior que o campo, porém agora o problema não é esse porque este select carrega apenas um Grid e até arranquei o grid Já mas o problema persiste.
Pesquisando aqui no Forum percebi que isso pode ser um problema de Character Set e Collate portanto tenho as seguinte Dúvidas:

1 - Como fazer para alterar o Character Set e o Colate de um banco já POpulado

2 - Qual o Character Set e o Collate correto para ser utilizado visto que existe divergencias sobre o assunto

Uso FB 1.5 e componentes IBDataset, IBDataBase..... componentes da Guia Interbase e Delphi 7.0


Ariovaldo

Ariovaldo

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

12/05/2005

Colega,

Um exemplo para troca de CharacterSet:

UPDATE RDB$FIELDS SET RDB$CHARACTER_SET_ID=22
WHERE RDB$SYSTEM_FLAG<>1 AND RDB$CHARACTER_SET_ID=21


Abaixo, lista dos ´CharSets´ do banco:

SELECT *
FROM RDB$character_sets


Faça um backup antes de deferir os procedimentos acima.


GOSTEI 0
Ariovaldo

Ariovaldo

12/05/2005

[quote:7a618d1a53=´Aroldo Zanela´]Colega,

Um exemplo para troca de CharacterSet:

UPDATE RDB$FIELDS SET RDB$CHARACTER_SET_ID=22
WHERE RDB$SYSTEM_FLAG<>1 AND RDB$CHARACTER_SET_ID=21


Abaixo, lista dos ´CharSets´ do banco:

SELECT *
FROM RDB$character_sets


Faça um backup antes de deferir os procedimentos acima.[/quote:7a618d1a53]

Senhores boa tarde tentei aplicar o Update que o Aroldo me passou porém achei estranho o seguinte, meu banco esta como character_set = NONE como faria para coloca-lo como win_1252?

Agradeço a atenção de todos


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

12/05/2005

Colega,

UPDATE RDB$FIELDS SET RDB$CHARACTER_SET_ID=53
WHERE RDB$SYSTEM_FLAG<>1 AND RDB$CHARACTER_SET_ID=0



GOSTEI 0
Ariovaldo

Ariovaldo

12/05/2005

Pessoal bom dia, estou fazendo um select Super simples Qry_PesqItens.Close; Qry_PesqItens.Sql.clear; Qry_PesqItens.sql.add(´Select * From Itens´); Qry_PesqItens.Sql.add(´Where Lower(str_descricao) like :str_descricao´); Qry_PesqItens.Parambyname(´str_descricao´).asstring := ´¬´ + LowerCase(Trim(EdtPesquisa.text)) + ´¬´; Qry_PesqItens.Sql.add(´Order By str_descricao´); Qry_PesqItens.Open; porém quando dou um Open nesta querie me retorna o seguinte erro Arithimetic Exception, numeric Owerflow ou string Truncation, sempre que tive este erro era problema do dado ser maior que o campo, porém agora o problema não é esse porque este select carrega apenas um Grid e até arranquei o grid Já mas o problema persiste. Pesquisando aqui no Forum percebi que isso pode ser um problema de Character Set e Collate portanto tenho as seguinte Dúvidas: 1 - Como fazer para alterar o Character Set e o Colate de um banco já POpulado 2 - Qual o Character Set e o Collate correto para ser utilizado visto que existe divergencias sobre o assunto Uso FB 1.5 e componentes IBDataset, IBDataBase..... componentes da Guia Interbase e Delphi 7.0



Pessoal Após várias tentativas com a ajuda do pessoal do forum descobri que o problema esta na Função do Banco [b:77cb257e52]LOWER[/b:77cb257e52] para quem não sabe esta função converte o conteúdo do Campo no Banco para Minúsculo, porém eu preciso usar esta Função, o Interessante que uso esta Função desde o Interbase 6.0, alias copiei esta função da Documentação do interbase, depois passei a Usar o Firebird 1.0, 1.03, e agora que veio acontecer o Erro, um detalhe que talvez ajudaria a identificar o Problema é que nesta Tabela, neste Campo que uso o Lower o conteúdo dele é uma String cheia de Caracteres diferente tipo Número, /, *, não sei se é isso que esta causando todo este trantorno, porém ainda não solucionei o problema apenas contornei retirando esta função. Se alguém puder me ajudar em algo eu agradeceria.


GOSTEI 0
POSTAR