|
Вопрос # 4 693/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Подскажите пожалуйста. Как сделать так чтобы при добавлении новой акции бонусы начислялись по дате рождения участника? То есть автоматически проверялось есть у него сегодня день рождение или нет если есть то ему начислялись бонусы из столбца amount_bonus в столбец bonus.
Приложение: Переключить в обычный режим- unit Unit6;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, ComCtrls;
-
- type
- TForm6 = class(TForm)
- Edit1: TEdit;
- Memo1: TMemo;
- Label1: TLabel;
- Label2: TLabel;
- DateTimePicker1: TDateTimePicker;
- DateTimePicker2: TDateTimePicker;
- Label3: TLabel;
- Label4: TLabel;
- Edit2: TEdit;
- Label5: TLabel;
- Edit3: TEdit;
- Label6: TLabel;
- CheckBox1: TCheckBox;
- CheckBox2: TCheckBox;
- Label7: TLabel;
- RadioButton1: TRadioButton;
- Label8: TLabel;
- RadioButton2: TRadioButton;
- Button1: TButton;
- CheckBox3: TCheckBox;
- Button2: TButton;
- procedure RadioButton1Click(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- procedure RadioButton2Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- procedure FormActivate(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form6: TForm6;
- field_id:byte;
- act_id:integer;
- implementation
-
- uses Unit3, Unit4, Unit2, Unit1;
-
- {$R *.dfm}
-
- procedure TForm6.RadioButton1Click(Sender: TObject);
- begin
- if RadioButton2.Checked then Button1.Enabled:=true else Button1.Enabled:=false;
- end;
-
- procedure TForm6.Button1Click(Sender: TObject);
- begin
- form4.ShowModal;
- end;
-
- procedure TForm6.RadioButton2Click(Sender: TObject);
- begin
- if RadioButton2.Checked then Button1.Enabled:=true else Button1.Enabled:=false;
- end;
-
- procedure TForm6.Button2Click(Sender: TObject);
- var res,i:integer;
- begin
- res:=0;
- if (RadioButton2.Checked and Checkbox3.Checked)or(RadioButton1.Checked) then
- begin
- DM.myproc.ExecProc;
- field_id:=DM.myproc.Params[0].AsInteger;
- DM.query.SQL.Text:='insert into
act_new(name,description,date_begin,date_end,active,amount_bonus,field_id)'+
- ' values('+char(39)+Edit1.Text+char(39)+','+
- char(39)+Memo1.Text+char(39)+','+
- 'convert(datetime,'+unit4.fdate(DateTimePicker1.Date)+'),'+
- 'convert(datetime,'+unit4.fdate(DateTimePicker2.Date)+'),'+
- copy(booltostr(checkbox1.Checked,false),length(booltostr(checkbox1.Checked,false)),1)+','+
- Edit2.Text+','+inttostr(field_id)+')';
- DM.query.ExecSQL(true);
- res:=res+DM.query.RowsAffected;
- DM.query.SQL.Text:='SELECT IDENT_CURRENT ('+char(39)+'dbo.act_new'+char(39)+') AS Current_Identity';
- DM.query.Open;
- DM.query.First;
- act_id:=DM.query.Fields[0].AsInteger;
- DM.query.Close;
- DM.query.SQL.Text:='alter table bonus_dbTest.dbo.spiski add act_'+inttostr(act_id)+
- ' bit NOT NULL CONSTRAINT DF_spiski_act_'+inttostr(act_id)+' DEFAULT
'+copy(booltostr(RadioButton1.Checked,false),length(booltostr(RadioButton1.Checked,false)),1);
- DM.query.ExecSQL(false);
- res:=res+DM.query.RowsAffected;
- DM.query.SQL.Text:='UPDATE [card] '+
- 'SET [bonus] = [bonus] + :mon '+
- 'WHERE [card_id] IN '+
- ' ( '+
- ' SELECT [card_id] FROM [owner] '+
- ' WHERE '+
- ' MONTH(date_of_birth) >= MONTH (:m1) AND '+
- ' MONTH(date_of_birth) <= MONTH (:m2) AND '+
- ' DAY(date_of_birth) >= DAY (:d1) AND '+
- ' DAY(date_of_birth) <= DAY (:d2) '+
- ' MONTH(date_of_birth) = MONTH(NOW()) AND'+
- ' DAY(date_of_birth) = DAY(NOW())'+
- ' )';
- DM.query.Params.ParseSQL(DM.query.SQL.Text,true);
- DM.query.Params.ParamByName('mon').Value:=StrToCurr(Edit2.Text);
- DM.query.Params.ParamByName('m1').Value:=DateTimePicker1.Date;
- DM.query.Params.ParamByName('m2').Value:=DateTimePicker2.Date;
- DM.query.Params.ParamByName('d1').Value:=DateTimePicker1.Date;
- DM.query.Params.ParamByName('d2').Value:=DateTimePicker2.Date;
- DM.query.ExecSQL();
-
-
- end;
- end;
-
-
-
-
- procedure TForm6.FormActivate(Sender: TObject);
- begin
- DateTimePicker1.Date:=Date;
- DateTimePicker2.Date:=Date;
- end;
-
- end.
 |
Вопрос задал: winterfell (статус: Посетитель)
Вопрос отправлен: 1 ноября 2010, 09:55
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 4; последнее сообщение — 17 ноября 2010, 21:02; участников в обсуждении: 3.
|
Мережников Андрей (статус: Абитуриент), 2 ноября 2010, 19:31 [#1]:
какая СУБД? Структура таблиц? Что значит автоматически - реализация на стороне сервера?
|
|
Мережников Андрей (статус: Абитуриент), 3 ноября 2010, 06:05 [#3]:
сервер такого (автоматически выполнять действия при изменении даты)делать не будет. Значит надо писать клиента, который при наступлении следующего дня посылает запрос на сервер для внесения изменений.
|
|
BurcevD (статус: Посетитель), 17 ноября 2010, 21:02 [#4]:
почему не может. Если это MS SQL то можно сделать скрипт процедуры, в которой будет проводится вся проверка и запланировать ее запуск о расписанию.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|