Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 712

/ вопрос открыт /

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

winterfell Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: winterfell (статус: Посетитель)
Вопрос отправлен: 9 ноября 2010, 05:59
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 9; последнее сообщение — 11 ноября 2010, 10:27; участников в обсуждении: 4.
6ruse

6ruse (статус: 1-ый класс), 9 ноября 2010, 07:36 [#1]:

можно полную структуру таблиц?
winterfell

winterfell (статус: Посетитель), 9 ноября 2010, 07:45 [#2]:

http://files.mail.ru/QA6U4Z
Vic

Vic (статус: 1-ый класс), 9 ноября 2010, 14:19 [#3]:

Напишите процедуру на сервере
Например вот так
if (SELECT COUNT(id_card),date_of_birth FROM card inner join owner on card.id_card=owner.id_card Group by day(date_of_birth) and
month(date_of_birth) having day(date_of_birth) = day(Getdate()) and month(date_of_birth) = month(GETDATE())) = здесь необходимое кол-во карт для начисления бонуса
Update card set bonus_4 = ваш бонус или что-то типа того
where здесь условия кому
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 9 ноября 2010, 20:50 [#4]:

для чего считать количество карт в одном запросе с изменением бонусов?

to Vic - Ваш запрос работать не будет, хотя бы потому, что вложенный запрос (SELECT COUNT(id_card),date_of_birth FROM...) возвращает значения двух полей, а сравнить пытаетесь с одним значением
winterfell

winterfell (статус: Посетитель), 10 ноября 2010, 08:10 [#5]:

Вот скрипт который добавляет бонусы.
--теперь надо им начислить бонусы, для начала надо выбрать текущую акцию
--исходим из того что текущая акция всего одна
DECLARE @bonus_money money
SELECT TOP 1 @bonus_money = amount_bonus FROM act_new
WHERE GetDate() BETWEEN date_begin AND date_end AND active = 1 AND birthday = 1
--select convert(nvarchar(50),@bonus_money)
--GO
--Теперь добавим бонусы
UPDATE card
SET bonus_4 = bonus_4 + @bonus_money
WHERE card_id IN
(
  SELECT card_id FROM card
  WHERE card_id IN
  (
    SELECT card_id FROM owner
    WHERE DAY(GetDate()) = DAY(date_of_birth) AND MONTH(GetDate()) = MONTH(date_of_birth)
  )
)
SELECT * FROM card WHERE

и скрипт который списывает бонусы по истечению срока действия
UPDATE card 
SET 
  bonus_4 = 0,
  date_end_bonus = NULL
WHERE
  cast(floor(cast(date_end_bonus AS float)) AS datetime) = cast(floor(cast(GetDate() AS float)) AS datetime)
А как сделать так чтобы сохраняло информацию в txt или excel формат о том сколько было начислено , кому, когда, дата списания бонусов ?
winterfell

winterfell (статус: Посетитель), 11 ноября 2010, 04:56 [#6]:

Как сделать скрипт который будет сохранять историю начисления и списания бонусов в Excel.Таблицы должно быть две начислено и списано. Начислено содержит номер карты (card_number) из таблицы БД card, fio из таблицы owner, сумма бонусов начислено(charge_summ) и дата начисления (charge_date). также и для второй таблицы.Помогите пожалуйста.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 11 ноября 2010, 05:29 [#7]:

Вы уверены, что на компьютере, где установлен MS SQL установлен и MS Excel?
winterfell

winterfell (статус: Посетитель), 11 ноября 2010, 06:03 [#8]:

Уверен.
winterfell

winterfell (статус: Посетитель), 11 ноября 2010, 10:27 [#9]:

Запрос на добавление данных написал, а как сделать чтобы это экспортировалось в excel файл?
SELECT O.F + ' ' + O.I + ' ' +O.o AS FIO, C.card_number, 
  B.charge_date, B.charge_summ 
FROM OWNER O
INNER JOIN CARD C ON C.card_id = O.card_id
INNER JOIN ChargeBirth B ON B.card_id = O.card_id

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:39
Выполнено за 0.03 сек.