|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.08.2012, 22:18 | #1 |
Форумчанин
Регистрация: 24.06.2009
Сообщений: 216
|
Ошибка при обращении к FIBDataSet'y
Привет всем!
У меня следующая проблема. Есть приложение MDI, в нем есть форма (Child), на которой есть FIBDataSet, подключенный к базе FireBird и делающий выборку из таблицы "Журнал документов". Есть так же форма не Child, а обычная, на которой лежат два DateEdit'a с помощью которых можно установить за какой период нужно выбрать документы из таблицы. Итак, при нажатии на кнопку со следующим кодом: Код:
"Access violation at address 00638113 in module 'MDI_App.exe'. Read of address 0000035C" Ошибка выскакивает на первой строке, при попытке закрыть FIBDataSet. Пробовал делать все окна Cild, бесполезно, все равно появляется ошибка. Причем если выполнить этот код на самой форме с FIBDataSet'ом, все происходит как и положено, документы выбираются за выбранный период. Ах да, подобный код без проблем работал в обычном приложении (не MDI)/ Вот не могу разобраться в чем проблема? В том что приложение MDI? Если да, то как обойти эту проблему, не отказываясь от MDI? Помогите люди добрые, очень нужно!!! Заранее всем премного благодарен!!!
Водку мы пьем для запаха - а дури нам своей хватает!
|
01.08.2012, 22:26 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А frmjobsh существует в момент нажатия на кнопку? Судя по ошибке и строке в которой она вываливается - нет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
02.08.2012, 04:35 | #3 |
Форумчанин
Регистрация: 24.06.2009
Сообщений: 216
|
а как она может не существовать? когда форма с датаедитами вызывается по нажатии на кнопку с этой формы.
Водку мы пьем для запаха - а дури нам своей хватает!
|
02.08.2012, 04:52 | #4 |
Старожил
Регистрация: 05.06.2008
Сообщений: 4,206
|
Приведи полный код кнопки вызова и отображения данной формы
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
|
02.08.2012, 13:35 | #5 | |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,886
|
Цитата:
А поэтому надо запомнить, что работа с дочерними формами (и вообще любыми динамически создаваемыми вещами) должна чётко отслеживаться, на надо полагаться на среду дельфи, как Вы привыкли раньше. В общем случае для работы с мди-формами надо использовать члены главной формы MDIChildren MDIChildCount, ActiveMDIChild. Советую создать пустой проект в дельфи и выбрать за основу не Application, а MDI Application (в дельфи7 вкладка Projects, если пошагово: File - New - Other - появится окно со вкладками, выбрать Projects) и этот пример досконально разобрать. |
|
02.08.2012, 19:21 | #6 |
Форумчанин
Регистрация: 24.06.2009
Сообщений: 216
|
Код:
Водку мы пьем для запаха - а дури нам своей хватает!
|
02.08.2012, 19:24 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А frmjobsh тогда при каких делах, если указатель на созданную форму в Child помещен? Сам он в frmjobsh не попадет. И, да, phomm прав, работать с MDIChildren формами так чревато, особенно в случае, когда несколько экземпляров одной и той же формы создается. А Show где выполняется для формы?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 02.08.2012 в 19:33. |
02.08.2012, 19:35 | #8 |
Форумчанин
Регистрация: 24.06.2009
Сообщений: 216
|
Аватар, а подскажите пожалуйста, как правильно создать дочернюю форму?
Спасибо!
Водку мы пьем для запаха - а дури нам своей хватает!
|
02.08.2012, 19:53 | #9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Для случая если создается только один экземпляр и в случае если он существует, то просто активизируется:
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 02.08.2012 в 19:58. |
02.08.2012, 20:18 | #10 |
Форумчанин
Регистрация: 24.06.2009
Сообщений: 216
|
Аватар, спасибо за код. Но я не совсем разобрался. В общем ситуация такая, у меня форма frmjobsh, создается в дизайнере, присваивается ей Formstyle=fsMDIChild, ложатся на нее всякие контролы (дбгрид, различные кнопки), мне ее нужно создать (или просто вызвать) по нажатию кнопки на родительской форме. Причем она, именно frmjobsh, будет создана только один раз. Другие дочерние формы которые ссылаются на другие таблицы в базе, тоже содержат гриды и прочие контролы и будут создаваться по нажатию уже на другую кнопку. В общем, хорошим примером то что хочу сделать я - это программа 1С. Нажал на одну кнопку, появился один журнал документов, нажал на другую появился справочник товаров. В общем как то так.
Заранее спасибо за помощь
Водку мы пьем для запаха - а дури нам своей хватает!
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при обращении к объекту | CodeNOT | C# (си шарп) | 3 | 28.05.2011 12:47 |
Ошибка при обращении к реестру OLE. В чем причина? | ILYA_SAKHA | БД в Delphi | 3 | 09.06.2010 04:02 |
при обращении с одной формы на другую вылетатет ошибка | cowboy | Общие вопросы Delphi | 21 | 04.09.2009 14:25 |
Ошибка пр обращении к макросу | tae1980 | Microsoft Office Excel | 3 | 04.04.2009 14:38 |
Ошибка при обращении к интернет странице | Alter | Свободное общение | 2 | 06.08.2008 22:25 |