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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

LeaF_AVF



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
TSIBfibEventAlerter тебе нужен для реагирования на event'ы,
в теле же самой процедуры генерить эти самые event через

Код:
POST_EVENT 'post_event_name';

но еще раз - не заморачивайся с этим, получишь только замедление работы
 
delover
давай для начала ты напишешь что именно тебе нужно сделать, а не как ты собираешься это делать, а потом уже будем заниматься шаманством, ок?

Всего записей: 275 | Зарегистр. 01-01-2007 | Отправлено: 11:30 09-10-2008
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
LeaF_AVF
понятно,ето мне в каждом цыкле надо генерить евент,приостанавливаеться работа процедури - я на клиенте считываю евент,и продолжаю цыкл на серваке.Весело.
Ето в лутшем случае увеличит время выполнения процедуры вдвое,плюс приколы с нагруженостью сетки еще замедлить время выполнения.
Нда абыдно.
Кта,а в природе ваще существует сервак на котором моно реализовать мою задачу без заморочек?  

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 11:47 09-10-2008
LeaF_AVF



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

Цитата:
приостанавливаеться работа процедури

нет, процедура не будет останавливаться, она будет генерить эвенты, которые будет регистрировать компонент в твоем приложении.
 
Может ты опишешь, что именно ты хочешь сделать и кто-то подскажет тебе другой путь решения проблемы (возможно, что и я ?

Всего записей: 275 | Зарегистр. 01-01-2007 | Отправлено: 11:51 09-10-2008
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вот моя процедура,немного покоцанная
SET TERM ^ ;
 
CREATE OR ALTER PROCEDURE NACHICLENIE (
    kvartal integer,
    god integer)
returns (
    kolvo integer)
as
declare variable  
....
begin
 
kolvo=1;
for select a.NAME Grupa_Name,a.kod_grypu,(select first 1 proc from proc_grypu where (a.grupa_master_id=grupa_master_id) and (data<:DATA_PROVEDENNYA) order by data desc) ,b.NAME Obekt_Name,b.DATA_VVODA,b.PERV_CTOIM,b.CROK_AMORT,b.NARAHOVANO,b.OCTATOCHNA_CTOIM,b.STATUS,b.CTAN_AMORT_MASTER_ID from grupa a left join ctan_amort b
on a.grupa_master_id=b.grupa_master_id
where (b.name is not null) and (b.OCTATOCHNA_CTOIM<>0) and (data_vvoda<:DATA_PROVEDENNYA) and (not data in (select data from dvig_amort where data=:data_provedennya and b.CTAN_AMORT_MASTER_ID=CTAN_AMORT_MASTER_ID))
into :Grupa_Name,:kod_grypu,:proc,:Obekt_Name,:DATA_VVODA,:PERV_CTOIM,:CROK_AMORT,:NARAHOVANO,:OCTATOCHNA_CTOIM,:STATUS,:CTAN_AMORT_MASTER_ID do begin
.....
insert into ....
suspend;
kolvo=kolvo+1;
Я хочу на клиенте увидеть измининие kolvo - сделать прогресс бар
end
end

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 12:15 09-10-2008
LeaF_AVF



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
эта процедура должна выполняться очень долго?
 
как вариант - записывать значение параметра kolvo в какую-то таблицу и периодически (по таймеру к примеру) считывать значение и преобразовывать в значение прогресс-бара?

Всего записей: 275 | Зарегистр. 01-01-2007 | Отправлено: 12:28 09-10-2008
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Наскоко долго я не знаю,зависит от кол-ва записей.Скорое всего записей до 1000
Вполне возможно что я не успею отследить  

Цитата:
как вариант - записывать значение параметра kolvo в какую-то таблицу и периодически (по таймеру к примеру) считывать значение и преобразовывать в значение прогресс-бара?
- я уже писал об етом в своем первом посте.
Такой вариант имеет тоже свои недостатки - клиент будет постоянно дергать сервер,
шо ни есть хорошо

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 12:52 09-10-2008
LeaF_AVF



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
тогда (если уж совсем невтерпеж и не обойтись без прогресс-бара) - генерируй эвент не после каждой записи, а к примеру после каждой пятидесятой-сотой...
 
з.ы. хотя лично я бы просто курсор поменял на crSQLWait (это если в Delphi) а потом вернул в обычный.. Достаточно и такой индикации

Всего записей: 275 | Зарегистр. 01-01-2007 | Отправлено: 12:59 09-10-2008
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Моно и курсор поменять , просто хотелось нагляднее сделать

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 13:06 09-10-2008
LeaF_AVF



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
можно. но не в ущерб производительности, ИМХО

Всего записей: 275 | Зарегистр. 01-01-2007 | Отправлено: 13:23 09-10-2008
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
И еще такой вопрос - у меня доступ к таблицам - процедурам розграничивается на уровне ролей.Кому какая роль я задаю при создании нового юзера.
На до ли явно при конекте указывать роль,ведь я наперед не знаю кому что,
ето придеться два раза открывать базу- раз шоб открыть , второй определяю роль и по новой конектю юзера но уже с ролью?

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 14:03 09-10-2008
LeaF_AVF



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
зачем дважды?
сразу коннектись с нужной ролью

Всего записей: 275 | Зарегистр. 01-01-2007 | Отправлено: 14:11 09-10-2008
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Но ведь я не знаю априори какая роль дана какому юзеру.
И в роли у меня прописано какую табличку и как юзать.И юзер привязан к етой роли -  
так зачем мне ее указывать при конекте???

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 14:23 09-10-2008
LeaF_AVF



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
как это не знаешь?
роль - это права пользователя
ты не знаешь какие права у Васи Пупкина - администратора или менеджера???
 
з.ы. один и тот же юзер при коннекте указывая различные роли - получит соответственно и разные права.
Т.е. по идее ты можешь создать одного пользователя для всех, а роли - разные!  
И нормально будет работать разграничение доступа

Всего записей: 275 | Зарегистр. 01-01-2007 | Отправлено: 14:32 09-10-2008
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
LeaF_AVF
Ну админские права токо у меня ,хотя не об етом речь
Юзеров может заводить токо админ?
А теперь смотри - я то знаю какие роли я кому раздам,хотя могу и забыть, а откуда моя программа будет знаю какая роль у какого юзера? или под какой ролью заходить если юзер один и вагон ролей?В данной ситуации мне наперед надо знать и юзеров и роли, а
юзеры ваще храняться на серваке а роли в базе.Тоеть без двойного открытия ты не обойдешся.Если у тебя два юзера то нормально,а если с полсотни???

Цитата:
Т.е. по идее ты можешь создать одного пользователя для всех, а роли - разные!  
И нормально будет работать разграничение доступа

С етим не согласен - работать то будет  - но с точки зрения безопасности ето не верно,
хотя сервера приложений в большинстве случаев так и реализуються.
Или я не так объясняю или мы говорим о разных вещах.
У меня есть к примеру одна табличка и 2 роли :
1я роль - один селект конкретной таблички
2я роль - селект+инс/апд
Я создаю нового юзера и привязываю его к роли на уровне сервера - меня интересует
надо ли в данной ситуации при конекте клиента явно указывать роль или нет??
  Я догнал о чем ты говориш
Цитата:
администратора или менеджера???
-  
в такой реализации немного усложняется структура базы - ты создаеш табличку
с юзерами и их так сказать правами - администратор - полный доступ,менеджер - к примеру токо просмотр и тд. На уровне сервера разграничиваеш доступ администратор одни права,менеджер другие и тд.Конектишся под, к примеру, сисдба а потом уже
конектиш конкретного юзера - я правильно понял?Но опять же, тебе сначала надо приконектится к серверу,открыть табличку пользователей - найти юзера,который пытаеться войти,прочитать его роль(админ.,менеджер),отконектится от сервера,-
и конектится уже с ролью. Моно конечно реализовать проще - держать базу юзеров гдето в реестре или инишке,но ето не прикольно.  
Но честно говоря лень нагромождать базу,и ето немного больше геморно  
 
 

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 15:11 09-10-2008
sergiuz1303



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
MagistrAnatol
Я вижу два варианта решения твоей проблемы:
1. Если пользователи и права записаны в какую нить табличку на базе тогда ты конектишся под SYSDBA а права обрабатываешь програмно, этот может делать только селект а этот еще и инсерт просто считываешь его права в переменную и исходя из нее открываешь дополнительные опции согласно прав.
2. Если пользователи у тебя забиты в USERS  то тут проще простого ты прям на сервере создал роли и права а сервер сам разбереться что те нужно делать. В таком случае клиенсткая тачка конектится не под SYSDBA а под USER1

Всего записей: 46 | Зарегистр. 11-06-2007 | Отправлено: 15:28 09-10-2008
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Короче я уже методом втыка разобрался - в моей ситуации не надо явно указывать роль
И еще такой ньюанс -
я инталирую файребирд с нормальным способом - с инсталятора - в командной втроке задаю  
Firebird-2.5.0.20343_0_Win32.exe /DIR=%1 /COMPONENTS="ServerComponent\SuperServerComponent,ServerComponent,DevAdminComponent,ClientComponent" /TASKS="UseGuardianTask,UseServiceTask,AutoStartTask,CopyFbClientToSysTask,CopyFbClientAsGds32Task" /SILENT
а у меня ставиться класический сервер и не копируется gds32.dll - ето я чет не так задал или ето глюки инталятора?
 
Добавлено:
sergiuz1303
у меня и реализовано по 2 варианте и все нормально,я токо хотел узнать надоли задавать роль при конекте - уже разобрался не надо,сервак сам фиг пустит если у тебя нет нужной роли

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 15:31 09-10-2008
LeaF_AVF



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
переубеждать тебя не буду
вот цитата с ibase.ru

Цитата:
 
Как работает аутентификация Windows в Firebird 2.1?
Для начала следует вспомнить несколько простых правил:
 
пользователи БД находятся в security2.fdb  
роли находятся в конкретной базе данных  
права пользователя (grant, revoke) выдаются пользователю в конкретной базе данных  
чтобы пользоваться правами роли, пользователь должен а) быть включен в роль, б) указать роль при логине к БД  
 

 
Пойми, роль, это такой же параметр при коннекте как и имя пользователя, и пароль!
Если ты пользуешься FIB'ами, загляни в свойство TpFIBDatabase.ConnectParams
 
P.S. Имхо ты создаешь проблемы, там где их нет
 
Добавлено:
MagistrAnatol
еще тут статья полезная по ролям, хоть немного и старовата..

Всего записей: 275 | Зарегистр. 01-01-2007 | Отправлено: 16:04 09-10-2008
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
LeaF_AVF
спорить не буду,я просто конектился без указания роли и если у юзера в роле не указан селект на какую-то тамблицу - его просто не пускает,проверено на практике,хотя может быть ето и не верно.
А поводу моего предыдущего поста по инсталятору?

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 16:45 09-10-2008
LeaF_AVF



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
по инсталлятору не скажу - я ставлю новые версии сервера редко и предпочитаю это делать руками

Всего записей: 275 | Зарегистр. 01-01-2007 | Отправлено: 16:48 09-10-2008
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Понятно.
Кста,тут пробывал версию 2,5 - пока лажа - толи фибсы еще не перестроились толи сервак глючит

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 17:01 09-10-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 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