Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.034 c
8-1087015047
dimon_programmer
2004-06-12 08:37
2004.09.05
Аналог Scanline в C++


14-1092505999
Guest
2004-08-14 21:53
2004.09.05
Вот такое дело....


1-1092881930
Alibaba
2004-08-19 06:18
2004.09.05
TForm


1-1092811562
besen-ok
2004-08-18 10:46
2004.09.05
Подскажите как мне добавить картинки в проект ?


14-1092582660
Дмитрий12
2004-08-15 19:11
2004.09.05
Пожалуйста, помогите перевести код на C++:





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский