Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.90/10: Рейтинг темы: голосов - 10, средняя оценка - 4.90
slai
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 57
1

Начисление бонусов

25.10.2010, 09:22. Просмотров 1731. Ответов 30
Метки нет (Все метки)

Здравствуйте. Наставьте на путь истинный пожалуйста. Существует база sql, а также программа для создания новых акций в магазине и добавления в нее участников. Как мне реализовать чтобы определенное количество бонусов начислялось на бонусную карту владельца в день его рождения?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2010, 09:22
Ответы с готовыми решениями:

Начисление коэффициента при перемещении обьекта
Нужно написать условие, чтобы при перемещении объекта(он перемещается при...

Добавление бонусов для игры "Арканоид"
Доброго времени суток Прошу вашей помощи ибо я не особо представляю как это...

Раздача бонусов на сайте
дравствуйте. Вот мой сайт. Раньше раздавал бонусы нормально. теперь ошибка...

Скрипт wmr бонусов+
Кто-нить может подсказать где можно скачать, или как написать скрипт для...

Сбор бонусов wmr
Как выглядит код если я запрошу копейку от сюда...

30
MAcK
Комбайнёр
1572 / 670 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
25.10.2010, 11:11 2
Нужно запускать скрипт каждый день, который будет проверять даты и начислять бонусы
0
slai
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 57
25.10.2010, 11:12  [ТС] 3
А где можно взять этот скрипт?
0
Arustarh Dark
58 / 57 / 12
Регистрация: 08.06.2008
Сообщений: 243
25.10.2010, 12:13 4
Цитата Сообщение от slai Посмотреть сообщение
А где можно взять этот скрипт?
Написать?
0
slai
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 57
26.10.2010, 02:56  [ТС] 5
Цитата Сообщение от Arustarh Dark Посмотреть сообщение
Написать?
Да буду очень благодарен.
0
Arustarh Dark
58 / 57 / 12
Регистрация: 08.06.2008
Сообщений: 243
26.10.2010, 08:11 6
Вообще-то имелось в виду: "Написать самому", но могу помочь если буду знать хотя-бы структуру БД.
0
slai
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 57
26.10.2010, 08:14  [ТС] 7
Помогите пожалуйста. Что именно из структуры вам надо?
0
Arustarh Dark
58 / 57 / 12
Регистрация: 08.06.2008
Сообщений: 243
26.10.2010, 08:49 8
Какая СУБД используется?
Структура "заинтересованных" таблиц (информация о клиенте, в часности дата рождения и информация о бонусной карте) и связи между ними.
0
slai
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 57
26.10.2010, 09:23  [ТС] 9
Цитата Сообщение от Arustarh Dark Посмотреть сообщение
Какая СУБД используется?
Структура "заинтересованных" таблиц (информация о клиенте, в часности дата рождения и информация о бонусной карте) и связи между ними.
Microsoft SQL server.
Первая таблица Card:
card_id
sync_id
card_number
active
date_activated
date_deactivated
bonus
sms_counter
email_counter
password
member_id
shop_id

Вторая таблица Owner:
owner_id
card_id
flag_send_by_email
flag_send_to_mobile
f
i
o
IDDocument
date_of_birth
home_address
Связываются между собой card_id
0
Arustarh Dark
58 / 57 / 12
Регистрация: 08.06.2008
Сообщений: 243
26.10.2010, 10:55 10
Если не задумываться о оптимизации, то примерно так (не проверялось, т.к. не на чем):
SQL
1
2
3
4
5
6
7
UPDATE [card]
SET [bonus] = [bonus] + 10
WHERE [card_id] IN
 (
   SELECT [card_id] FROM [owner]
   WHERE CAST(FLOOR(CAST([date_of_birth] AS FLOAT)) AS datetime) = CAST(FLOOR(CAST(getdate() AS FLOAT)) AS datetime)
 )
ЗЫЖ Добавляет 10 бонусов
0
slai
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 57
26.10.2010, 10:57  [ТС] 11
Цитата Сообщение от Arustarh Dark Посмотреть сообщение
Если не задумываться о оптимизации, то примерно так (не проверялось, т.к. не на чем):
SQL
1
2
3
4
5
6
7
UPDATE [card]
SET [bonus] = [bonus] + 10
WHERE [card_id] IN
 (
   SELECT [card_id] FROM [owner]
   WHERE CAST(FLOOR(CAST([date_of_birth] AS FLOAT)) AS datetime) = CAST(FLOOR(CAST(getdate() AS FLOAT)) AS datetime)
 )
ЗЫЖ Добавляет 10 бонусов
Спасибо. А в коде программы куда это именно совать?
0
Arustarh Dark
58 / 57 / 12
Регистрация: 08.06.2008
Сообщений: 243
26.10.2010, 10:59 12
ЭЭЭЭЭЭЭЭЭ.........
Не я ж писал программу, я даже не в курсе на каком она языке. Это просто скрипт.
0
slai
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 57
26.10.2010, 11:06  [ТС] 13
Вот код программы и скрин. Куда именно в коде это вставлять подскажите пожалуйста?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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_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;
 
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_dbTest.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_dbTest.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.
0
Миниатюры
Начисление бонусов  
Arustarh Dark
58 / 57 / 12
Регистрация: 08.06.2008
Сообщений: 243
26.10.2010, 11:21 14
Что-то я не пойму нифига. Ты разъясни конкретно, что значит каждое поле на форме.
0
slai
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 57
26.10.2010, 11:25  [ТС] 15
Вводим название акции потом описание акции. Начинается и заканчивается это период в котором будет действовать новая акция. Бонусы это сколько будет выделено бонусов на данную акцию. День рождения при выборе галочки появляется возможность добавить бонусов тем людям у которых будет день рождение в период действия акции. Вот этот пункт я и не могу сделать.
0
Arustarh Dark
58 / 57 / 12
Регистрация: 08.06.2008
Сообщений: 243
26.10.2010, 11:32 16
Т.е., как я понял, у тебя есть список акций, и у каждой акции есть признак "добавлять бонусы тем у кого день рождения во время проведения акции", ну и количество бонусов.
Значит делать следует так:
1. Смотрим если ли сегодня акция (выборка по текущей дате из списка акций).
2. Начисляются ли бонусы именинникам (проверка текущей акции на предмет "галочки")
3. Если начисляются, берем количество бонусов (тоже из текущей акции), подставляем в мой скрипт это число вместо 10 и запускаем скрип на выполнение.

Все скорее всего можно сделать и одним запросом, но для этого мне нужно увидеть БД.
0
slai
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 57
27.10.2010, 04:33  [ТС] 17
Спасибо большое за помощь. Эх жалко уже домой пора идти, если будут вопросы завтра напишу. А они скорее всего будут =)

Добавлено через 16 часов 55 минут
Цитата Сообщение от Arustarh Dark Посмотреть сообщение
Т.е., как я понял, у тебя есть список акций, и у каждой акции есть признак "добавлять бонусы тем у кого день рождения во время проведения акции", ну и количество бонусов.
Значит делать следует так:
1. Смотрим если ли сегодня акция (выборка по текущей дате из списка акций).
2. Начисляются ли бонусы именинникам (проверка текущей акции на предмет "галочки")
3. Если начисляются, берем количество бонусов (тоже из текущей акции), подставляем в мой скрипт это число вместо 10 и запускаем скрип на выполнение.

Все скорее всего можно сделать и одним запросом, но для этого мне нужно увидеть БД.
Не получается у меня если вам не сложно можете написать запросы пожалуйста.
Правельно я себе представляю?
T-SQL
1
2
3
4
update bonus_dbTest.dbo.card set bonus_'+inttostr(field_id)+'='+Edit3.Text+' where month(date_of_birth) >= month '+fdate(DateTimePicker1.Date)+' and
 month(date_of_birth) <= month '+fdate(DateTimePicker2.Date)+' and
 day(date_of_birth) >= day '+fdate(DateTimePicker1.Date)+' and
 day(date_of_birth) <= day '+fdate(DateTimePicker2.Date)+';
0
Arustarh Dark
58 / 57 / 12
Регистрация: 08.06.2008
Сообщений: 243
27.10.2010, 05:28 18
Цитата Сообщение от slai Посмотреть сообщение
Не получается у меня если вам не сложно можете написать запросы пожалуйста.
Я ж говорил выше, чтобы написать запросы мне надо увидеть базу.
0
slai
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 57
27.10.2010, 05:30  [ТС] 19
Какие именно вам таблицы надо увидеть?
0
Arustarh Dark
58 / 57 / 12
Регистрация: 08.06.2008
Сообщений: 243
27.10.2010, 05:35 20
Таблица с акциями, таблица с карточками, таблица с людьми.
Короче все задействованные в "раздаче слонов".
0
27.10.2010, 05:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2010, 05:35

Сборщик WebMoney бонусов
Существует ли рабочий сборщик бонусов? Раньше пользовался FreeWM, который...

запрос о количестве бонусов в колонке
подскажите пожалуйста запрос в базу о состоянии счета столбец bonuses в...

зачисление бонусов по количеству записей
Здравствуйте, встала задача делать поощрения пользователям за присылаемые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru