Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка с ADOQuery [D7]


Петр ©   (2004-01-09 10:13:00) 

Добрый день ,уважаемые знатоки!

Помогите, кто может:

Возникает Exception EAccessViolation with message "Access violation at adress in XXXXXX in module msjet40.dll. Read of adress.."

Данная ошибка возникает при выполнении следующего кода:


With DM.ADOQueryOrders Do
Begin
Close;
SQL.Clear;
// ИМЕННО ПРИ ВЫПОЛНЕНИИ СЛЕДУЮЩЕЙ СТРОКИ ВОЗНИКАЕТ ОШИБКА
SQL.Add("SELECT Category.Category, SUM(Expensis.Summa) AS _SUM");
SQL.Add("FROM Expensis,Category,Goods");
SQL.Add("WHERE (Expensis.Date BETWEEN :pDate1 AND :pDate2) AND (Category.ID= Goods.ID_Category) AND (Goods.ID=Expensis.ID_Goods)");
SQL.Add("GROUP BY Category.Category");

DateStr1:=DateToStr(self.DateTimePicker1.Date);
DateStr2:=DateToStr(self.DateTimePicker2.Date);

Parameters.ParamByName("pDate1").Value:=DateStr1;
Parameters.ParamByName("pDate2").Value:=DateStr2;

Close;
Open;

End; {With DM.ADOQueryOrders}



В чем может быть причина? Я в нескольких местах подобным образом заполняю другие Query и никаких проблем.
Работаю с mdb файлом.

Всем спасибо.


DCoder   (2004-01-09 11:30:00) [1]

>Так он в отладке до этой строки не доходит.
>Затыкается на SQL.Add

А ты не в этой процедуре проверь или поставь на первое место


sniknik   (2004-01-09 11:28:00) [2]

лутше проверь существует ли обьект во время присваивания, ты ведь получаеш ошибку не при работе с бызой а на изменении его(обьекта) свойств.

> Может это косяк Delphi?
даже не мечтай. ;о))


Academic   (2004-01-09 10:41:00) [3]

У меня был похожий случай, попробуй сжать и восстановить базу. Мне помогло.


Петр   (2004-01-09 10:38:00) [4]

>DCoder
Так он в отладке до этой строки не доходит. Затыкается на SQL.Add

Причем когда компильнешь - exe работает, а в отладке нет. Может это косяк Delphi?


Петр   (2004-01-09 10:35:00) [5]

Попробовал, после Close - та же история.
Я попробовал написать другой код SQL, он работает, а этот нет, хотя знаю, что данный код верен. Если откомпилировать проект, то при запуске екзешника все работает нормально. И в Access тоже все работает.


DCoder   (2004-01-09 10:28:00) [6]

Проверь в отладке, что возвращает
DateToStr(self.DateTimePicker1.Date);

selfзачем?


Academic   (2004-01-09 10:24:00) [7]

Попробуй принудительно перед заполнением SQL, выставить
ParamCheck := True;


Наверх

Титульная страница Поиск, карта сайта Написать письмо