|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Напоминание о дне рождения
у меня в БД (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 на первых строчках выше приведенных кодов. В чем может быть проблема ? Заранее спасибо |
#2
|
|||
|
|||
Ну, судя по ошибке, скорее всего какой-то из объектов, к которому идет обращение, просто не создан (или уже уничтожен).
|
#3
|
||||
|
||||
Поставь курсор на строчку
Код:
n:=Form1.DBGrid1.DataSource.DataSet.RecordCount; P.S. Если непонятно описал, обращайся в личные сообщения. Google в помощь |
#4
|
|||
|
|||
Первая ошибка выдается именно на этой строке, затем нажимаю F8, идет спуск на цикл for и снова выдается ошибка. Дальше при нажатии на F8 ничего не происходит
|
#5
|
||||
|
||||
Цитата:
Ну значит либо From1, либо DBGrid1 расположенный на Form1, либо его датасет, на момент выполнения не созданы или уничтожены. Google в помощь |
#6
|
|||
|
|||
ну вот этот код у меня в процедуре FormCreate. Это может влиять на ошибку ? И если да, то в какой процедуре можно прописать код, так чтобы напоминание возникало после запуска программы ?
|
#7
|
||||
|
||||
Может, вставте свой код в событие FormShow
|