Форум: "Базы";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
ВнизПроблема с Locate в ADO... Найти похожие ветки
← →
grusty (2003-08-29 17:34) [0]Уважаемые, помогите разобраться!
procedure Forma.ButtonClick(Sender: TObject);
var
v: Currency;
begin
v:=10.10;
if ADODataSet.Locate("Val",v,[]) then ShowMessage("Запись найдена!");
end;
В базе ADODataSet поле Val – денежное.
Ну не хочет работать – хоть убей. Тоже самое с базами Paradox работает без проблем.
Что делать?
← →
Sandman25 (2003-08-29 17:35) [1]Поле Val в БД имеет тип Decimal (Numeric)? Или что-то типа Float?
Вещественные числа не всегда представляются точно. 10.10 как раз из числа "неточных"
← →
grusty (2003-08-29 17:48) [2]Так что мне делать? Вот так работает:
procedure Forma.ButtonClick(Sender: TObject);
var
v: String;
begin
v:="10.10";
if ADODataSet.Locate("Val",v,[]) then ShowMessage("Запись найдена!");
end;
Помогите!
← →
Sandman25 (2003-08-29 18:01) [3]>Так что мне делать?
Мне приходят на ум 3 варианта:
1. Изменить тип данных в БД. Если нужны точные данные (типа денег или количества), то и хранить нужно точные данные.
2. Написать свой поиск (или свой locate), в котором проверять Abs(FieldByName(...).AsFloat - V) < Epsilon
3. Использовать FindNearest. Но тут я ничем помочь не могу - никогда не использовал. Может это даже и не то, что нужно.
← →
grusty (2003-08-29 18:13) [4]Так ведь в базе все хранится так как надо. Поле менял на числовое с плавающей запятой - тот же результат.
У меня программа работает с базами Paradox - никаких проблем. Решил перевести на ADO (дабы избавиться от BDE) - пошли сплошные проблемы. Мало того, что работать программа стала в более чем 2 раза медленнее, так еще и эти проблемы...
← →
Sandman25 (2003-08-29 18:53) [5]Да, возможно, дело именно в Delphi. Если я правильно помню, оно поля типа Decimal(18,2) переводит в TFloatField...
Странно, что проблема при переходе, а раньше все работало нормально. Там ADO никаких преобразований полей не делает?
Тогда остается только свой Locate писать.
Я с ADO никогда не работал, через 5 минут иду домой, так что sorry, дальше уже без меня.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c