![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() в таблице есть поле цена(Stoimost), которая выражается в рублях.
Поставил Checkbox, так чтобы при установке галочки цена выражалась в $. Что нада написать на OnClick чтобы записи в гриде обновились и приняли значение $ (т.е. Цена/25)? ![]() |
#2
|
||||
|
||||
![]() Создайте вычисляемое поле в наборе данных.
Потом два пути. 1. Показывать в DBGrid нужное поле и скрывать не нужное при нажатии на CheckBox. 2. Показывать только столбец вычисляемого поля. В событии набора данных onCalcField прописать условие - если CheckBox = true тогда показывать в рублях, если false то в долларах. И в процедуре переключения checkBox обновлять набор данных. |
#3
|
|||
|
|||
![]() а мож ету процедурку изобразить?
![]() |
#4
|
||||
|
||||
![]() Не знаете что такое вычисляемые поля или не знаете как скрывать-отображать нужные поля? Или не то не то?
|
#5
|
|||
|
|||
![]() Я бы сделал расчет в запросе (все-равно курс брать из БД) и выводил бы 2 поля, по необходимости у нужного ставил бы Visible в True, а у второго в False.
Типа что-то так: Код:
fldPriceRUB.Visible := CheckBox1.Checked; fldPriceUSD.Visible := Not CheckBox1.Checked; fldPriceXXX - поле с ценой в RUB и USD соответсвенно (расчет в запросе с получением текущего курса из соотв. таблицы). Поля создаются даблкликом по таблице или квере, и там в попап меню что-то типа Add all fields. CheckBox1 - тот самый чекбокс. В данном примере во вкл. состоянии - показывать в рублях, в выкл. - в долларях. |
#6
|
|||
|
|||
![]() Цитата:
как скрывать-отображать нужные поля? |
#7
|
|||
|
|||
![]() Цитата:
Что обновить? Как скрывать - я тебе написал. Если ты считаешь суммы в запросе, то просто обновляешь запрос. Запрос: Код:
SELECT ID, Name, PriceRUB, PriceRUB / (SELECT Rate FROM XRate WHERE та-та-та выборка нужного курса) AS PriceUSD FROM Goods Выдает тебе ID, имя товара, его цену в руб и в долларях, получая курс из соотв. таблички XRate. А в Дельфях на квере дважды щелкаешь и добавляешь все поля из запроса и настраиваешь у них св-во Visible. Когда ты так добавишь поля, то дельфя тебе создаст соответсвующие им атрибуты в форме, т.е. у тебя к ним будет доступ. |
#8
|
||||
|
||||
![]() Мне больше по душе 2-й вариант, что я выше писал.
Допустим создано вычисляемое поле sum. В вашей таблице есть поле summa, в котором записано значение в рублях. В событии OnCalCField компонента Table пишем. Код:
if CheckBox1.Checked then ADOTable1.FieldByName('sum').AsCurrency:=ADOTable1.FieldByName('summa').AsCurrency*25 else ADOTable1.FieldByName('sum').AsCurrency:=ADOTable1.FieldByName('summa').AsCurrency; В событии OnClick CheckBox пишем. Код:
ADOTable1.Close; ADOTable1.Open; |
#9
|
|||
|
|||
![]() Не, у меня красивее получается. И курс можно брать хоть из базы, хоть извне. И переоткрывать не надо без нужны, а ну как у него там 1000 записей тянется? Пусть сервер работает
![]() |
#10
|
||||
|
||||
![]() Цитата:
Только один момент. Там наверное все же знак умножения, а не деления. Код:
SELECT ID, Name, PriceRUB, PriceRUB * (SELECT Rate FROM XRate WHERE та-та-та выборка нужного курса) AS PriceUSD FROM Goods |