Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.22;
Скачать: CL | DM;

Вниз

Проблема с 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
14-71820
panov
2003-09-01 17:24
2003.09.22
Буду в Москве 03.09-04.09


1-71575
Julliete
2003-09-09 16:47
2003.09.22
Кол-во знаков после запятой.


1-71751
Zhouck
2003-09-10 11:56
2003.09.22
Kylix3+InterBase


1-71681
acsoft
2003-09-11 12:07
2003.09.22
У кого-нибудь есть готовый алгоритм поиска файлов в Windows по им


3-71557
AlexA
2003-08-29 10:19
2003.09.22
Использование триггеров