Problemas com campos numéricos no Delphi 2010
23/11/2009
0
Estou com o mesmo problema que num post anterior meu, só que dez vez com DBExpress+Firebird2.1+Delphi 2010.
Acontece o seguinte:
- Tenho uma base de dados com vários campos do tipo Double, para armazenar valores monetários.
Após feita a configuração do trio de componentes de acesso, quando insiro os campos, os desse tipo acima, aparecem como do tipo TSingleField e não TFloatField. Aí no momento em que vou cadastrar algum dado aparece essa mensagem de erro:
Já troquei para outro tipo de dados (NUMERIC(15,2)), e fiz testes até mesmo com outros componentes de conexão, mas o erro persiste.
Elton Rosa
Posts
24/11/2009
Eduardo Vilaro
24/11/2009
Carlos Bernardo
24/11/2009
Elton Rosa
Mas mesmo assim, os campos antes eram do tipo FLOAT e depois passei para NUMERIC(15,2). Não tem nada a ver com essa mensagem que induz que seja algo como String!!!
Mas vlw, vou olhar e posto o retorno!!!
25/11/2009
Elton Rosa
var
i: Integer;
begin
ds.DataSet.Last;
if (ds.DataSet.FieldByName('ID_MERCADORIA').Value = '') or (ds.DataSet.FieldByName('ID_MERCADORIA').IsNull) then
begin
i := 0;
end
else
begin
i := ds.DataSet.FieldByName('ID_COMUNIDADE').AsInteger;
end;
ds.DataSet.Append;
JvPageControl1.ActivePage := ts2;
ds.DataSet.FieldByName('ID_MERCADORIA').AsInteger := i + 1; end; O motivo era porque comparava se o valor do campo estava vazio, como string. Sendo assim, se fosse o primeiro registro na tabela, sempre daria esse erro. Solução: 1ª: Remover esse bloco em negrito ou 2ª: Fazer o uso de sequences e incrementar o valor através do comando sql que busca o valor atual do mesmo. Vlw pessoal !!! Obrigado a todos que procuraram me ajudar!!!
Clique aqui para fazer login e interagir na Comunidade :)