Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];

Вниз

Вычисляемое поле в IB/FB   Найти похожие ветки 

 
Дмитрий Калугин   (2002-08-22 15:05) [0]

Добрый день, Мастера!
Как по умному решить такую задачу?
При выборе валюты в прайсах на сетке должна пересчитаться цена.
Т.е. исходная цена (в $) должна умножиться на некий коэффициент,
который я вынимаю из таблицы курсов валют.
Я по быстрому сделал это так:

EngineDM.FullSkladIBQ.Close;
EngineDM.FullSkladIBQ.UnPrepare;
EngineDM.FullSkladIBQ.SQL.Strings[2]:=",PRICE_S*"+CurrToStr(EngineDM.KoeffToPrice)+" AS PRICE_S";
EngineDM.FullSkladIBQ.SQL.Strings[10]:=",SPRICE_S*"+CurrToStr(EngineDM.KoeffToPrice)+" AS SPRICE_S";
EngineDM.FullSkladIBQ.Prepare;
EngineDM.FullSkladIBQ.open;

Берется это из вьюхи в которой 70000 записей. После смены валюты
призодится подождать пока все это перезакачается по сети. Толрмозит короче 3-4сек. Компоненты не стандартные, а IBO. Как и где правильно сделать вычисляемое поле, подскажите? На вьюхе, на SQL запросе или на компоненте TIB_Grid? и как туда передавать этот коэффициент?
Такой фокус у меня не сработал.

SELECT Price_S * :koeff, ... FROM ...

Потом присваиваю так
EngineDM.FullSkladIBQ.ParamByName("koeff").AsFloat:=5.3;
ошибка, блин.


 
Val   (2002-08-22 15:14) [1]

советую сделать хп, возвращающую пересчитанную сумму(т.к. действие довольно частое), ее и подставлять в выборку.


 
NickBat   (2002-08-22 15:44) [2]

Я так понял задача узнать цену на СЕГОДНЯШНИЙ день? Так этот курс один раз за день устанавливается или не так? Откуда там 70000 записей, если курсы всех валют за все дни, то первый раз за день вытяни этот курс, а потом подставляй из переменной. Или я что-то не так понял?


 
Дмитрий Калугин   (2002-08-22 16:34) [3]

>NickBat Я так понял задача узнать цену на СЕГОДНЯШНИЙ день?

Нет. Есть прайслист с болшим числом наименований продукции (прим 70тыс). Покупатели могут платить разной валютой. Да и шефу удобно смотреть его в разных валютах(переключаться) когда он заказ делает из нескольких стран, где свои бабки ходят...
Т.е. необходимо видеть один и тот же прайс в любой валюте по переключению. Курсы не меняются каждый день.


 
Desdechado   (2002-08-22 16:41) [4]

имхо, лучше на клиенте делать CalculatedField. И ничего перезапрашивать не надо. Всего лишь обработку OnCalcField написать с коэффициентом относительно базовой валюты, считанной из БД


 
Viacheslav   (2002-08-22 23:21) [5]

А вообще что такое FireBird ??? Объясните непосвященному. Это компонент какой-то ????


 
Дмитрий Калугин   (2002-08-23 10:35) [6]

>А вообще что такое FireBird ??? ... Ответ: SQL Server...
Отвечаю для Viacheslav. Я тоже "спал" до того как о нем узнал.
Теперь перешел на него сам.
По !!!РУССКИ!!! почитать можно тут www.ibase.ru
Это далеко продвинутый !!!БЕСПЛАТНЫЙ!!! Интербейс попросту говоря. Ребята из Фоеникса ( http://www.ibphoenix.com) взяли исходные тексты на сайте Борланда и начали его "очеловечивать". Есть еще обалденное средство "IB Expert" ( http://www.ibexpert.com/download), для визуального создания объектов БД для разработчиков.
Он совместим с интербейсом, лучше и бесплатный!


 
Дмитрий Калугин   (2002-08-23 10:42) [7]

>Desdechado ©
Да, это самй умный вариант! Но компоненты у меня не стандартные, а IBO. А в них я не знаю как породить вычисляемое поле. :(


 
Desdechado   (2002-08-23 10:54) [8]

а есть там наследники от TField?
попробуй покопаться, может что-то в protected спрятано ...


 
Дмитрий Калугин   (2002-08-23 11:05) [9]

>Desdechad
Покопался не там, но нашел!! Ура, конец тормозам!
Спасибо тебе ОГРОМНОЕ, ты натолкнул меня на давно забытое старое.
>Всего лишь обработку OnCalcField...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
1-35663
Groove
2002-08-31 12:01
2002.09.12
trackbar1 нужно изменить его!


1-35719
Mr.Kirya
2002-09-02 19:21
2002.09.12
Несколько вопросов по RichEdit


6-35838
dn
2002-07-08 13:03
2002.09.12
Проблема с полем Data у ClientSocketa


1-35679
7Up
2002-09-02 12:27
2002.09.12
INSTAPI в С. А в Delphi?


3-35627
harismatik
2002-08-23 12:08
2002.09.12
СРОЧНО! Список пользователей базы!!!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский