-
Господа!
Вроде как я это уже проходил, а сейчас полная...
Итак: Работаю с firebird через компоненты InterBase. Т.е. в дата модуле есть нечто подобное:
TDM = class(TDataModule) VADatabase: TIBDatabase; VATransaction: TIBTransaction;
Все пути и т.д. установлены правильно - когда я из среды Delphi устанавливаю свойство connected в истину - идёт запрос пароля и мы успешно подключаемся. Ставим connected в ложь и пишем в программе
Dm.VADatabase.Connected:=True;
Получаем сообщение: "operation cancelled at users request". Я понятно никакого завершения не запршивал. Более того - никто у меня пароля и не спрашивает, несмотря на то, что свойство
Dm.VADatabase.LoginPrompt:=True
Убейте не понимаю в чем проблема и буду сильно благодарен, если просветите.
-
> Ставим connected в ложь
Disconnect: 1. Завершаем все транзакции (if Tran.InTransaction then Tran.Commit или rollback) 2. Ставим VADatabase.Connected:=False;
Connect: 1. Ставим VADatabase.Connected:=True; 2. Стартуем транзакцию на чтение
-
procedure DoConnect;
procedure DoDisconnect;
procedure TDBConverterMainForm.DoConnect;
begin
DoDisconnect;
FDB.LoginPrompt := False;
FDB.Params.Values['lc_ctype'] := 'WIN1251';
FDB.Params.Values['user_name'] := 'SYSDBA';
FDB.Params.Values['password'] := 'masterkey';
FDB.DatabaseName := eGToolDBFileName.Text;
FDB.Connected := True;
WTran.Params.Text := 'read_committed'#13#10'rec_version'#13#10'nowait';
RTran.Params.Text := 'read_committed'#13#10'rec_version'#13#10'nowait'#13#10'read';
RTran.StartTransaction;
eGToolDBFileName.Color := clGradientInactiveCaption;
SetStatusText(Format('Подключение к БД %s', [eGToolDBFileName.Text]));
end;
procedure TDBConverterMainForm.DoDisconnect;
begin
ibsqlRead.Close;
if WTran.InTransaction then
WTran.Rollback;
if RTran.InTransaction then
RTran.Rollback;
FDB.Connected := False;
eGToolDBFileName.Color := clWindow;
SetStatusText(Format('Отключение от базы %s', [FDB.DatabaseName]));
end;
-
Спасибо, что откликнулись. Но: "1. Завершаем все транзакции (if Tran.InTransaction then Tran.Commit или rollback)" Я же только запускаю приложение, одключения нет, нет и незавершенных транзакций.
"2. Ставим VADatabase.Connected:=False;
Connect: 1. Ставим VADatabase.Connected:=True;"
По сути это я и делаю, по моему понятию при установке Connected:=True должен выскочить запрос логина, пароля. А этого и не происходит!
Соотв. до "2. Стартуем транзакцию на чтение" просто не доходим - исключение.
-
Я в том смысле, что пароль у пользователя ХОЧУ спросить, но система это делать отказывается.
-
> Я в том смысле, что пароль у пользователя ХОЧУ спросить, > но система это делать отказывается.
Давай код.
-
Добавь в uses DbLogDlg.
-
Совет от makz на тему "Добавь в uses DbLogDlg." помог кардинально!
моя благодарность не знает границ!
|