у меня в БД (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 на первых строчках выше приведенных кодов. В чем может быть проблема ? Заранее спасибо
