|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
День рождения бонусы
Здравствуйте. У меня есть форма скриншот во вложении. Как сделать так чтобы в поле обведенном красным при вводе цифр начислялось количество бонусов тем у кого день рождение в период акции?
Код:
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm2 = class(TForm) Label1: TLabel; Edit1: TEdit; Label2: TLabel; Label3: TLabel; DateTimePicker1: TDateTimePicker; DateTimePicker2: TDateTimePicker; Label4: TLabel; CheckBox1: TCheckBox; Label5: TLabel; Edit2: TEdit; CheckBox2: TCheckBox; Button1: TButton; Label6: TLabel; Button2: TButton; Memo1: TMemo; RadioButton1: TRadioButton; RadioButton2: TRadioButton; Label7: TLabel; CheckBox3: TCheckBox; CheckBox4: TCheckBox; Label8: TLabel; Edit3: TEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure RadioButton2Click(Sender: TObject); procedure RadioButton1Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure CheckBox4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; field_id:byte; act_id:integer; implementation uses Unit4, Unit3, Unit1; {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); begin form4.ShowModal; end; procedure TForm2.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+','+Edit3.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_db.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; if RadioButton2.Checked then begin for i:=1 to Form4.mems.RowCount-1 do begin DM.query.SQL.Text:= 'update bonus_dbTest.dbo.spiski set act_'+inttostr(act_id)+'=1 where card_number = '+char(39)+Form4.mems.Cells[1,i]+char(39); DM.query.ExecSQL(false); res:=res+DM.query.RowsAffected; Application.ProcessMessages; end; end; DM.query.SQL.Text:= 'declare @mycur cursor,'+ ' @c_num varchar(30);'+ ' set @mycur = cursor for select card_number from bonus_db.dbo.spiski where act_'+inttostr(act_id)+' = 1;'+ ' open @mycur;'+ ' while 1=1'+ ' begin'+ ' fetch next from @mycur into @c_num;'+ ' if @@fetch_status<>0 break;'+ ' update bonus_db.dbo.card set bonus_'+inttostr(field_id)+'='+Edit2.Text+' where card_number = @c_num;'+ ' end;'+ ' close @mycur;'; DM.query.ExecSQL(false); if res>1 then begin MessageBox(Form2.Handle,'Íîâàÿ àêöèÿ óñïåøíî äîáàâëåíà','Óñïåõ',0); close; Form1.refr; end else MessageBox(Form2.Handle,'Íå óäàëîñü äîáàâèòü àêöèþ','Îøèáêà',0); end else MessageBox(Form2.Handle,'Ñíà÷àëà âûáåðèòå ó÷àñòíèêîâ àêöèè èëè îòìåòüå âñåõ','Èíôîðìàöèÿ',0); end; procedure TForm2.RadioButton2Click(Sender: TObject); begin if RadioButton2.Checked then Button1.Enabled:=true else Button1.Enabled:=false; end; procedure TForm2.RadioButton1Click(Sender: TObject); begin if RadioButton2.Checked then Button1.Enabled:=true else Button1.Enabled:=false; end; procedure TForm2.FormActivate(Sender: TObject); begin DateTimePicker1.Date:=Date; DateTimePicker2.Date:=Date; end; procedure TForm2.CheckBox4Click(Sender: TObject); begin edit3.Enabled:=true; end; end. |
#2
|
||||
|
||||
Это же просто - у тебя есть дата от и до
вот поставь фильтр на дату... Нет ничего не возможного. Вопрос только во времени... |
#3
|
|||
|
|||
Цитата:
|
#4
|
||||
|
||||
попробуй так
Код:
select * from Table where Date between Date1 and Date2 сам не пробовал еще - под рукой нету базы с датой...если что выложи исходник или же базу - допишу Нет ничего не возможного. Вопрос только во времени... |
#5
|
||||
|
||||
А почему вы все операции с MSSQL проводите на клиенте? У вас нет менеджера доступа к серверу?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
Здравствуйте. Помогите пожалуйста написать скрипт который будет считать количество карточек в таблице card у каждой карты есть свой card_id. Потом будет проверять дату сервера и дату рождения участника из таблицы owner столбца date_of_birth. Таблицы card и owner связываются по card_id. При проверки по дате если день и месяц date_of_birth совпадает с серверной датой то должно начисляться определенное количество бонусов в столбец bonus_4 таблицы card бонусы берутся из таблицы act_new столбца amount_bonus. Структура БД MSSQL. Помогите пожалуйста.
|