Fórum Numeric Overflow or String Truncation, Me Ajudem! #37427

17/07/2003

0

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

Responder

Posts

17/07/2003

Afarias

|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


Responder

Gostei + 0

17/07/2003

Raphal

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


Responder

Gostei + 0

17/07/2003

Afarias

|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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar