Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi+InterBase]Расчет суммы стоимости услуги 
V
    Опции темы
Gamber
Дата 20.4.2009, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 24.3.2008

Репутация: нет
Всего: нет



Доброго всем времени суток...
Пишу небольшое приложение для учета оказанных услуг...
Есть три таблицы:
1. Клиенты
2. Услуги
3. Оказанные услуги

При добавлении или изменении клиента, необходимо расчитать сумму которую он должен платить за услуги... Т.е необходимо реализовать, что-то вроде калькулятора, который запустившись в отдельном окне и используя данные о стоимости услуг из таблицы 2, подсчитает итоговую сумму для конкретного клиента и подставит ее в соответствующий DBEdit формы редактирования/добавления пользователя...

Можно ли такое реализовать, подскажите пожалуйста...
PM MAIL   Вверх
Keeper89
Дата 20.4.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 1
Всего: 58



Какая СУБД?


--------------------
PM MAIL WWW   Вверх
insoft
Дата 20.4.2009, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 14.2.2007
Где: Тюменская область , г.Тобольск

Репутация: нет
Всего: 3



Gamber
элементарно делается средствами хранимой процедуры
PM MAIL WWW   Вверх
Gamber
Дата 20.4.2009, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 24.3.2008

Репутация: нет
Всего: нет



Rodman, прошу прощения забыл указать...
СУБД - InterBase 6.5

С расчетом вроде бы удалось разобраться - сделал суммирование с помощью IBQuery...

А вот с очисткой таблицы после закрытия окна калькулятора не выходит, попробовал сделать тоже с помощью IBQuery (напсал в нем DELETE FROM sel_connects и повесил его исполнение на закрытие окна), не выходит, ругается что к пустому датасету применить операцию нельзя, хотя значения в датасете при закрытии есть ...

PM MAIL   Вверх
insoft
Дата 20.4.2009, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 14.2.2007
Где: Тюменская область , г.Тобольск

Репутация: нет
Всего: 3



Gamber, код в студию как делаешь?
PM MAIL WWW   Вверх
Gamber
Дата 21.4.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 24.3.2008

Репутация: нет
Всего: нет



Вот код:
Код

procedure TdmClient.aCalcSelConnectsExecute(Sender: TObject);
begin
  IBQCalc.Refresh;
  fmEditClients.ehnumCostConnect.Value := IBQCalc.FieldValues['SUM'];
  fmSelConnects.Close;
  gbSel_Connects.Refresh;
  gbSel_Connects.Close;
  IBQClear.Refresh;
end;


Calc работает нормально, а вот с Clear ничего не выходит...
Пробовал по разному:
IBQClear.ExecSQL (т.е. не используя IBQUpdate) (access violation)
IBQClear.Delete (ругается на пустой датасет);
IBQClear.Refresh (ругается на открытый датасет)

Проверил запрос (да какой там запрос, одна строчка) на сервере, работает нормально, все удаляет... На триггер подвесить не получается так как моя ситуация ни одним не описывается...

Помогите пожалуйста  smile 
PM MAIL   Вверх
insoft
Дата 21.4.2009, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 14.2.2007
Где: Тюменская область , г.Тобольск

Репутация: нет
Всего: 3



используй простой IBQuery
Код

IBQuery.close;
IBQuery.SQL.clear;
IBQuery.sql.add := 'delete from NameTable';
IBQuery.ExecSQL;

ну и соответственно к кверику у тебя должна быть привязана IBTransaction 

Это сообщение отредактировал(а) insoft - 21.4.2009, 15:14
PM MAIL WWW   Вверх
Gamber
Дата 21.4.2009, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 24.3.2008

Репутация: нет
Всего: нет



insoft,  пошло, большое спасибо... Только писал не Add, а Text...

И еще такой вопрос...
Почему
Код

  gbSel_Connects.Refresh;
  gbSel_Connects.Close;
  IBQClear.ExecSQL;

не работает, а
Код

  gbSel_Connects.Refresh;
  gbSel_Connects.Close;  
  IBQClear.close;
  IBQClear.SQL.clear;
  IBQClear.sql.Text := 'delete from sel_connects';
  IBQClear.ExecSQL;

работает...

В чем принципиальная разница конструкций?

Ага... Добавил IBQClear.Close и все заработало...


Это сообщение отредактировал(а) Gamber - 21.4.2009, 15:35
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0598 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.