Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.11.2008, 13:09
Shapeshifter Shapeshifter вне форума
Прохожий
 
Регистрация: 22.11.2008
Сообщения: 1
Репутация: 10
Печаль Вылеты при закрытии запроса/Access violation

Добрый день! Возникла проблема с вылетами программы при закрытии запросов к базе данных. Хотел бы сразу сказать, что этот код отлично работал в течение довольно-таки долгого времени, однако теперь подобные конструкции перестали работать практически по всей программе и найти ошибку пока никак не удается. В приведенном фрагменте кода используются три таблицы. Одна главная и две связанные с ней.
Сначала при помощи хранимой процедуры SP_wagon_in_ins (компонент TStoredProc) создается запись в главной таблице. Потом открывается и закрывается запрос P_wagon_in_view (это компонент TQuery) на просмотр только что созданной записи (в которой триггером в базе данных автоматически заполняются некоторые поля). После этого открываются и закрываются запросы P_wagon_in_view и P_wagon_ann_view (также компоненты TQuery) для просмотра записей в подчиненных таблицах, связанных с созданной в главной таблице записью.
Если запускать программу из под билдера Delphi 2007 то возникает ошибка Project ….. faulted with message: ‘access violation at 0x7c90e8ab: write of address 0x00030ffc’ Process stopped. Use step or run to continue.
При пошаговом выполнении кода получается, что вылет происходит после закрытия последнего запроса (после TQuery.Close), причем независимо от того, какой из двух запросов (P_wagon_in_view или P_wagon_ann_view) закрывается вторым, вылетает именно после последнего закрытого.
Прошу вас предложить какие-либо варианты решения этой проблемы или возможно указать на ошибку в тексте программы.
Код:
procedure TWagon_in_new.Button_saveClick(Sender: TObject);
begin
  SP_wagon_in_ins.UnPrepare;
  SP_wagon_in_ins.ParamByName('@dispatch_date').Value:=E_dispatch_date.Text;
  SP_wagon_in_ins.ParamByName('@wagon_in_num').Value:=E_wagon_in_num.Text;
  SP_wagon_in_ins.ParamByName('@bill_wagon_in_num').Value:=E_bill_wagon_in_num.Text;
  SP_wagon_in_ins.ParamByName('@partner_id').Value:=ID_partner;
  SP_wagon_in_ins.ParamByName('@contract_number').Value:=E_contract_number.Text;
  SP_wagon_in_ins.ParamByName('@origin').Value:=ID_origin;
  SP_wagon_in_ins.Prepare;
  SP_wagon_in_ins.ExecProc;
  ID_wagon:=SP_wagon_in_ins.ParamByName('@out').Value;
  P_wagon_in_view.ParamByName('ID').Value:=ID_wagon;
  P_wagon_in_view.Open;
  if P_Wagon_in_view.FieldByName('placesnum_announced').Value<>NULL then
    E_placesnum_announced.Text:=P_Wagon_in_view.FieldByName('placesnum_announced').Value;
  if P_Wagon_in_view.FieldByName('placesnum_in').Value<>NULL then
    E_placesnum_in.Text:=P_Wagon_in_view.FieldByName('placesnum_in').Value;
  if P_Wagon_in_view.FieldByName('netweight_announced').Value<>NULL then
    E_netweight_announced.Text:=P_Wagon_in_view.FieldByName('netweight_announced').Value;
  if P_Wagon_in_view.FieldByName('gweight_announced').Value<>NULL then
    E_gweight_announced.Text:=P_Wagon_in_view.FieldByName('gweight_announced').Value;
  if P_Wagon_in_view.FieldByName('netweight_in').Value<>NULL then
    E_netweight_in.Text:=P_Wagon_in_view.FieldByName('netweight_in').Value;
  if P_Wagon_in_view.FieldByName('gweight_in').Value<>NULL then
    E_gweight_in.Text:=P_Wagon_in_view.FieldByName('gweight_in').Value;
  P_wagon_in_view.Close;
  P_quality_in_view.ParamByName('ID').Value:=ID_wagon;
  P_quality_ann_view.ParamByName('ID').Value:=ID_wagon;
  P_quality_in_view.Open;
  P_quality_ann_view.Open;
  P_quality_in_view.Close;
  P_quality_ann_view.Close;   // после этой строки появляется ошибка
  Button_new_ann.Enabled:=true;
  Button_edit_ann.Enabled:=true;
  Button_new_in.Enabled:=true;
  Button_edit_in.Enabled:=true;
  Button_OK.Enabled:=true;
  Button_save.Enabled:=false;
end;
Admin: Пользуемся тегами!

Вот такая проблема.

Последний раз редактировалось Admin, 22.11.2008 в 13:24.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:53.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025