Numeric Overflow or String Truncation, Me Ajudem!

Firebird

17/07/2003

Olá pessoal
É o seguinte, tenho o codigo abaixo no OnChange do Edit

procedure TfrmVBalcao.edtCodigoChange(Sender: TObject);
var codigo : Int64;
begin
If edtCodigo.Text <> ´´
Then Begin
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add(´select * from produtos´);
IBQuery1.SQL.Add(´WHERE CODIGO = :pcodigo or COD_BARRAS = :pcodigo´);
TryStrToInt64(edtCodigo.Text,codigo);
IBQuery1.ParamByName(´pcodigo´).AsCurrency := codigo;
IBQuery1.Open;
End;
end;

Como faço para passar um numero grande, tipo um codigo de barras pro parametro???

na minha tabela esta assim a declaração

CODIGO INTEGER NOT NULL,
COD_BARRAS NUMERIC(14),

Obrigado!

Rafael


Raphal

Raphal

Curtidas 0

Respostas

Afarias

Afarias

17/07/2003

|na minha tabela esta assim a declaração

|CODIGO INTEGER NOT NULL,
|COD_BARRAS NUMERIC(14),


Campos Integer de 64 bits no IB devem ser declarados como:

NUMERIC(18,0)


Abraço


GOSTEI 0
Raphal

Raphal

17/07/2003

O problema esta na hora que o valor vai ser passado para o parametro, a opção de AsInt64 esta desativada na unit IBQuery, eu queria saber como posso fazer pra passar tal valor para o parametro.
Obrigado pela atenção!

Rafael


GOSTEI 0
Afarias

Afarias

17/07/2003

|O problema esta na hora que o valor vai ser passado para o parametro,
|a opção de AsInt64 esta desativada na unit IBQuery,

É sim... o IBQuery não suporta INT64 (questões de implementação) ... Para uar Int64 utilize IBDataSet no lugar do IBQuery.

Mas não deixe de usar seu banco no dialeto 3 e criar seus campos como NUMERIC(18,0)


Abraço


GOSTEI 0
POSTAR