| 
| 
 | Вопрос # 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);beginif RadioButton2.Checked then Button1.Enabled:=true else Button1.Enabled:=false;end; procedure TForm6.Button1Click(Sender: TObject);beginform4.ShowModal;end; procedure TForm6.RadioButton2Click(Sender: TObject);beginif RadioButton2.Checked then Button1.Enabled:=true else Button1.Enabled:=false;end; procedure TForm6.Button2Click(Sender: TObject);var res,i:integer;beginres:=0;if (RadioButton2.Checked and Checkbox3.Checked)or(RadioButton1.Checked) thenbeginDM.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);beginDateTimePicker1.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 то можно сделать скрипт процедуры, в которой будет проводится вся проверка и запланировать ее запуск о расписанию. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |