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

Вниз

Как грамотно закрыть базу данных?   Найти похожие ветки 

 
Lizka ©   (2004-08-09 13:13) [0]

Я делаю так:
with Conn.Connection do begin  ADOQueryTown.Close;  ADOQueryFinPr.Close;  ADOQueryPr.Close;  ADOConnection.Connected := false; end; close;

Но выдается окошко CPU и после этого приходится делать Programm Reset :(


 
sniknik ©   (2004-08-09 13:44) [1]

достаточно этого

ADOConnection.close; (запросы к этому конекту привязаны?)
close;

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


 
46_55_41_44 ©   (2004-08-09 13:47) [2]

Слушай Conn.Connection - это что такое?


 
Lizka ©   (2004-08-09 13:58) [3]

Это DataModel в котором содержатся все запросы и ADOConnect.
И даже если просто писать

ADOConnection.close; (запросы к этому конекту привязаны?)
close;

то все-равно такая ошибка. А запросы к коннекту привязаны


 
46_55_41_44 ©   (2004-08-09 14:08) [4]

А ты попробуй так
Conn.ADOConnection.Close;


 
Lizka ©   (2004-08-09 14:18) [5]

нет. Не помогло. Ошибка такая
ntdll.RtlQueryInformationAcl:77F813BA push ebp


 
46_55_41_44 ©   (2004-08-09 14:27) [6]

Наверно Conn это DataModule, а не DataModel.
А ты посмотри, есть ли у тебя в файле "Название твоего проекта".dpr строчки типа

begin
 Application.Initialize;
 Application.CreateForm(TConn, Conn);
  ...
 Application.Run;
end.


 
Lizka ©   (2004-08-09 14:28) [7]

Да, есть. Это может зависить от того, что допустим Service Pack поставить?


 
46_55_41_44 ©   (2004-08-09 14:34) [8]

пробовала перезагрузку делать?
Иногда бывает и такое! попробуй... не поможет придумаем, что нибудь еще...


 
Lizka ©   (2004-08-09 14:40) [9]

Не помогло :(


 
sniknik ©   (2004-08-09 14:42) [10]

> то все-равно такая ошибка. А запросы к коннекту привязаны
даже не сомневался.

> Да, есть. Это может зависить от того, что допустим Service Pack поставить?
не поможет. нужно глюки из программы убрать. а сначала найти... но это не на закрытии (если конечно ты не делаеш его там где датамодуль уже уничтожился)


 
46_55_41_44 ©   (2004-08-09 14:45) [11]

Слушай, а твой Адо коннекш прям так и называется - ADOConnection?
Если да.. То попробуй поменять имя... может ADOConnection - это какое-то зарезервированное слово! А если нет... ТО тем более! потому что получается, что у тебя просто нет объекта с таким назваением...


 
Lizka ©   (2004-08-09 14:45) [12]

Если даже просто оставляешь close, всё-равно ругается...


 
46_55_41_44 ©   (2004-08-09 14:47) [13]

Ответь на мой вопрос!


 
Lizka ©   (2004-08-09 14:48) [14]

>Слушай, а твой Адо коннекш прям так и называется - ADOConnection?

Да. Заменила - не помогло


 
46_55_41_44 ©   (2004-08-09 15:08) [15]

Слушай перешли мне часть своего проекта... Или весь... Я посмотрю... Интересно стало!!!
f_aslanov@hotmail.com

Возможно ты где-то убиваешь датамодуль Conn.


 
Lizka ©   (2004-08-10 06:20) [16]

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.


 
Lizka ©   (2004-08-10 06:22) [17]

и вторая форма:

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.


 
sniknik ©   (2004-08-10 08:07) [18]

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


 
46_55_41_44 ©   (2004-08-10 08:22) [19]

Давай датамодуль...
А еще лучше перещли весь проект на мое мыло!
Он мне нужен как собаке 5 нога, если ты боишься, что я что-то там украду )))
Просто я на самом деле помочь хочу!!!


 
Lizka ©   (2004-08-10 08:52) [20]

переслала


 
Lizka ©   (2004-08-10 08:56) [21]

Только он у меня перестал открываться. Говорит StackOverflow и вся дельфя сворачивается :(
Я ничего не понимаю... Но думаю, что это из-за некорректного закрытия базы


 
46_55_41_44 ©   (2004-08-10 09:18) [22]

Солнышкооо... Я нашел!!! :)))
Слушай мой тебе совет, если пишешь что-нибудь стоящее по сделай с MainForm-ом...
А ошибка твоя вот в чем:

begin
 Application.Initialize;
 Application.CreateForm(TFinProdApplication, FinProdApplication);
 Application.CreateForm(TConnection, Connection);
 Application.CreateForm(TSecondFinPrApplication, SecondFinPrApplication);
 Application.Run;
end.
а надо, чтобы было вот так:
begin
 Application.Initialize;
 Application.CreateForm(TConnection, Connection);
 Application.CreateForm(TFinProdApplication, FinProdApplication);
 Application.CreateForm(TSecondFinPrApplication, SecondFinPrApplication);
 Application.Run;
end.

дело в том, что форма TFinProdApplication открывалась модально! Значит TConnection еще не создается... Так как Компилятор останавливается на строчке Application.CreateForm(TFinProdApplication, FinProdApplication);!!! Следовательно ты пытаешься закрыть, то что еще не открыла!


 
Lizka ©   (2004-08-10 09:26) [23]

Знаешь, я переставила это местами и ничего не поменялось...
Такая же ошибка...


 
46_55_41_44 ©   (2004-08-10 09:29) [24]

Тогда сделай форму FinProdApplication FormStyle - fsMDIForm!


 
46_55_41_44 ©   (2004-08-10 09:30) [25]

У меня тоже ошибку выдавало... Я сделал так, как тебе сказал!!! И все нормально заработало!


 
46_55_41_44 ©   (2004-08-10 09:33) [26]

program FinPr;

uses
 Forms,
 FinProduct in "FinProduct.pas" {FinProdApplication},
 Conn in "Conn.pas" {Connection: TDataModule},
 FinProductInfo in "FinProductInfo.pas" {SecondFinPrApplication};

{$R *.res}

begin
 Application.Initialize;
 Application.CreateForm(TConnection, Connection);
 Application.CreateForm(TFinProdApplication, FinProdApplication);
 Application.CreateForm(TSecondFinPrApplication, SecondFinPrApplication);
 Application.Run;
end.

Вот так надо сделать! Скопируй это в FinPr.dpr


 
Lizka ©   (2004-08-10 09:36) [27]

А у тебя у всех Query Active = false стоит? У меня когда так - всё тоже работает


 
46_55_41_44 ©   (2004-08-10 09:39) [28]

Я ничего твоего не меняю!
но у меня же нет Oracle и тем более базы с твоей конфигурацией!
Ты  точно все делаешь как я тебе говорю????


 
Lizka ©   (2004-08-10 09:41) [29]

посмотри active. тк у тебя нет базы, то у MAainADOConnection.Connected = false и у всех Query.Active = false. И поэтому всё работает.

Я всё сделала, так как ты сказал


begin
 Application.Initialize;
 Application.CreateForm(TConnect, Connect);
 Application.CreateForm(TFinProductApplication, FinProductApplication);
 Application.CreateForm(TFinProductSecondApplication, FinProductSecondApplication);
 Application.Run;
end.


 
46_55_41_44 ©   (2004-08-10 09:50) [30]

попробуй сделать MAainADOConnection.Mode ---> cmShareDenyNone прям в Object Inspektor


 
Lizka ©   (2004-08-10 10:11) [31]

Знаешь, я сделала тоже самое на С Builder 6 + сервис паки 1,2 и там такой ошибки не возникло... Т.е. просто надо их найти... Ты случайно не знаешь - где?


 
46_55_41_44 ©   (2004-08-10 10:14) [32]

сервис паки 1,2? нет честно говоря не знаю!


 
Lizka ©   (2004-08-10 10:37) [33]

а ты что-нибудь ставил на Дельфи?


 
46_55_41_44 ©   (2004-08-10 10:41) [34]

Да нет... ничего такого, чего у тебя нет! Стандартный пакет


 
Lizka ©   (2004-08-10 10:58) [35]

А ты тестируешь на бд или без неё? У тебя вообще есть бд?


 
46_55_41_44 ©   (2004-08-10 11:27) [36]

Есть конечно есть... Правда не Oracle как у тебя...
Просто любую базу подставил ... и все


 
Lizka ©   (2004-08-10 11:28) [37]

Наверно у тебя по умолчанию они уже были... Сейчас попробую установить и напишу о результатах


 
Danilka ©   (2004-08-10 11:29) [38]

[35] Lizka ©   (10.08.04 10:58)
К Ороклу через АДО? Честно говоря, никогда не пробовал. Возможно проблема не в Дельфи и не в программе, а в драйверах.


 
46_55_41_44 ©   (2004-08-10 11:34) [39]

ОК...
Проблема не в драйверах... В самой программе это однозначно!


 
Danilka ©   (2004-08-10 11:36) [40]

[39] 46_55_41_44 ©   (10.08.04 11:34)
Откуда такая уверенность?



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

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

Наверх




Память: 0.57 MB
Время: 0.052 c
1-1092813495
Sergo_NIG
2004-08-18 11:18
2004.09.05
Как отследить изменение свойства компонента Enabled?


14-1092976591
Vlad Oshin
2004-08-20 08:36
2004.09.05
http://www.liveinternet.ru/images/attach/32750/1054196.jpg


1-1093010645
Gear
2004-08-20 18:04
2004.09.05
опять поток!


3-1092128046
Sir John
2004-08-10 12:54
2004.09.05
Как передать результат запроса клиенту?


3-1092045143
eLVik
2004-08-09 13:52
2004.09.05
Подстановка в конструкторе Access