Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2014, 10:08   #1
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию раскрасить dbgrid, проверка дата и процент

Здравствуйте ребята . есть такой структура . На пример

1. Ломбард принимает технику в залоге и выдает кредит на 10 день период, А клиент должен оплатить проценты .

Код:
create table Priem -- Таб. для приема товаров . это на пример
(
pr_id int identity(1,1) primary key,
pr_naimenovan varchar(40), -- Наименование товар
pr_date datetime, -- Дата приема 
pr_price money -- выданы деньги 
);
2. Таб. для процент , в примере

Код:
create table Procent
(
proc_id int identity(1,1),
proc_date datetime, -- дата оплаты процент 
proc_money money, -- сам процент
pr_priem_id integer, -- внешний ключ
constraint fk_procent foreign key(pr_priem_id) references Priem(pr_id) 
on delete cascade on update cascade
);
3. из Delphi работаю через Ado . Но это не важно на пример.
--------------------------------------------------------------------
Задача был такой: после 13 день раскрасить Grid- который отображает таблицу Priem на "желтый цвет" и после 20 день раскрасить на "красный цвет"
--------------------------------------------------------------------
раскрасил это я так и работает хорошо
qryPriem = это Adoquery для таблицу Priem -- Таб. для приема товаров
dbgrdPriem = это Dbdrid для таблицу Priem -- Таб. для приема товаров
Код:
procedure Tfrmmain.dbgrdPriemDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
    if qryPriem.RecordCount<>0 then
    begin
      if  Date - int(qryPriem.FieldByName('pr_date').AsDateTime) > 13   then
      begin
        dbgrdPriem.Canvas.Brush.Color:= $0000FFFF;
        dbgrdPriem.DefaultDrawColumnCell
        (Rect, DataCol, Column, State);
      end;
    end;
 if qryPriem.RecordCount<>0 then
    begin
  if  Date - int(qryPriem.FieldByName('pr_date').AsDateTime) > 20   then
  begin
    dbgrdPriem.Canvas.Brush.Color:= $00E46EFF;
    dbgrdPriem.DefaultDrawColumnCell
    (Rect, DataCol, Column, State);
  end;

end;
end;

end.
Д.З чуть усложняли и хочу ваши советь и помощь
---------------------------------------------------------------
Для процента таблица Procent и если клиент заплатить процент ! что не выделяться это красный и желтый цвет .
Как это реализовать ? Для примера создал 2 таблица в Access и набросал на форму все это grid и проект тоже выложу
Изображения
Тип файла: jpg 1.jpg (74.8 Кб, 119 просмотров)
Тип файла: jpg 2.jpg (70.6 Кб, 122 просмотров)
Тип файла: jpg 3.jpg (79.7 Кб, 131 просмотров)
Тип файла: jpg 4.jpg (79.5 Кб, 126 просмотров)
Вложения
Тип файла: rar Access_Delphi.rar (342.7 Кб, 12 просмотров)
xxbesoxx вне форума Ответить с цитированием
Старый 01.10.2014, 10:31   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Усложнить условие - кроме проверки даты проверять уплату процента из другого датасета
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.10.2014, 12:54   #3
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Аватар Спасибо за внимание. Как примерно "проверять уплату процента из другого датасета" ?
xxbesoxx вне форума Ответить с цитированием
Старый 01.10.2014, 13:14   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так примерно. Проект не смотрел
Код:
  if (qryPriem.RecordCount<>0) and (qryProcent.RecordCount=0) then
  begin
    if Date - int(qryPriem.FieldByName('pr_date').AsDateTime) > 20 then dbgrdPriem.Canvas.Brush.Color:= $00E46EFF
    else if Date - int(qryPriem.FieldByName('pr_date').AsDateTime) > 13 then dbgrdPriem.Canvas.Brush.Color:= $0000FFFF
    else Exit;
    dbgrdPriem.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.10.2014, 13:45   #5
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Аватар Огромное спасибо друг , щас проверю .
Не работает
Изображения
Тип файла: jpg 55_.jpg (124.9 Кб, 125 просмотров)

Последний раз редактировалось xxbesoxx; 01.10.2014 в 14:40.
xxbesoxx вне форума Ответить с цитированием
Старый 01.10.2014, 20:09   #6
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Да зависаю на одно месте .
Код:
and (qryProcent.RecordCount=0) // и если qryПроцент равно 0
не правильно работает . перехожу строке на который процент не оплачен уже прошел 13 день и он перерисовывает 2 строку. как его решать ребята ?
Изображения
Тип файла: jpg 67.jpg (61.2 Кб, 126 просмотров)
xxbesoxx вне форума Ответить с цитированием
Старый 01.10.2014, 21:12   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я чего-то наверное не понимаю, но почему в самом запросе не вычислять? Зачем описывать эти вычисления в Делфи?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.10.2014, 21:54   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В #4 туфта
Вложения
Тип файла: zip attachment.ZIP (29.4 Кб, 13 просмотров)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.10.2014, 00:20   #9
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я чего-то наверное не понимаю, но почему в самом запросе не вычислять? Зачем описывать эти вычисления в Делфи?
1. Спасибо за внимание , Спасибо что уделили мне время
2. Запросе да можно объединить это 2 таблица , Я думаю что это мне нечего не даст для "перерисовывание строк" . Может я ошибаюсь и не понял ваши советь

Цитата:
Сообщение от Аватар Посмотреть сообщение
В #4 туфта
Аватар Огромное человеческий спасибо, "дуже дякую" Работает хорошо , если таблице Procent -- FieldByName('proc_money').AsFloat=0 да это все хорошо , правильно работает, ( Но, Если заплатиь проценть и прошоль еще 13 день ??? ) то мне надо еще перерисовывание строк (Бывает что клиент платил несколько раз процент и потом он пропал, Хозяин этого ломбарда смотрит это цвет и если "желтый" то предупреждает своего клиент. А если "красный" то он уже продают это товар который в залоге )...
Завтра попробую сам добавить это . Если не получится пожалуйста помогите добавить это условия тоже
Изображения
Тип файла: jpg 777.jpg (99.8 Кб, 118 просмотров)

Последний раз редактировалось Stilet; 02.10.2014 в 08:19.
xxbesoxx вне форума Ответить с цитированием
Старый 02.10.2014, 07:25   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Лучше сделать как Stilet предлагает, запросом будет проще, чем грабли городить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка даных в DBGrid Roman123654789 БД в Delphi 5 22.05.2014 21:51
Экспорт из DBGrid в Excel и формат ячеек Дата demiancz БД в Delphi 0 21.12.2013 14:46
проверка записей в DBGrid JDmit БД в Delphi 5 07.06.2012 16:44
Проверка записей в DBGrid Stranger333 БД в Delphi 14 12.07.2010 18:11
Раскрасить DBGrid alex_base БД в Delphi 13 06.11.2007 11:36