![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Приветствую
В проге есть 2 кнопки: Рассчитать и Сохранить, это некий калькулятор затрат для заявки на услуги При нажатии "Рассчитать" берутся данные из БД для текущей выбранной заявки (назову их константами в данном контексте). Констант 10 штук, с помощью них осуществляется пересчет по формулам (константы для удобства пихаю в глобальные переменные), выводится сумма. Если пользователя все устраивает, он жмет сохранить - константы (т.е. глобальные переменные) сохраняются в БД. Как мне уйти от использования глобальных переменных? Есть мысль создать класс (в первый раз, не судите строго), например такой: Код:
... TMyConst = Class private FDlina: double; FShirina: double; // и т.д. public function SetDlina(Value: string): double; function SetShirina(Value: string): double; property Dlina: double read FDlina write SetDlina; property Shirina: double read FShirina write SetShirina; //.... end; ... implementation function SetDlina(Value: string): double; begin ADOQuery.SQL.Text:='SELECT BDlina FROM const WHERE nomer = "' + value + '"'; ADOQuery.Open; Result:=ADOQuery.FieldByName('BDlina').asfloat; end; // Аналогично с остальными константами НО! Получается, что для каждой переменной-поля будет отдельный запрос! Как то неправильно выходит - 10 запросов вместо одного Нельзя ли как-то сделать так, чтобы установить все константы одним запросом ('SELECT BDlina, BShirina, ...... FROM const WHERE nomer = "' + value + '"' ![]() Я за здоровый экстрим! Спасибо за "спасибо") |
#2
|
||||
|
||||
![]() Приведенная функция SetDlina не подходит. Если она должна менять конфигурацию - нужно что-то в этом роде:
Код:
procedure GetSettings(Value: string); begin ADOQuery.SQL.Text:='<запрос на все параметры>'; ADOQuery.Open; FDlina := ADOQuery.FieldByName('BDlina').asfloat; FShirina := ADOQuery.FieldByName('BShirina').asfloat; ... end; З.Ы. с пропертями почти не работал, не люблю их. Но насколько помню, для установки значения функция должна не возвращать double, а явно записывать в поле. jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 29.01.2014 в 20:12. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Mrak (29.01.2014)
|
#3
|
||||
|
||||
![]() а еще есть способы избавления от глобальных переменных?
Я за здоровый экстрим! Спасибо за "спасибо") |
#4
|
||||
|
||||
![]() Цитата:
Запись (record) -- самый простой способ передачи окружения. Если окружение разрастается во что-то сложное и становится конфигурацией со своей собственной моделью, его реализуют в виде класса или набора классов. Пока рано, как мне кажется. ![]() Не стоит путать форумы с богадельнями. © Bargest |
Этот пользователь сказал Спасибо Freeman за это полезное сообщение: | ||
Mrak (30.01.2014)
|