Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

Ошибка при обращении к таблице   Найти похожие ветки 

 
carmen ©   (2006-05-18 18:16) [0]

Пишу прогу с использование пакетов (bpl). Имеется основной модуль, который по необходимости загружает нужний пакет. Также имеется модуль базы данных. Проблема в следующем.
Модуль базы данных содержит описание базы данных, основных справочников. Один из пакетов использует этот модуль базы данных, объявляется в implementation через uses DataModule.
Так вот, если из пакета обратится к таблице из модуля базы данных возникает ошибка: Access violation at adress 014128F in module "My_Module.Bpl". Read of address 000000DC. Если описываю данную таблицю в этом пакете, ошибки нет. Обращаюсь к таблице модуля базы данных так: Data.Q_Get_SQL.ParamByName("name_sql").AsString:="select_saldo";
Data.Q_Get_SQL.ParamByName("type_sql").AsString:="SELECT";
Data.Q_Get_SQL.ExecQuery;
Data это имя модулябазы данных. Что делаю нетак???


 
Desdechado ©   (2006-05-18 18:26) [1]

видимо, датамодуль не создан к моменту вызова таблицы из пакета


 
carmen ©   (2006-05-18 19:04) [2]

автоматом создается главная форма и датамодуль.
когда это все загружено идет загрузка пакетов.


 
Mike Kouzmine ©   (2006-05-18 22:41) [3]

carmen ©   (18.05.06 19:04) [2]
 Desdechado ©   (18.05.06 18:26) [1]
   видимо, датамодуль не создан к моменту вызова таблицы из пакета

Проверь порядок создания объектов.


 
Carmen ©   (2006-05-18 23:23) [4]

датамодуль на момент загрузки пакета уже загружен. Загруженный пакет использует информацию основной базы, транзакции из датамодуля. Все таблицы пакета используют эту информацию из датамодуля и работают нормально. ошибка возникает когда хочу обратится к таблице описаной в датамодуле.


 
Carmen ©   (2006-05-19 09:19) [5]

а больше не советов?


 
ANB ©   (2006-05-19 10:04) [6]


> Carmen ©   (19.05.06 09:19) [5]

Ничего не понял.
Давай ка подробнее.
И так - у тебя есть основной экзешник, к которому ты прикомпилял модуль данных.
Из экзешника ты вызывешь (я так понял - динамически) пакет.
И пакета лезешь к модуль данных основного приложения.
Вопрос - как ты связал модуль данных с основным приложением ?
Если просто прикомпилял - будет AV.
Нужно передать в пакет адрес модуля данных и уже с ним работать в пакете.
При этом экзешник и пакет должны быть скомпилены на одной делфе.


 
ANB ©   (2006-05-19 10:05) [7]


> Carmen ©   (18.05.06 23:23) [4]

А экзешник скомпилен с использованием рантайм пакетов ?


 
Carmen ©   (2006-05-19 13:06) [8]


> Ничего не понял.
> Давай ка подробнее.
> И так - у тебя есть основной экзешник, к которому ты прикомпилял
> модуль данных.
> Из экзешника ты вызывешь (я так понял - динамически) пакет.
>
> И пакета лезешь к модуль данных основного приложения.
> Вопрос - как ты связал модуль данных с основным приложением
> ?
> Если просто прикомпилял - будет AV.
в подгружаемом пакете этот же датамодуль подключаю через uses

> Нужно передать в пакет адрес модуля данных и уже с ним работать
> в пакете.
а как его передать?

> При этом экзешник и пакет должны быть скомпилены на одной
> делфе.

одна


 
ANB ©   (2006-05-19 13:51) [9]


> в подгружаемом пакете этот же датамодуль подключаю через
> uses

Вот здесь и кроется ошибка.


> а как его передать?

Передать через параметр какой нибудь функции пакета. В пакете можно сохранить адрес локально, а можно передавать каждой функции пакета.

И обязательно экзешник компилять с флагом "использовать рантайм пакеты".


 
Carmen ©   (2006-05-19 13:57) [10]


> И обязательно экзешник компилять с флагом "использовать
> рантайм пакеты".

так и компилю.
А можно пример по передачы адреса.



Страницы: 1 вся ветка

Текущий архив: 2006.06.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
1-1146203804
K_VAL
2006-04-28 09:56
2006.06.04
Приложение и разрешение экрана


2-1147703831
pav74
2006-05-15 18:37
2006.06.04
как работать с битами отдельно из одного байта?


4-1142155729
Volf_555
2006-03-12 12:28
2006.06.04
Как закрыть окно Microsoft Internet Explorer?


11-1127710464
DmiSb
2005-09-26 08:54
2006.06.04
Как нарисовать кнопочку в EditBoxe


3-1144906457
andrey2005
2006-04-13 09:34
2006.06.04
Можно ли передать в запрос имя таблицы параметром?