Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.015 c
3-71466
AtoL
2003-08-28 09:42
2003.09.22
FIBPlus и DBLookUpComboBox


1-71740
evs
2003-09-10 11:41
2003.09.22
Почта кодировка


1-71607
lex7
2003-09-09 16:52
2003.09.22
программа для создания демонстрашек в виде avi


14-71933
Universe
2003-09-02 17:48
2003.09.22
Предлагаю каждую фишку написанную вносить сюда может так проще


6-71799
Z_man7777
2003-07-21 14:46
2003.09.22
Локальный чат




   Наверх