Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 15
1

Логическое отслеживание статуса аренды

24.05.2017, 22:26. Просмотров 946. Ответов 11

Всем привет. Есть тема, "Аренда принтеров". На нужной мне форме есть DBGrid, в нем вычисляемое поле "STATUS".
Суть: Сдаю принтер в аренду, поле DATA_ZAKAZA, до определенной даты DATA_VOZVRATA. Если принтер принесел не вовремя, т.е. позже на два для (поле SROK_VOZVRATA),то в STATUS в дбгриге отображалось "Просрочка".
Если притер еще в аренде, то "В аренде".
Если Принтер свободен, то "не в аренде".
Вот мой код на calcfields, но на каждую строку пишет в аренде.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TDataModule2.ADOTable10CalcFields(DataSet: TDataSet);
begin
   if (CompareDate(DataModule2.ADOTable10DATA_VOZVRATA.AsDateTime,Now)<=0) then
   begin
     DataModule2.ADOTable10status.AsString:='В аренде';
   end
   else
      if (CompareDate(DataModule2.ADOTable10DATA_VOZVRATA.AsDateTime,Now)>0) then
      begin
        if (DataModule2.ADOTable10SROK_VOZVRATA.AsString='') then
        begin
          DataModule2.ADOTable10status.AsString:='ÏНе в аренде';
        end
        else
        begin
          DataModule2.ADOTable10status.AsString:='Просрочка';
 
        end;
      end;
 
end;
Добавлено через 11 минут
Буду очень благодарен
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2017, 22:26
Ответы с готовыми решениями:

Отслеживание статуса заказа
Вобщем суть вопроса такова: хочу создать небольшой закрытый сайт для оптовых покупателей, и...

Сервисы аренды баз данных
Не видел таких ранее и не могу найти. Есть ли сервисы, которые предоставляют внешнюю базу данных?...

Учет аренды группы товаров
Помогите плиз. Пытаюсь создать таблицу по учету аренды товаров, но не знаю как и в каком виде лучше...

Зависимость цены аренды от даты
Ребят помогите!!! не могу сообразить Нужно чтобы цена зависила от даты Пример Цена от...

11
4300 / 3574 / 1204
Регистрация: 14.04.2014
Сообщений: 16,929
Записей в блоге: 17
25.05.2017, 20:12 2
Зачем CompareDate если можно просто > и <
напишите сначала словами потом переведите на паскаль
тут очевидно ошибка и в логике и в формате таблицы
дата возврата - это когда вернул или ДОЛЖЕН был вернуть?
если первый вариант, то как узнать, что началась просрочка?
если второй - как узнать, вернул уже или нет???
0
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 15
26.05.2017, 12:40  [ТС] 3
Дата возврата - дата, когда должен вернуть принтер.

А как посоветуете реализовать то, чтоб знать вернул или нет? Вычисляемыми полями?
0
4300 / 3574 / 1204
Регистрация: 14.04.2014
Сообщений: 16,929
Записей в блоге: 17
26.05.2017, 13:08 4
Совсем нет
Должны быть поля Дата выдачи, Срок аренды, Дата возврата
Вычисляемое поле Статус
если текущая дата between Дата выдачи and (Дата выдачи + Срок аренды) то "В аренде"
если (текущая дата > (Дата выдачи + Срок аренды))and(not fieldByName('<Дата возврата>').IsNull) то "Просрочено"
0
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 15
26.05.2017, 21:07  [ТС] 5
И все это на какую процедуру? CalcField?
0
4300 / 3574 / 1204
Регистрация: 14.04.2014
Сообщений: 16,929
Записей в блоге: 17
27.05.2017, 18:58 6
вычисляемое поле - в OnCalcFields конечно
остальное - в базе
0
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 15
27.05.2017, 22:30  [ТС] 7
А как написать "еСЛИ ТЕКУЩАЯ ДАТА"?
if if DataModule2.AsDateTime,Now???
-----------------------------------
Я просто больше в web работаю, строго не суди
0
1675 / 918 / 329
Регистрация: 29.05.2013
Сообщений: 4,292
27.05.2017, 23:13 8
Сравнить можно что-то с чем-то, а текущая дата сама по себе уже дата.
А вот если у вас есть какая-то дата в базе и вы хотите проверить не совпадает ли она с текущей, тогда так:
Delphi
1
if DataSet['MyDate'] = Now then ShowMessage('Опачки, а уже сегодня!')
0
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 15
27.05.2017, 23:38  [ТС] 9
если текущая дата between Дата выдачи and (Дата выдачи + Срок аренды) то "В аренде"

Напишите, а?)
0
4300 / 3574 / 1204
Регистрация: 14.04.2014
Сообщений: 16,929
Записей в блоге: 17
27.05.2017, 23:41 10
Лучший ответ Сообщение было отмечено Orphey как решение

Решение

Delphi
1
2
if (Now()> dataset.FieldByName('Date1').AsDateTime) and (now()<=dataset.FieldByName('RentDate').AsDateTime+dataset.FieldByName('RentDays').AsInteger) then 
  dataset.FieldByName('Status').asString := 'В аренде';
1
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 15
28.05.2017, 00:21  [ТС] 11
Огромнейшее спасибо, это все работает правильно. Форма конечно еще очень некрасивая,но не суть.
А как бы вы предложили реализовать есть ли в наличии свободный для аренды принтер(как бы остатки)?
0
Миниатюры
Логическое отслеживание статуса аренды  
1036 / 853 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
28.05.2017, 01:21 12
для этого, пожалуй, надо иметь иметь таблицу с имеющимся парком принтеров
P/S/ вы в аренду сдаете просто Canon? без опозновательных знаков какой именно из десятка имеющихся?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2017, 01:21

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

Программа вычисления ценности аренды автомобиля
1. Напишите программу вычисления ценности аренды автомобиля. Входные данные - час аренды и тип...

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

Организация бд для салона аренды авто
добрый день, пишу приложение на c# (курсовая), хотелось бы услышать советов по составлению er...

Реализация функционала аренды в новой конфигурации
Доброго времени суток.. Подскажите.. Имею задание создать конфигурацию по аренде товара... На...


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

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

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