powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно обновлять данные в dbGrid?
8 сообщений из 8, страница 1 из 1
Как правильно обновлять данные в dbGrid?
    #32152902
RIm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая связка D6+ADO+MS SQL2000


Есть желание доступ к серверу организовать через сохраненные процедуры. То есть доступа к таблицам у пользователей не будет вообще. такой подход мне кажется наиболее предпочтительным с точки зрения безопасности.

Однако без использования таблиц и вьюшек сильно затруднется работа с data-aware комgонентами. Нет например в TADOStoredroc таких понятий как MasterSource, MasterFields. Ну так бог с ними, не очень надо. На то там есть параметры.

Но. Как мне заставить ГРИД, выполнять мою команду обновления, добавления и удаления?

То есть на каждое действие хочется запускать свою сохр. процедуру, которая будет апдейтить и инсертить данные. Вот этого я пока не понял.

Спасибо.
...
Рейтинг: 0 / 0
Как правильно обновлять данные в dbGrid?
    #32153001
MikNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему работа именно через таблицы или вьюхи? Отображать данные в Grid-е можно ведь и через Query. А обновлять данные можно также через Query, которые будут вызывать твои хранимые процедуры.
...
Рейтинг: 0 / 0
Как правильно обновлять данные в dbGrid?
    #32153036
RIm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если честно, то алгоритм у меня не складывается в голове, можно с картинками ?
:-)
Как все это соединить?

Спасибо!
...
Рейтинг: 0 / 0
Как правильно обновлять данные в dbGrid?
    #32153069
oleg_e
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Есть желание доступ к серверу организовать через сохраненные процедуры. То есть доступа к таблицам у пользователей не будет вообще. такой подход мне кажется наиболее предпочтительным с точки зрения безопасности.

А, разве, представления не для этого придумали?
...
Рейтинг: 0 / 0
Как правильно обновлять данные в dbGrid?
    #32153157
RIm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда, как выяснилось именно для этого. Да, с безопасностью MSSQL Server, у меня большие пробелы...

Пошел заново читать...
Спасибо.
...
Рейтинг: 0 / 0
Как правильно обновлять данные в dbGrid?
    #32153179
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно предложить следующую методику
1- создаете процедуру выборки данных в грид
2 - цепляете ее к TAdoDataSet
3 - ставите LockType - ltBatchOptimistic
4 - выводите в грид
5 - на событие датасета - AfterPost запускаете свою процедуру вставки или
редактирования куда передаете параметрами текущие значения из записи датасета.
Резюме: грид отображает пользоательские изменения но они не идут дальше
датасета так как вы не будете вызывать UpdateBatch
Все изменения будут проходить через другую процедуру
...
Рейтинг: 0 / 0
Как правильно обновлять данные в dbGrid?
    #32153210
pima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если через вьюхи - то еще проще. В 2000-м SQL Server'e есть триггеры на view, триггеры instead. Вот и вешайте себе на здоровье на эти вью триггеры, которые будут вместо инсерта, апдейта и делейта вызывать хранимые процедуры:

create trigger ... on... instead of insert
as
exec ... --Ваша процедура

Insert по умолчанию в этом случае не произведется, т. к. триггер - instead.
...
Рейтинг: 0 / 0
Как правильно обновлять данные в dbGrid?
    #32153284
RIm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexur: спасибо - это то, о чем я спрашивал.
Pima: про instead of я знаю, мне интресено как народ до 2000 го работал.


Еще вопрос, может я не понимаю ничего?

есть таблица A
есть view VA: select * from a
созданы пользователем rim, он же dbo


есть пользователь test у него есть права select, insert, update, delete
на view VA
и никак не обозначены права на таблицу A.

делаю от имени пользователя test в QA:
select * from VA
update VA set p=1
все работает нормально

Делаю
select * from A
естественно отлуп по причине отсутствия доступа!


А теперь то же в Delphi
Есть Grid источник данных у него в конечном счете TADOtable = VA
Если обновляю от имени rim (dbo) - Все в порядке, если от имени test, то ВНИМАНИЕ он говорит, что нет прав на select в таблице dbo.A!!!

Ничего я не понимаю, запутался окончательно. Где тут что не так?
Попробовал в Access XP - та же ерунда.

Именно из-за этого я решил в свое время, что не имея доступа к таблице не получишь и выборку из view на основе этой таблицы. И отсюда родился этот пост.

Разъясните мне это пожалуйста.

Когда теория расходится с практикой то ну ее нафиг эту... кого? :-))))
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно обновлять данные в dbGrid?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]