Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.13;
Скачать: CL | DM;

Вниз

Гранты, TIBDataSet и его Prepare   Найти похожие ветки 

 
eugie   (2004-01-21 16:46) [0]

Уважаемые Мастера! Столкнулся с такой проблемой. В приложении используются компоненты TIBDataSet с запросами на SELECT, REFRESH, INSERT, UPDATE, DELETE (т.е. "live query"). Их довольно много, кроме того, некоторые еще и создаются в run-time. Так вот, при подключении к БД под именем пользователя, имеющего ограниченные права на объекты БД (например только SELECT и REFERENCE) сервером выдается ошибка при выполнении IBDataSet.Open типа "нет прав на вставку/обновление". Причина - при выполнении метода (IBDataSet.Open) выполняется метод Prepare для каждого из запросов компонента (смотрел исходник) - как следствие - возникновение ошибки. Подскажите, есть ли какие-либо другие компонеты, у которых Prepare выполняется отдельно для каждого из запросов непосредственно при его использовании? Или есть пути для обхода данного затыка? Просто переделывать сильно много, хочется "малой кровью" обойтись...


 
Sandman25 ©   (2004-01-21 16:56) [1]

ReadOnly/RequestLive (или как его там для IB компонент) указан верно?


 
Johnmen ©   (2004-01-21 17:01) [2]

>eugie

Малой кровью - подправить исходники :)
Закомментарь препарирование...


 
eugie   (2004-01-21 17:25) [3]

>Sandman25
Таких свойств нет

>Johnmen

Закоментарить - не пойдет: подключающийся пользователь может иметь права на изменение объекта БД. Есть конечно такая идея - последовательно делать попытки выполнения TIBDataSet.Open и в зависимости от кода ошибки выносить тексты из запросов на INSERT, UPDATE и DELETE. Но тогда возникает проблема востановления таковых при смене пользователя. Геморрой, короче.


 
Sandman25 ©   (2004-01-21 17:28) [4]

Я думаю, Johnmen имел ввиду, чтобы Prepare вызывался при их первом использовании, а не TIBDataSet.Open.


 
Johnmen ©   (2004-01-21 17:32) [5]

>Sandman25 © (21.01.04 17:28)

Точно :)


 
Sandman25 ©   (2004-01-21 17:35) [6]

[5] Johnmen © (21.01.04 17:32)

Вот видишь... Сегодня не пятница и не 13-ое, и мы опять друг друга понимаем :)


 
eugie   (2004-01-21 17:40) [7]

Именно это и надо. Путей 2: "нарисовать" новую компонету на основе TIBDataSet с переопределением метода Prepare и необходимых свойств или изменить стандартный. Вот я и спросил, может уже кто сделал подобное?


 
Sandman25 ©   (2004-01-21 17:47) [8]

Я тут поковырялся по исходникам... Вроде бы prepare происходит только при наличии соответствующего SQL. Можно попытаться определять права пользователя заранее (до открытия Dataset) и присваивать только те SQL (Insert, update, delete), на которые есть доступ.


 
eugie   (2004-01-22 04:54) [9]

Так и есть. Я тоже начал склоняться к этому варианту.



Страницы: 1 вся ветка

Текущий архив: 2004.02.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
14-39011
HolyMan
2004-01-25 10:33
2004.02.13
Кто нибудь работал с компонентами DevExpress?


8-38963
kavlad
2003-10-10 14:57
2004.02.13
Поиск пересечения многоугольников


8-38967
scooterfun
2003-10-12 02:53
2004.02.13
Преобразование WAV в MP3


4-39135
GUNski
2003-12-09 20:51
2004.02.13
Как в MDI-форме получить message при создании MDI-Child-окна?


3-38680
T__Alex
2004-01-23 21:27
2004.02.13
Как указать с каким LangDriverом открыть dbf