Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как грамотно закрыть базу данных? [D6]


Страницы:   1 2 3 4 5 6

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;

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


Страницы:   1 2 3 4 5 6

Наверх

Титульная страница Поиск, карта сайта Написать письмо