Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2008, 09:23   #1
oWish
 
Регистрация: 18.02.2008
Сообщений: 3
По умолчанию работа с БД (компонент ADO,dbGrid) через dll

есть exeшник. В нем через меню вызываются функция, которая описана в dll.
В dll есть DataModule, adoConnection, query, т.е. все компонеты необходимые для работы с БД. Единственно чего нет, это строки коннекта для adoConnection, она предается из exeшника.

Далее (при нажатии на пункт меню в exeшнике) открывается форма, описанная в dll. на ней есть дбгрид, он отбражает данные с query.

Проблема в том, что когда из exeшника первый раз вызываешь форму, все отображается нормально, но если закрыть эту форму и не выходя из из exeшника снова ее открыть, грид как будто не обновляется: в нем отражаются старые данные(то, что висело в нем на момент закрытия формы), хотя RecordCount выдает верное кол-во запсией, находящихся в query.

Query выполняется каждый раз при активации формы.

Компилятор ошибок не выдает. В логике тоже видимых изъянов нет. Когда Форма была в обычном проекте, такой проблемы не возникало.

Может надо как-то насильно освобождать/очищать грид при закрытии формы?
Или что-то другое делать? Подскажите, пожалуста.
oWish вне форума Ответить с цитированием
Старый 20.02.2008, 12:11   #2
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

Сделай dll выгружаемой. Она у тебя скорее всего в памяти остается висеть. Или в самой dll исправь, чтобы при инициализации переоткрывался запрос к БД.
knight вне форума Ответить с цитированием
Старый 28.02.2008, 06:20   #3
oWish
 
Регистрация: 18.02.2008
Сообщений: 3
По умолчанию

DLL я вызываю по нажатии кнопки. Код приведен ниже .

//переменные
DLLInstance : THandle;
ExecProc : TExecProc;
// процедура вызова
begin
DLLInstance := LoadLibrary(PChar(GetCurrentDir()+' \my_.dll'));

@ExecProc := GetProcAddress(DLLInstance, 'my_proc1');

my_proc1(ADOConnection1.ConnectionO bject);//передается коннект
@ExecProc := GetProcAddress(DLLInstance, 'my_proc2');

my_proc2(my_parametr);

FreeLibrary(DLLInstance);
end;

я не очень понимаю что такое выгружаемая процедура, но разве FreeLibrary(DLLInstance) не освобождает память?

запросы я переоткрываю до того как показываю форму
//процедура, где открывеатся форма
procedure my_proc2(my_parametr); stdcall;
begin
If(my_function(my_parametr)) then
begin
FindDocForm.ShowModal;
end;
end;

//функция, проверяющая открытие запроса
function my_function(my_parametr):boolean;
begin
try
query.Close;
query.Open;

my_function:=true;
except
my_function:=false;
end;

если не затруднит, в ответе хотя бы пару строчек возможного кода черкните, плиз.

заранее спаибо
oWish вне форума Ответить с цитированием
Старый 28.02.2008, 09:50   #4
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

Мне не нравится my_proc1(ADOConnection1.ConnectionO bject);
Может лучше попробовать передать строку соединения
ADOConnection1.ConnectionString и при вызове dll установить соединение, при закрытие освободить его.
Т.е.будет опрос БД в dll будет независим от Вашего источника в программе.
knight вне форума Ответить с цитированием
Старый 29.02.2008, 12:23   #5
oWish
 
Регистрация: 18.02.2008
Сообщений: 3
По умолчанию

установить соединения это свойство connected? или я ошибаюсь?
замена ConnectionObject на ConnectionString пока не помогла :'(
oWish вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа через прокси BESS Работа с сетью в Delphi 18 28.09.2008 21:45
работа с БД без vcl компонент Jager-ntr БД в Delphi 1 17.05.2008 21:20
Работа с DBGrid HAMMAN Помощь студентам 2 10.05.2008 11:35
Работа с конкретной строкой в DBGrid alikon1 БД в Delphi 1 10.12.2007 09:07
работа с excel файлами через Delphi Winss Помощь студентам 6 08.09.2007 17:54