Показать сообщение отдельно
  #1  
Старый 01.12.2011, 20:59
Evita Evita вне форума
Прохожий
 
Регистрация: 05.11.2011
Сообщения: 8
Репутация: 10
По умолчанию Напоминание о дне рождения

у меня в БД (Access, ADOConnection,ADOTable) есть поле дня рождения типа дата\время. В программе я предусматриваю функцию напоминания о дне рождения за три дня.
Использовала я вот такой код:
Код:
n:=Form1.DBGrid1.DataSource.DataSet.RecordCount;
for i:=1 to n do
begin
Vday:=DayOf(DBGrid1.Columns[13].Field.AsDateTime);
Vmonth:=MonthOf(DBGrid1.Columns[13].Field.AsDateTime);
if(Vmonth=MonthOf(Date))and((Vday-DayOf(Date)<3)and(Vday-DayOf(Date)>=0)) then
        begin
            case Vday-DayOf(Date) of
                0: Day:='сегодня';
                1: Day:='завтра';
                2: Day:='послезавтра';
            end;
            ShowMessage('У ФИО День рождения '+Day);
        end;
        DBGrid1.DataSource.DataSet.Next;

или вот такой:

Код:
1
2

	

if (DayOfTheYear(DataModule2.ADOTable1.Fields[13].AsDatetime)-DayOfTheYear(Now)=3) and (MonthOfTheYear(DataModule2.ADOTable1.Fields[13].AsDatetime)=MonthOfTheYear(Now)) then
ShowMessage(IntToStr('Happy Birthday!'));

Но возникает ошибка типа EAccessViolation на первых строчках выше приведенных кодов. В чем может быть проблема ? Заранее спасибо
Ответить с цитированием