![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как грамотно закрыть базу данных? [D6]
Lizka © (2004-08-09 13:13:00)Я делаю так:
with Conn.Connection do begin ADOQueryTown.Close; ADOQueryFinPr.Close; ADOQueryPr.Close; ADOConnection.Connected := false; end; close;
Но выдается окошко CPU и после этого приходится делать Programm Reset :(
sniknik (2004-08-10 08:07:00) [101]ну а где самое интересное, где дата(?)модуль с кучей переопределенных событий у запросов и конекта?
хотя правильно, нафиг, в чужом коде ковырятся, хуже нет.
Lizka (2004-08-10 06:22:00) [102]и вторая форма:
unit FinProductInfo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, Grids, DBGrids, ExtCtrls, Buttons;
type
TSecondFinPrApplication = class(TForm)
GroupBoxInfo: TGroupBox;
BBtnDelete: TBitBtn;
BBtnAdd: TBitBtn;
DBNavigator: TDBNavigator;
DBGrid: TDBGrid;
DBText1: TDBText;
LabelFinPr: TLabel;
BBtnClose: TBitBtn;
procedure BBtnCloseClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
SecondFinPrApplication: TSecondFinPrApplication;
implementation
uses Conn;
{$R *.dfm}
procedure TSecondFinPrApplication.BBtnCloseClick(Sender: TObject);
begin
if Conn.Connection.MainADOConnection.Connected then
begin
with Conn.Connection do
begin
ADOQueryInfo.Active := false;
end;
end;
hide;
end;
end.
Lizka (2004-08-10 06:20:00) [103]unit FinProduct;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, DBGrids, DBCtrls, ExtCtrls, DB, ADODB;
type
TFinProdApplication = class(TForm)
DBNavigator: TDBNavigator;
DBLCBTown: TDBLookupComboBox;
DBLCBPr: TDBLookupComboBox;
DBGridFinPr: TDBGrid;
GroupBox: TGroupBox;
BBShow: TBitBtn;
BBAdd: TBitBtn;
BBDelete: TBitBtn;
LabelTown: TLabel;
LabelPr: TLabel;
BBExit: TBitBtn;
procedure BBShowClick(Sender: TObject);
procedure BBExitClick(Sender: TObject);
procedure DBGridFinPrDblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FinProdApplication: TFinProdApplication;
implementation
uses Conn, FinProductInfo;
{$R *.dfm}
procedure TFinProdApplication.BBShowClick(Sender: TObject);
var gorod, progr: String;
begin
gorod:=DBLCBTown.Text;
progr:=DBLCBPr.Text;
with Conn.Connection do
begin
ADOQueryFinPr.SQL.Text :='select f.FP_NAME from fin_product f, (select pr.pr_id, g.g_id from info i,progr pr, gorod g where g.g_name = :gorod and i.g_id = g.g_id and pr.pr_id = i.pr_id and pr.pr_name = :progr ) p_id where f.pr_id = p_id.pr_id and p_id.g_id = f.G_ID';
ADOQueryFinPr.Parameters[0].Value:=gorod;
ADOQueryFinPr.Parameters[1].Value:=progr;
ADOQueryFinPr.Open;
ADOQueryFinPr.Active:=True;
end;
end;
procedure TFinProdApplication.BBExitClick(Sender: TObject);
begin
if Conn.Connection.MainADOConnection.Connected then
begin
with Conn.Connection do
begin
ADOQueryTown.Active := false;
ADOQueryPr.Active := false;
ADOQueryFinPr.Active := false;
MainADOConnection.KeepConnection := false;
end;
end;
close;
end;
procedure TFinProdApplication.DBGridFinPrDblClick(Sender: TObject);
begin
FinProductInfo.SecondFinPrApplication.Show;
end;
end.
46_55_41_44 (2004-08-09 15:08:00) [104]Слушай перешли мне часть своего проекта... Или весь... Я посмотрю... Интересно стало!!!
f_aslanov@hotmail.com
Возможно ты где-то убиваешь датамодуль Conn.
Lizka (2004-08-09 14:48:00) [105]>Слушай, а твой Адо коннекш прям так и называется - ADOConnection?
Да. Заменила - не помогло
46_55_41_44 (2004-08-09 14:47:00) [106]Ответь на мой вопрос!
46_55_41_44 (2004-08-09 14:45:00) [107]Слушай, а твой Адо коннекш прям так и называется - ADOConnection?
Если да.. То попробуй поменять имя... может ADOConnection - это какое-то зарезервированное слово! А если нет... ТО тем более! потому что получается, что у тебя просто нет объекта с таким назваением...
Lizka (2004-08-09 14:45:00) [108]Если даже просто оставляешь close, всё-равно ругается...
sniknik (2004-08-09 14:42:00) [109]> то все-равно такая ошибка. А запросы к коннекту привязаны
даже не сомневался.
> Да, есть. Это может зависить от того, что допустим Service Pack поставить?
не поможет. нужно глюки из программы убрать. а сначала найти... но это не на закрытии (если конечно ты не делаеш его там где датамодуль уже уничтожился)
Lizka (2004-08-09 14:40:00) [110]Не помогло :(
46_55_41_44 (2004-08-09 14:34:00) [111]пробовала перезагрузку делать?
Иногда бывает и такое! попробуй... не поможет придумаем, что нибудь еще...
Lizka (2004-08-09 14:28:00) [112]Да, есть. Это может зависить от того, что допустим Service Pack поставить?
46_55_41_44 (2004-08-09 14:27:00) [113]Наверно Conn это DataModule, а не DataModel.
А ты посмотри, есть ли у тебя в файле "Название твоего проекта".dpr строчки типа
begin
Application.Initialize;
Application.CreateForm(TConn, Conn);
...
Application.Run;
end.
Lizka (2004-08-09 14:18:00) [114]нет. Не помогло. Ошибка такая
ntdll.RtlQueryInformationAcl:77F813BA push ebp
46_55_41_44 (2004-08-09 14:08:00) [115]А ты попробуй так
Conn.ADOConnection.Close;
Lizka (2004-08-09 13:58:00) [116]Это DataModel в котором содержатся все запросы и ADOConnect.
И даже если просто писать
ADOConnection.close; (запросы к этому конекту привязаны?)
close;
то все-равно такая ошибка. А запросы к коннекту привязаны
46_55_41_44 (2004-08-09 13:47:00) [117]Слушай Conn.Connection - это что такое?
sniknik (2004-08-09 13:44:00) [118]достаточно этого
ADOConnection.close; (запросы к этому конекту привязаны?)
close;
но ошибка вряд ли в закрытии, скорее в другом.