Форум: "Базы";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
ВнизПсевдонимы БД Найти похожие ветки
← →
Alex7 (2004-10-12 09:03) [0]Создал псевдоним для БД из Visual Foxpro на базе соответствующего драйвера ODBC. При активизации БД, независимо
от существования пароля, выдается запрос на него (диалог "DataBase Login"). Можно ли избежать холостую выдачу этого диалогового окна ?
← →
Nikolay M. © (2004-10-12 09:08) [1]Ты, конечно, думаешь, что у тебя одного такой вопрос? Или что ты первый решил задать его на этом форуме?
http://www.delphimaster.ru/cgi-bin/forum.pl?n=1&search=login
← →
Alex7 (2004-10-12 16:54) [2]Спасибо за подсказку, но после того, как специально добавил
компонент Database при LoginPrompt=False, - все равно выдается
запрос. Больше того, на введенный пароль(любая абракадабра)тоже не реагирует. Все проходит. Чувствую, что где-то ошибаюсь. Но где?
← →
sniknik © (2004-10-12 17:24) [3]> Чувствую, что где-то ошибаюсь.
17-ю строку смотри, адназначно!
← →
Nikolay M. © (2004-10-12 22:28) [4]1. Что значит "не реагирует"?
2. Как вводится пароль и чему равно Database.Params непосредственно перед установкой коннекта?
← →
sniknik © (2004-10-12 23:42) [5]> 1. Что значит "не реагирует"?
рискну ответить вместо него. ;о)
накак не реагирует, база то фоксовая, какие там пароли могут быть? тем более подключил он не базу а разрозненные файлы (скорее всего) а раз пароля на базе нет то и авторизации не требует(игнорируется движком), а это значит любая чуш введенная вместо пароля приводит к открытию базы.
← →
Alex7 (2004-10-13 08:10) [6]Не реагирует, значит после клика "OK" в запросе база активизируется при любом значении пароля (даже пустом).
А DataBase.Params я ввожу ввожу произвольно или убираю
вовсе. Там же устанавливаю LoginPrompt=False.
Но зто второй вопрос. Главное запрос выдается, немотря ни на что.
← →
sniknik © (2004-10-13 08:17) [7]> Главное запрос выдается, немотря ни на что.
???
> Там же устанавливаю LoginPrompt=False
еще раз ???
не, адназназначно 17 строка виновата.
← →
Alex7 (2004-10-13 11:14) [8]Правильно! Запрос выдается при LoginPrompt=False.
Прошу прощения за свою темноту. Но я не понимаю, что такое
17 строка.
← →
sniknik © (2004-10-13 11:26) [9]http://podgoretsky.com/ftp/Language/nps/idioms.html
← →
Alex7 (2004-10-13 20:15) [10]Идиомы посмотрел. Спасибо за науку. Я новичок, так что думаю мне простительно. А теперь по существу.
Никакого кода практически нет. Есть БД(не файл, а БД), форма с 4-мя компонентами плюс Database1.LoginPrompt := False; натыканные в разных местах (и в инспекторе тоже) и все.
Так называемый код привожу.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, Grids, DBGrids;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Table1: TTable;
Database1: TDatabase;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Database1BeforeConnect(Sender: TObject);
procedure Database1Login(Database: TDatabase; LoginParams: TStrings);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Database1.LoginPrompt := False;
Table1.Active := True;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Table1.Active := False;
end;
procedure TForm1.Database1BeforeConnect(Sender: TObject);
begin
Database1.LoginPrompt := False;
end;
procedure TForm1.Database1Login(Database: TDatabase;
LoginParams: TStrings);
begin
Database1.LoginPrompt := False;
end;
end.
← →
sniknik © (2004-10-13 20:54) [11]> Database1.LoginPrompt := False;
> Table1.Active := True;
и вот при этом возникает диалог ввода пароля?
тогда все элементарно, у тебя таблица Table1 приконекчена не к Database1 а напрямую к алиасу/пути/чему угодно но только не к Database1.
или 2 вариант тоже простой, диалог возникает до него, это значит таблица открыта в режиме разработки, и в той же разработке (в самом компомпоненте) стоит Database1.LoginPrompt = true; тогда дельфи генерит код с открытием таблици до твоего кода, когда еще не сработал твой первый Database1.LoginPrompt := False;.
> Идиомы посмотрел. Спасибо за науку.
кстати не обязательно весь код выкладывать, достаточно существенные для вопроса места. вот этом случае
достаточно было бы
"при трассировке на коде
procedure TForm1.FormCreate(Sender: TObject);
begin
Database1.LoginPrompt := False;
Table1.Active := True;
end;
при открытии таблици, вызывается диалог ввода пароля, хотя и не должон..."
и все. все понятно. трассировка делается по F7 F8 (пригодится ;)
← →
Alex7 (2004-10-14 09:15) [12]Еще раз спасибо за соучастие в проблеме,но вопросы к сожалению
остаются.
По 1 варианту:
Как связать Table1 c Database1 ? Путем тыка я в Database1
в свойстве DatabaseName указал псевдоним (вместо имени БД). И
все пошло. Запрос исчез. Но как оказалось, "Ура!" кричать рано.
Теперь он не появляется и при "LoginPrompt = True". Вернее, он
появляется, но только при открытии Unit и при Table1.Acttive = True. А на правильность пароля вообще не реагирует. После OK БД
активизируется всегда.
По 2 варианту: Действительно заапрос вылезает на на команде
Table1.Active := True;, независимо от наличия в коде Database1.LoginPrompt := False;. Ну и что. а как исправить
ситуацию.
← →
sniknik © (2004-10-14 11:16) [13]не пойму, у тебя то какие варианты? я пытаюсь предположить что у тебя может быть у меня варианты есть, а у тебя все на месте ты делаеш только в одном и предполагать не нужно просто посмотри как сделано и выбери из 2х что подходит.
> А на правильность пароля вообще не реагирует.
а вот ответы нужно не только просматривать их еще желательно вдумчиво прочитывать.
перечитай [5] еще раз. и сразу, это не исправляется, если база пороль не поддерживает то это значит бери другую если он тебе необходим.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.041 c