Forum > Spanish

Insertar registro númerico con más de 4 decimales

(1/2) > >>

esdonis:
Estoy tratando de insertar un registro en una tabla de firebird con un campo númerico con 6 decimales pero siempre me trunca el número a 4 decimales.

Uso un TSQLQuery para en una consulta con parámetros de la siguiente forma:

  rsuvt.Close;
  rsuvt.SQL.Clear;
  rsuvt.SQL.Text := sqlstr;
  rsuvt.Params.ParamByName(LParam[0]).AsFloat:=StrToFloat(LValor[0]);
  try try
    trauvt.StartTransaction;
    rsuvt.ExecSQL;
    intfilas := rsuvt.RowsAffected;
    trauvt.Commit;
  except
    on e:exception do begin
      intfilas := 0;
      strerror := e.Message;
      trauvt.Rollback;
    end;
  end;
  finally
    trauvt.EndTransaction;
  end;

Al comprobar el parámetro LValor[0] si trae el valor con los 6 decimales, pero en la tabla solo se salvan 4 decimales

Edson:
¿Qué tipo de dato tiene la columna de Firebird? ¿No será que solo soporta 4 decimales?
Sería bueno que verifiques, primero, en que parte del proceso se pierden los decimales.

esdonis:
la tabla en firebird es decimal (16,6)
si inserto los datos directo a la tabla con flamerobin si los coge

esdonis:
Sin envargo si en la variable "sqlstr" le pongo directamente el valor por ejemplo de 1.012345 si me lo inserta correctamente, osea si pongo

sqlstr:='insert into tabla (cantidad) values (1.012345)

si me inserta bien el valor

esdonis:
Todo parece indicar que el error esta en los parametros, que al pasar el valor del parametro esta truncando el valor a 4 decimales.

He estado revizando el codigo de Lazarus, pero no he encontrado aun el procedimiento donde Lazarus transfiere el valor de los parametros al quey.

Alguien ha revizado esto?

Cualquier ayuda sera bien venida

Navigation

[0] Message Index

[#] Next page

Go to full version