Страница 1 из 1
Определить наличие пользователя в FB 2.1
Добавлено: 15 апр 2010, 12:10
mult
Зарегистрированы пользователи в FB 2.1 через IBExpert. Как из программы (D2007) определить наличие этих пользователей в базе? Говорят существуют какие-то API сервисы через которые можно получить подобную информацию, где бы это прочитать?
Re: Определить наличие пользователя в FB 2.1
Добавлено: 15 апр 2010, 13:57
Dimitry Sibiryakov
Про "API сервисы" было бы логично читать в API Guide. Разве нет?
Re: Определить наличие пользователя в FB 2.1
Добавлено: 15 апр 2010, 15:00
kdv
Re: Определить наличие пользователя в FB 2.1
Добавлено: 16 апр 2010, 13:48
mult
Скачал указанную программку, подключил к учебной базе. При попытке вести имя и пароль существующего пользователя выдала такое сообщение "Table unknown RDB$USERS" ? Но ведь она существует ! И gsec.exe работает, в чём же дело?
Re: Определить наличие пользователя в FB 2.1
Добавлено: 16 апр 2010, 14:51
kdv
используйте отладчик Delphi. У меня такой проблемы нет. ФБ 2.1 + admin.exe. Разве что при логине выдает feature not supported, но это относится к ServerProperties и т.п., что ФБ не поддерживает.
Или просто ищите примеры использования TIBSecurityService, в частности они однозначно есть на sql.ru.
Re: Определить наличие пользователя в FB 2.1
Добавлено: 16 апр 2010, 16:14
mult
Ошибка возникает в процедуре FetchUserInfo, описанная в модуле IBServices. В принципе там всё довольно просто. Если сервер Local, то DataBaseName:= UserDatabase, прописанный в IBSecurityService и запрос FIBSQL.SQL.Text := 'SELECT * FROM RDB$USERS'; Если возникает ошибка "Table unknown RDB$USERS", то выходит, что DataBaseName:= UserDatabase не проходит. Но выяснить это не могу, потому как IBServices модуль откомпилированный и поставить там точку прерывания нельзя. Что делать?
А на SQL.RU примеров использования весьма скудно и мою проблему не решают. Что делать ?
Re: Определить наличие пользователя в FB 2.1
Добавлено: 16 апр 2010, 22:02
kdv
Вообще-то в procedure TIBSecurityService.FetchUserInfo; написано
указывать свойство UserDatabase никто не заставлял. Может, зачем-то это делается в коде примера admin, но обычно это никто не делает.
А в Firebird с версии 2.0 не разрешает явный коннект к БД пользователей, отсюда и ошибка у Вас.
Re: Определить наличие пользователя в FB 2.1
Добавлено: 17 апр 2010, 08:26
mult
Невероятно, получилось. Столько времени угрохал из-за такой ерунды, и даже мысли не возникло убрать эту UserDataBase. Единственное смутное подозрение всвё-таки терзало, почему UserDataBase, а не как всегда DataBase. И на тебе, как всё просто. Огромное спасибо тебе, kdv.
Но попутно возник маленький вопрос. Когда получил в Memo список пользователей FirstName почему-то не отображает русские буквы. В свойствах фонта поставил RUSSIAN_CHARSET, шрифт самый, что ни на есть, русский Times New Roman. Да вот ни хрена, пишет на албанском и всё. В IBExpert всё нормально, а здесь нет. Что я ещё упустил? К стати, в примере AdminTool тоже русские не пишет.
Re: Определить наличие пользователя в FB 2.1
Добавлено: 17 апр 2010, 16:46
kdv
В свойствах фонта поставил RUSSIAN_CHARSET
убиться можно. каким боком связаны кодировка символов и шрифт?

я всю жизнь работаю с ansi_charset в IBE, и никогда не трогал эту настройку.
А русских букв в именах пользователя не будет, потому что там (в rdb$users) столбцы с charset none. Посмотрите структуру этой таблицы, если интересно.
Re: Определить наличие пользователя в FB 2.1
Добавлено: 18 апр 2010, 07:42
mult
каким боком связаны кодировка символов и шрифт?
Просто у меня в Memo стоял шрифт system, а он не всегда отображает русские символы, поэтому и поcтавил Times. А заодно и RUSSIAN_CHARSET. Я ведь пробовал.
А русских букв в именах пользователя не будет
Не будет так не будет. Придётся эту информацию хранить в отдельной таблице. Спасибо за всё.
Re: Определить наличие пользователя в FB 2.1
Добавлено: 18 апр 2010, 13:59
Dimitry Sibiryakov
kdv писал(а):убиться можно. каким боком связаны кодировка символов и шрифт?

я всю жизнь работаю с ansi_charset в IBE, и никогда не трогал эту настройку.
Держу пари, при этом ты всегда работал с локализованной Windows или ставил "Язык для non-unicode программ" (который и определяет какая кодовая страница будет иметь титул "ANSI") в "Русский", что эффективно приводит ANSI_CHARSET к RUSSIAN_CHARSET.
Re: Определить наличие пользователя в FB 2.1
Добавлено: 21 апр 2010, 01:33
kdv
возможно. хотя до определенного момента работал с английскими виндами (с 1251 локалью). Использовал-ли я в те года IBE - не помню.