![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TpFibsdatabase и Dll [D7, IB6.x]
yaric © (2003-12-04 18:14:00)
Привет всем у меня возникла следующая проблема кто знает
помогите:
открываю из длл библиотеки форму на котрой лежит
TpFibTransaction, Database передается как параметр из основного приложения. Передача параметров проходит нормально, однако когда
я пытаюсь как то работать через эту БД возникают ошибки при вызове метода TpFibDataset.Open
yaric (2003-12-08 12:28:00) [1]
Все народ всем спасибо
разобрался
просто надо передавать в библиотеку DBHandle: TISC_DB_HANDLE
и все нормально,
но соединение должно быть уже установленно
а в конце работы приложения вызывать еще одну функцию из библиотеки которая будет рубить коннект
Vlad (2003-12-05 18:52:00) [2]
Тогда мыслей больше нет.
Если только в вызове процедуры что-то не так, хотя...
Ответь-ка на Johnmen © (05.12.03 09:14) [29]
yaric (2003-12-05 15:54:00) [3]
Попробовал эффект тотже
то же самое когда пытаюсь передавать в библиотеку и транзакцию
yaric (2003-12-05 15:53:00) [4]
Попробовал эффект тотже
то же самое когда пытаюсь передавать в библиотеку и транзакцию
Vlad (2003-12-05 12:14:00) [5]
Возможно переменная temp_dataset объявлена еще где-то, помимо
процедуры TfrmBookOptions.GetCurrRazdStDBInfo
И еще одно маленькое предположение, попробуй вместо
temp_dataset:=TpFibDataSet.Create(self);
написать
temp_dataset:=TpFibDataSet.Create(nil);
yaric (2003-12-05 11:17:00) [6]
>>Johnmen
Да ты прав транзакция действительно стартует неявно
и как оказывается стартует нормально
Я тут еще потрейсил немного и оказывается бока наступают когда
мы залазим внутрь класса TpFibDataSet. Пока разобраться не могу
может у кого какая идея по этому поводу есть
Johnmen (2003-12-05 09:14:00) [7]
>Vlad ©
Да, похоже дело не в шаремем...
>где ты пытаешься начать транзакцию ?
Просто она стартует неявно, если указано в опциях фибдатасета poStartTransaction=True...
>yaric
Приведи (еще раз) вызов процедуры из приложения и ее реализацию в длл.
Vlad (2003-12-04 20:04:00) [8]
> yaric (04.12.03 20:02) [27]
Тогда как вот это понимать ?
> я тут потрейсил немного и оказалось
> что ошибка возникает когда я пытаюсь начать транзакцию
> в длл
Еще раз спрашиваю - где ты пытаешься начать транзакцию ?
yaric (2003-12-04 20:02:00) [9]
Не ну ты же видишь(см.код) что я создаю локальный экземпляр TpFibDataSet
и ни какие BeforeOpen я для него не определяю
Vlad (2003-12-04 19:59:00) [10]
> yaric (04.12.03 19:55) [25]
Сие означает что у temp_dataset есть событие BeforeOpen и ты его не привел или еще что-то умалчиваешь.
yaric (2003-12-04 19:55:00) [11]
А когда я метод Open вызываю то сам temp_dataset
проверяет если транзакция к которой он привязан на
активна то стартует ее
Vlad (2003-12-04 19:53:00) [12]
> yaric (04.12.03 19:49) [23]
Так, уже лучше.
Но что-то в коде не видно, где ты пытаешься начать транзакцию.
yaric (2003-12-04 19:49:00) [13]
"Vlad © был не прав"
а ошибка все равно осталась
я тут потрейсил немного и оказалось
что ошибка возникает когда я пытаюсь начать транзакцию
в длл
Vlad (2003-12-04 19:42:00) [14]
Для проверки можешь вот перед этой строчкой
temp_dataset.Open
написать следующее:
if Assigned(WorkDataBase) then showmessage ("Vlad © был не прав") else showmessage ("Vlad © был прав")
О результатах увиденного сообщи
yaric (2003-12-04 19:35:00) [15]
А TpFibDatabase передается через параметры в функцию которая
из длл вызывается
Vlad (2003-12-04 19:23:00) [16]
Может я чего не вижу (вечер уже и устал), но по моему ты создаешь экземпляр TpFibDataSet, а где создается TpFibDatabase - не видно. Видно лишь что она передается в процедуру в кач-ве параметра.
yaric (2003-12-04 19:21:00) [17]
Так посмотри я же это делаю
текст метода в котором происходит ошибка я привел
yaric (2003-12-04 19:20:00) [18]
Так посмотри я же это делаю
текст метода в котором происходит ошибка я привел
Vlad (2003-12-04 19:17:00) [19]
Если он у тебя на форме лежит, то он сам создастся в момент создания формы. Если же ты его динамически создаешь, то так:
FibDatabase1:=TpFibDatabase.Create(nil)
Затем заполнить нужные проперти, и только после этого вызывать библиотечную процедуру.
yaric (2003-12-04 19:15:00) [20]
yaric>>vlad
а как его создать