Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2010, 01:36   #1
Asblue
Пользователь
 
Аватар для Asblue
 
Регистрация: 21.10.2010
Сообщений: 78
Восклицание Запрос для подсчёта произвдения поля

Пожалуйста, скажите как написать запрос для поля nalog, чтоб в нём считался налог: поле summa/100*19+summa.
При нажатии кнопки Добавить данные из заполненных полей переносятся в соответствующие поля таблицы и нужно, чтобы сразу подсчитывался и заносился налог.
Очень очень необходимо!!! Буду весьма благодарна
Безимени-1.jpg
Я что-то вот пыталась, но не получается...

Запрос SQL в ADOQuery
Код:
SELECT summa, nalog=summa/100*19+summa FROM schetfaktur
или так тоже пробовала:
Код:
SELECT summa, summa/100*19+summa AS nalog FROM schetfaktur
Писала процедуру для кнопки:
Код:
procedure TForm5.Button1Click(Sender: TObject);
begin
with ADOQuery1 do begin
active:=false;
SQL.Clear;
SQL.Add('SELECT summa, summa/100*19+summa AS nalog FROM schetfaktur');
active:=true;
end;
как-то всё безрезультатно...
Asblue вне форума Ответить с цитированием
Старый 18.12.2010, 12:29   #2
Dimasw
Пользователь
 
Регистрация: 12.09.2010
Сообщений: 69
По умолчанию

Я бы рекомендовал поле nalog создать калькулируемым, а рассчитанный в этом калькулируемом поле налог в базу данных вносить по событию afterPost таблицы или вообще сделать отдельной процедурой внесение записи в базу (не навигатором).
Таким образом кнопка Добавить становится лишней (пусть налог автоматически рассчитывается при условии заполнения всех нужных полей).
Если все-таки идти строго по Вашему пути, то надо бы знать какой СУБД пользуетесь, чтобы SQL синтаксис проверить.
SELECT BEST FROM LIFE
Dimasw вне форума Ответить с цитированием
Старый 18.12.2010, 13:06   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
как-то всё безрезультатно...
Как это безрезультатно? Отлично работает. Только я не вижу оператора Where

Код:
SELECT summa, summa/100*19+summa AS nalog FROM schetfaktur where <что-то> = <чему-то>
. Иначе будет выбираться первая строка.
Пример
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
  with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT summa, (summa/100*19)+summa AS nalog FROM schetfaktur where id=1');
    Open;
  end;
  ShowMessage(ADOQuery1.FieldValues['nalog']);
end;
И еще я бы рекомендовал ставить скобки
Код:
SELECT summa, (summa/100*19) + summa AS nalog...
Понятно, что сначала умножение и так выполнится, но все равно это делает код более понятным.
_SERGEYX_ вне форума Ответить с цитированием
Старый 18.12.2010, 15:44   #4
Asblue
Пользователь
 
Аватар для Asblue
 
Регистрация: 21.10.2010
Сообщений: 78
По умолчанию

_SERGEYX_, а поле id=1 после слова WHERE - это т.е поле nomer в таблице schetfactur или какое? И что, если вдруг id не = 1?
У меня просто ошбку выводит.

И может быть тут нужен вообще другой запрос - не SELECT, а UPDATE?
У меня просто с этим вообще не получается разобраться.

Спасибо!
Asblue вне форума Ответить с цитированием
Старый 18.12.2010, 15:50   #5
Asblue
Пользователь
 
Аватар для Asblue
 
Регистрация: 21.10.2010
Сообщений: 78
По умолчанию

Dimasw , а что значит поле nalog создать калькулируемым? И как налог в базу данных вносить по событию afterPost таблицы или сделать отдельной процедурой внесение записи в базу (не навигатором)?

Цитата:
Сообщение от Dimasw Посмотреть сообщение
Если все-таки идти строго по Вашему пути, то надо бы знать какой СУБД пользуетесь, чтобы SQL синтаксис проверить.
База на MS SQL Server 2008.
Asblue вне форума Ответить с цитированием
Старый 18.12.2010, 21:07   #6
Dimasw
Пользователь
 
Регистрация: 12.09.2010
Сообщений: 69
По умолчанию

На компоненте ADODataSet через правую клавишу мыши добавляем новое поле (например Nalog) и назначаем ему свойство Calculated.

Затем в событии onCalcFields прописываем процедуру расчета налога.
Код:
DataSet.FieldByName('Nalog').AsFloat=DataSet.fieldbyname('summa').asfloat/100*19+DataSet.fieldbyname('summa').asfloat
Изображения
Тип файла: jpg calc.jpg (53.0 Кб, 111 просмотров)
SELECT BEST FROM LIFE
Dimasw вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запрос суманого подсчёта за последний месяц N@um Microsoft Office Access 5 29.04.2010 23:45
Запрос на добавление поля в таблицу mirawoo Microsoft Office Access 9 17.07.2008 16:44
SQL запрос требует ненужные поля alikon1 БД в Delphi 5 12.10.2007 09:50
Формула в Экселе для подсчёта стоимости Oxidous Microsoft Office Excel 13 31.08.2007 13:13