![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вставка данных с помощью Stored Procedure [D6, MSSQL]
Neo Trinitron © (2007-03-29 15:36:00)Такая тема. Набор данных открывается с помощью хранимой процедуры и отображается в гриде. Мне нужно чтобы вместо стандартного редактирования и добавления записей выполнялись мои процедуры добавления и редактирования. Как этого добиться?
Neo Trinitron (2007-03-29 18:51:00) [41]Jan, извини, но ты говоришь глупости :) Триггер вообще гадость редкостная (по этому вопросу спорить не буду). Да и писАть код на три экрана в триггере - лучше не придумаешь.
Я нашёл правильный способ для моей ситуации. Если кому интересно, надо свойство датасета LockType = ltBatchOptimistic. И всё будет в шоколаде и ничего выдумывать не надо.
Jan (2007-03-29 18:33:00) [42]
> И что, если я пытаюсь отредактировать данные на клиенте,
> а затем отослать изменения в базу на сервере посредством
> хранимой процедуры, это называется "на клиенте"? Ну, ну.
> .. Чтоже тогда будет называться "на сервере"?
trigger
ANB (2007-03-29 18:32:00) [43]
> Neo Trinitron © (29.03.07 18:24) [24]
> Ништяк, всё, иду к начальству и требую перемен сервера и
> компонентов :) Шикарное решение!!!
Есть решение №2 - сесть и самому написать компонент.
Neo Trinitron (2007-03-29 18:24:00) [44]Ништяк, всё, иду к начальству и требую перемен сервера и компонентов :) Шикарное решение!!!
ANB (2007-03-29 18:22:00) [45]
> Neo Trinitron © (29.03.07 18:01) [22]
Бросай ты это дурацкое ADO + MS SQL.
В связке Oracle + Odac дейтасеты ведут себя именно так, как тебе надо. И даже рефреш одной записи есть, на случай, если на сервере она поменялась сильно.
:)
Neo Trinitron (2007-03-29 18:01:00) [46]И что, если я пытаюсь отредактировать данные на клиенте, а затем отослать изменения в базу на сервере посредством хранимой процедуры, это называется "на клиенте"? Ну, ну... Чтоже тогда будет называться "на сервере"?
Jan (2007-03-29 17:57:00) [47]
> А где ты видишь реализацию логики на клиенте???
а это где? У Васи Пупкина?
> А что тут непонятного? Хочу добавить или отредактировать
> на клиенте в гриде запись. Добавляю как обычно, но вместо
> "execsql...." который обычно выполняется при post, я хочу
> чтобы выполнялась моя процедура.
Neo Trinitron (2007-03-29 17:34:00) [48]>реализация логики на клиенте - не есть гуд...
А где ты видишь реализацию логики на клиенте???
Мемори датасет я не юзаю, даже не знаю что это такое. И почему это целосность данных и секьюрити от вьюх и триггеров будет выше? :))) Не понимаю этого механизма совершенно. Именно потому что вся логика реализована на сервере, на клиенте и не делается вставка данных напрямую. Да и прав на вставку данных вообще у клиента нет...только на выполнения ряда хранимых процедур.
stud (2007-03-29 17:30:00) [49]Jan (29.03.07 17:27) [18]
тут наверное больше before, хотя все завист от того нужно ли тебе получать от сервера данные при посте...
в локальном датасете данные будут вводиться нормально, тут главное отслеживать запись на сервер. и на сервер можно скидывать когда например весь "грид" отредактирован
Jan (2007-03-29 17:27:00) [50]
> и на его события after вызывай свои ХП
тут наверное больше before, хотя все завист от того нужно ли тебе получать от сервера данные при посте...
Jan (2007-03-29 17:25:00) [51]
> А что тут непонятного? Хочу добавить или отредактировать
> на клиенте в гриде запись. Добавляю как обычно, но вместо
> "execsql...." который обычно выполняется при post, я хочу
> чтобы выполнялась моя процедура. А на клиенте изменения
> должны отобразиться нормально, будто был выполнен post.
реализация логики на клиенте - не есть гуд...
Тебе ж у же сказали юзать какой-то мемори датасет и на его события after вызывай свои ХП. или делай бизнесс логику на сервере юзай вьюхи и триггера, тогда секьюрити повыше будет да и целостность базы тоже.
Neo Trinitron (2007-03-29 17:19:00) [52]>Как тебя понимать, Neo Trinitron?
А что тут непонятного? Хочу добавить или отредактировать на клиенте в гриде запись. Добавляю как обычно, но вместо "execsql...." который обычно выполняется при post, я хочу чтобы выполнялась моя процедура. А на клиенте изменения должны отобразиться нормально, будто был выполнен post.
Johnmen (2007-03-29 17:13:00) [53]Прошу прощения....
Как тебя понимать, Neo Trinitron?
Johnmen (2007-03-29 17:12:00) [54]
> Мне нужно чтобы вместо стандартного редактирования и добавления
> записей выполнялись мои процедуры добавления и редактирования.
и
> грида ведёт себя так будто бы я ничего и не добавлял и
> не изменял. В этом собственно и загвоздка, уважаемый.
Как тебя понимать, Саид?
Neo Trinitron (2007-03-29 17:06:00) [55]Фильтр на клиенте? Не интересно, совершенно. Параметры. Насколько я знаю параметры во вьюху нельзя передать. Покажи хоть один способ если он есть, боюсь я долго буду искать сие чудо.
Jan (2007-03-29 17:00:00) [56]
> И ещё интересно как можно в "стандартный способ реализации
> логики на сервере" вьюху передать параметры, фильтрации
> например. Очень интересно.
пиши фильтр и он будет наложен на запрос во вьюхе. параметры? поищи на скл.ру - там часто это обсуждается... способов достаточно.
Neo Trinitron (2007-03-29 16:41:00) [57]И ещё интересно как можно в "стандартный способ реализации логики на сервере" вьюху передать параметры, фильтрации например. Очень интересно.
Neo Trinitron (2007-03-29 16:34:00) [58]sniknik,
а кто сказал что я не знаю что надо в onBeforePost это делать? Сделал я там всё что нужно, а как мне запретить после запуска моих процедур выполнять Post? abort помогает, но грида ведёт себя так будто бы я ничего и не добавлял и не изменял. В этом собственно и загвоздка, уважаемый.
Jan,
[quote]
стандартный способом реализации бизнесс логики на сервере.
[/quote]
Ссылку на такой стандарт в студию!
Jan (2007-03-29 16:23:00) [59]
> это если общее поведение таблицы в sql сервере, а не одного
> рекордсета на клиенте переделывать..
почему таблицы? это может быть и udf и большой запросище.
Jan (2007-03-29 16:18:00) [60]
> хотя при чем тут вьюха так и не понял
стандартный способом реализации бизнесс логики на сервере.