Главная страница
    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.45 MB
Время: 0.011 c
6-71798
Jao
2003-06-30 16:36
2003.09.22
Сокеты. Посылка файла посредстом TcpClient и TcpServer


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


14-71846
Kost
2003-09-01 14:38
2003.09.22
StringGird


14-71917
Hatchy
2003-09-03 10:39
2003.09.22
Где можно скачать?


7-71967
oduvan
2003-07-10 10:25
2003.09.22
Hint WindowsXP. Как показать у моего приложения?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский