Форум: "Базы";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];
ВнизНе могу сохранить int64 в поле bigint Найти похожие ветки
← →
Lbvf1 (2004-02-09 14:51) [0]Не могу сохранить значение int64 в поле bigint
var i:int64;
....
// сохранение
q.ParamByName("p1").Value := i;
q.ExecSQL;
// записываю 1152921504606846976 (2^60)
// а там оказывается 1152921504606850000
// а чтение работает корректно
i := VarAsType(q.FieldByName("f1").AsVariant, varInt64);
записывать так вообще не получается, если значение больше 2^32
q.ParamByName("p1").Value :=
VarAsType(Variant(i), varInt64);
что делать?
← →
VLAD-MAL (2004-02-09 15:00) [1]А какие компоненты доступа к данным? BDE не умеет, кажись... Что-то настраивать нужно...
← →
Anatoly Podgoretsky (2004-02-09 15:03) [2]Чистый double 15 значащих цифр
← →
ZrenBy (2004-02-09 15:27) [3]Ну не умеют TADOxxx 6-ой версии работать с bigint.
Спасибо большое Borlandy
Извратиться можно так.
var i : Int64;
j : Integer;
v : Variant;
begin
i := -1234567890987654321;
v := VarArrayCreate([0,7],varByte);
for j:=0 to 7 do v[j] := PByte( Integer(@i)+7-j )^;
ADOQuery2.Parameters.ParamByName("A").Value := 3;
ADOQuery2.Parameters.ParamByName("M").Value := v;
ADOQuery2.ExecSQL;
M - DataType = ftBytes
Size = 8
← →
Lbvf1 (2004-02-09 16:48) [4]q.ParamByName("p1").Value := inttostr(i);
- СРАБОТАЛО!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c