Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » InterBase и FireBird: вопросы по работе и их решение

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

Открыть новую тему     Написать ответ в эту тему

alexssss1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11, мне скорее нужен программный вариант, а именно как єто сделать средствами Делфи?!

Всего записей: 40 | Зарегистр. 22-09-2008 | Отправлено: 23:00 06-04-2010
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну так надо же уточнять компоненты доступа. Если используешь IBX, то посмотри на закладку Intebase Admin
 
Добавлено:
Я этими компонентами на пользуюсь, но наверное тебя спасёт TIBSecurityService

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 23:11 06-04-2010
alexssss1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вообще я работаю с компонентами DBX. Есть у меня такая идея. Сделать некую таблицу, где хранить информацию об обновлении. Например, когда запускается процесс обновление, то в эту таблицу помещается некоторое значение, например UPD.
Далее, в клиентах выполняется проверка , например по таймеру каждые 3 секунды, значения этой таблицы. И как только клиент увидит там это значение (UPD), соответственно он отключается от базы с уведомлением.  
Но, честно говоря, лишний раз не хочется нагружать клиентов таймерами.
 
Добавлено:
Хотя есть и другая идея. При запуске регистрировать всех клиентов в этой же базе данных. И когда запускается обновление, то все, кто в данный момент не завершили сеанс, получают уведомление от сервера о закрытии сеанса.

Всего записей: 40 | Зарегистр. 22-09-2008 | Отправлено: 23:36 06-04-2010
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alexssss1
POST_EVENT

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 00:05 07-04-2010
alexssss1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volser, спасибо. Кажется то что надо. Теперь буду разбираться.
Кстати вопрос сразу.
Если я делаю, например в IBExpert такой триггер:
 
CREATE trigger mytable_bi0 for "mytable"
active before insert position 0
AS
begin
POST_EVENT 'myevent';
end
 
то все ок, но..
каким образом мне сделать такой же триггер программно (через запрос) в Delphi? Через SQLQuery,например?
 

Всего записей: 40 | Зарегистр. 22-09-2008 | Отправлено: 01:03 07-04-2010
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А что значит "сделать программно"?
Просто вставь текст запроса на изменение МЕТАданных и выполни SQLQuery.execsql. Только ParamsCheck установи в false;
Также есть компонента у IBX - TIBScript.
 
А если нужно выполнять сложные большие скрипты, то можно использовать специальные компоненты - скриптеры. В Фибах это TpFIBScripter.  
 
Может есть другие компоненты.
 
Очень мощный скриптер идёт в поставке с IBExpert. Там есть примеры и информация по использованию. Загляни в папку C:\Program Files\HK-Software\IBExpert\IBEScriptDll\
А ещё есть экзешник IBEScript.exe - консольная утилита.

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 01:35 07-04-2010
Odysseos



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alexssss1
 
каким образом мне сделать такой же триггер программно (через запрос) в Delphi? Через SQLQuery,например?
 
В БД:
 

Код:
 
create or alter procedure update_notify
as
begin
   POST_EVENT 'myevent';
end
 

 
В свойстве SQL объекта query в Delphi:
 

Код:
 
execute procedure update_notify
 

Всего записей: 186 | Зарегистр. 02-01-2006 | Отправлено: 04:12 07-04-2010
alexssss1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мне нужно сделать обновление БД в программе, в котором добавить вот типа такого триггера.
 

Цитата:
Просто вставь текст запроса на изменение МЕТАданных и выполни SQLQuery.execsql.

 
Т.е. вставить именно вот это:
 
CREATE trigger mytable_bi0 for "mytable"
active before insert position 0
AS
begin
POST_EVENT 'myevent';
end  
 
?
 
или это нужно обрабатывать через TIBScript ?
 

Всего записей: 40 | Зарегистр. 22-09-2008 | Отправлено: 08:45 07-04-2010 | Исправлено: alexssss1, 09:13 07-04-2010
alexssss1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Разобрался.

Всего записей: 40 | Зарегистр. 22-09-2008 | Отправлено: 12:26 08-04-2010
Omsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я использую клиент flamerobin, хочу добавить пользователя, чтобы был еще один кроме sysdba, и программа выдает такой лог:

Цитата:
Preparing query: create user sergey
Error: *** IBPP::SQLException ***
Context: Statement::Prepare( create user sergey )
Message: isc_dsql_prepare failed
 
SQL Message : -104
Invalid token
 
Engine Code    : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 8
user
 
 
Total execution time: 0.000s

Что не так?

Всего записей: 898 | Зарегистр. 22-02-2007 | Отправлено: 13:34 08-04-2010
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А версию сервера должны телепаты угадать?

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 14:21 08-04-2010
Omsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
версия 2.1.3, я думал, что версия неважна.

Всего записей: 898 | Зарегистр. 22-02-2007 | Отправлено: 14:32 08-04-2010
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не в каждой версии есть возможность создавать пользователей SQL запросом. И эта возможность появилась ЕМНИП только в версии 2.5
 
Добавлено:
http://firebirdsql.su/doku.php?id=user
Что и требовалось доказать

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 14:41 08-04-2010
Omsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Это мне надо версию 2.5 поставить, чтобы можно было создавать пользователей командой?
Она ведь вроде еще бета-версия?
И написано, что эти команды доступны в Isql и еще в одном клиенте, а я пользуюсь другим.

Всего записей: 898 | Зарегистр. 22-02-2007 | Отправлено: 14:47 08-04-2010
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Это мне надо версию 2.5 поставить, чтобы можно было создавать пользователей командой?
Она ведь вроде еще бета-версия?

Ставь не бойся. Нормальная версия. Уже 2 RC
 
Добавлено:

Цитата:
И написано, что эти команды доступны в Isql и еще в одном клиенте, а я пользуюсь другим.

Не понял... Если можно добавлять юзверей с помощью SQL, то при чём здесь клиент? Клиент должен передать запрос серверу, а не сам его обрабатывать.

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 14:55 08-04-2010
Odysseos



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
 
Если можно добавлять юзверей с помощью SQL, то при чём здесь клиент? Клиент должен передать запрос серверу, а не сам его обрабатывать.
 
Клиент может парсить некоторые запросы сам, и то, что "не понимает" сервер - эмулировать вызовами Services API. Так, например, IBExpert делает в своем "испольняльщике" скриптов.
 
...Правда, к ISQL это не относится.

Всего записей: 186 | Зарегистр. 02-01-2006 | Отправлено: 15:12 08-04-2010
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возможно. Но таких клиентов, как IBExpert единицы.

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 15:16 08-04-2010
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Omsk
А что мешает создать пользователя штатными средствами того же FlameRobin? Или использовать gsec?
 
Добавлено:

Цитата:
И написано, что эти команды доступны в Isql

Где написано? в ReleaseNotes к FB 2.1.x?

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 15:19 08-04-2010
Omsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OXDBA, я начинаю изучать sql, вот и хочу командой все это прописать.

Всего записей: 898 | Зарегистр. 22-02-2007 | Отправлено: 08:12 09-04-2010
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Omsk
Тогда присоединяюсь к X11  

Цитата:
Ставь не бойся. Нормальная версия. Уже 2 RC


Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 11:12 09-04-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » InterBase и FireBird: вопросы по работе и их решение


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru