Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.10.2010, 06:49
slai slai вне форума
Прохожий
 
Регистрация: 26.10.2010
Сообщения: 4
Репутация: 10
По умолчанию День рождения бонусы

Здравствуйте. У меня есть форма скриншот во вложении. Как сделать так чтобы в поле обведенном красным при вводе цифр начислялось количество бонусов тем у кого день рождение в период акции?

Код:
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.
Изображения
Тип файла: jpg новая акц.JPG (54.3 Кбайт, 31 просмотров)
Ответить с цитированием
  #2  
Старый 26.10.2010, 21:39
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Это же просто - у тебя есть дата от и до
вот поставь фильтр на дату...
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #3  
Старый 27.10.2010, 03:06
slai slai вне форума
Прохожий
 
Регистрация: 26.10.2010
Сообщения: 4
Репутация: 10
По умолчанию

Цитата:
Сообщение от Electronic_Arts
Это же просто - у тебя есть дата от и до
вот поставь фильтр на дату...
Напишите пожалуйста я в этом новечек.
Ответить с цитированием
  #4  
Старый 27.10.2010, 20:38
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

попробуй так
Код:
select * from Table where Date between Date1 and Date2

сам не пробовал еще - под рукой нету базы с датой...если что выложи исходник или же базу - допишу
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #5  
Старый 27.10.2010, 21:06
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А почему вы все операции с MSSQL проводите на клиенте? У вас нет менеджера доступа к серверу?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 09.11.2010, 06:15
slai slai вне форума
Прохожий
 
Регистрация: 26.10.2010
Сообщения: 4
Репутация: 10
По умолчанию

Здравствуйте. Помогите пожалуйста написать скрипт который будет считать количество карточек в таблице card у каждой карты есть свой card_id. Потом будет проверять дату сервера и дату рождения участника из таблицы owner столбца date_of_birth. Таблицы card и owner связываются по card_id. При проверки по дате если день и месяц date_of_birth совпадает с серверной датой то должно начисляться определенное количество бонусов в столбец bonus_4 таблицы card бонусы берутся из таблицы act_new столбца amount_bonus. Структура БД MSSQL. Помогите пожалуйста.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:38.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter