Форум: "Базы";
Текущий архив: 2007.07.01;
Скачать: [xml.tar.bz2];
ВнизВставка данных с помощью Stored Procedure Найти похожие ветки
← →
Neo Trinitron © (2007-03-29 15:36) [0]Такая тема. Набор данных открывается с помощью хранимой процедуры и отображается в гриде. Мне нужно чтобы вместо стандартного редактирования и добавления записей выполнялись мои процедуры добавления и редактирования. Как этого добиться?
← →
Megabyte © (2007-03-29 15:41) [1]Запретить править в Гриде, сделать кнопочки, на них повесить запуск соотв. ХП
← →
Neo Trinitron © (2007-03-29 15:47) [2]Не, нужно чтобы правилось всё именно в гриде. В этом весь фокус :)
← →
Jan (2007-03-29 15:50) [3]
> Не, нужно чтобы правилось всё именно в гриде. В этом весь
> фокус :)
никакой разницы между кнопками и гридом. все операции делает датасет - у енго есть события.
ИМХО ты не то делаешь. Тебе нужна вьюха и триггера.
← →
Neo Trinitron © (2007-03-29 15:57) [4]Jan, какая разница хранимая процедура или вьюха конкретно в этом случае??? И зачем мне сдались триггера? То что всё делает датасет я узнал раньше чем то что такое база данных, а о том что у него есть ещё и события я узнал ещё раньше. Конкретно по вопросу есть что ответить?
← →
stud © (2007-03-29 16:12) [5]Neo Trinitron © (29.03.07 15:36)
записей выполнялись мои процедуры добавления и редактирования.
бери в качестве дата сета например люьой который хранит полученые данные в памяти, при редактировании/добавлении записей пробегаеш по набору и запускаеш нужные процедуры.
← →
sniknik © (2007-03-29 16:15) [6]Jan (29.03.07 15:50) [3]
> Тебе нужна вьюха и триггера.
это если общее поведение таблицы в sql сервере, а не одного рекордсета на клиенте переделывать... (хотя при чем тут вьюха так и не понял)
Neo Trinitron © (29.03.07 15:57) [4]
> а о том что у него есть ещё и события я узнал ещё раньше
сомнительно... впечатление такое что только что прочитал, и еще не осознал как пользоваться... если переопределить onBeforePost и делать в нем нужное тебе для тебя проблема.
← →
Jan (2007-03-29 16:17) [7]
> какая разница хранимая процедура или вьюха конкретно в этом
> случае??? И зачем мне сдались триггера?
а в том что
> Мне нужно чтобы вместо стандартного редактирования и добавления
> записей выполнялись мои процедуры добавления и редактирования.
>
← →
Jan (2007-03-29 16:18) [8]
> хотя при чем тут вьюха так и не понял
стандартный способом реализации бизнесс логики на сервере.
← →
Jan (2007-03-29 16:23) [9]
> это если общее поведение таблицы в sql сервере, а не одного
> рекордсета на клиенте переделывать..
почему таблицы? это может быть и udf и большой запросище.
← →
Neo Trinitron © (2007-03-29 16:34) [10]sniknik,
а кто сказал что я не знаю что надо в onBeforePost это делать? Сделал я там всё что нужно, а как мне запретить после запуска моих процедур выполнять Post? abort помогает, но грида ведёт себя так будто бы я ничего и не добавлял и не изменял. В этом собственно и загвоздка, уважаемый.
Jan,
[quote]
стандартный способом реализации бизнесс логики на сервере.
[/quote]
Ссылку на такой стандарт в студию!
← →
Neo Trinitron © (2007-03-29 16:41) [11]И ещё интересно как можно в "стандартный способ реализации логики на сервере" вьюху передать параметры, фильтрации например. Очень интересно.
← →
Jan (2007-03-29 17:00) [12]
> И ещё интересно как можно в "стандартный способ реализации
> логики на сервере" вьюху передать параметры, фильтрации
> например. Очень интересно.
пиши фильтр и он будет наложен на запрос во вьюхе. параметры? поищи на скл.ру - там часто это обсуждается... способов достаточно.
← →
Neo Trinitron © (2007-03-29 17:06) [13]Фильтр на клиенте? Не интересно, совершенно. Параметры. Насколько я знаю параметры во вьюху нельзя передать. Покажи хоть один способ если он есть, боюсь я долго буду искать сие чудо.
← →
Johnmen © (2007-03-29 17:12) [14]
> Мне нужно чтобы вместо стандартного редактирования и добавления
> записей выполнялись мои процедуры добавления и редактирования.
и
> грида ведёт себя так будто бы я ничего и не добавлял и
> не изменял. В этом собственно и загвоздка, уважаемый.
Как тебя понимать, Саид?
← →
Johnmen © (2007-03-29 17:13) [15]Прошу прощения....
Как тебя понимать, Neo Trinitron?
← →
Neo Trinitron © (2007-03-29 17:19) [16]>Как тебя понимать, Neo Trinitron?
А что тут непонятного? Хочу добавить или отредактировать на клиенте в гриде запись. Добавляю как обычно, но вместо "execsql...." который обычно выполняется при post, я хочу чтобы выполнялась моя процедура. А на клиенте изменения должны отобразиться нормально, будто был выполнен post.
← →
Jan (2007-03-29 17:25) [17]
> А что тут непонятного? Хочу добавить или отредактировать
> на клиенте в гриде запись. Добавляю как обычно, но вместо
> "execsql...." который обычно выполняется при post, я хочу
> чтобы выполнялась моя процедура. А на клиенте изменения
> должны отобразиться нормально, будто был выполнен post.
реализация логики на клиенте - не есть гуд...
Тебе ж у же сказали юзать какой-то мемори датасет и на его события after вызывай свои ХП. или делай бизнесс логику на сервере юзай вьюхи и триггера, тогда секьюрити повыше будет да и целостность базы тоже.
← →
Jan (2007-03-29 17:27) [18]
> и на его события after вызывай свои ХП
тут наверное больше before, хотя все завист от того нужно ли тебе получать от сервера данные при посте...
← →
stud © (2007-03-29 17:30) [19]Jan (29.03.07 17:27) [18]
тут наверное больше before, хотя все завист от того нужно ли тебе получать от сервера данные при посте...
в локальном датасете данные будут вводиться нормально, тут главное отслеживать запись на сервер. и на сервер можно скидывать когда например весь "грид" отредактирован
← →
Neo Trinitron © (2007-03-29 17:34) [20]>реализация логики на клиенте - не есть гуд...
А где ты видишь реализацию логики на клиенте???
Мемори датасет я не юзаю, даже не знаю что это такое. И почему это целосность данных и секьюрити от вьюх и триггеров будет выше? :))) Не понимаю этого механизма совершенно. Именно потому что вся логика реализована на сервере, на клиенте и не делается вставка данных напрямую. Да и прав на вставку данных вообще у клиента нет...только на выполнения ряда хранимых процедур.
← →
Jan (2007-03-29 17:57) [21]
> А где ты видишь реализацию логики на клиенте???
а это где? У Васи Пупкина?
> А что тут непонятного? Хочу добавить или отредактировать
> на клиенте в гриде запись. Добавляю как обычно, но вместо
> "execsql...." который обычно выполняется при post, я хочу
> чтобы выполнялась моя процедура.
← →
Neo Trinitron © (2007-03-29 18:01) [22]И что, если я пытаюсь отредактировать данные на клиенте, а затем отослать изменения в базу на сервере посредством хранимой процедуры, это называется "на клиенте"? Ну, ну... Чтоже тогда будет называться "на сервере"?
← →
ANB © (2007-03-29 18:22) [23]
> Neo Trinitron © (29.03.07 18:01) [22]
Бросай ты это дурацкое ADO + MS SQL.
В связке Oracle + Odac дейтасеты ведут себя именно так, как тебе надо. И даже рефреш одной записи есть, на случай, если на сервере она поменялась сильно.
:)
← →
Neo Trinitron © (2007-03-29 18:24) [24]Ништяк, всё, иду к начальству и требую перемен сервера и компонентов :) Шикарное решение!!!
← →
ANB © (2007-03-29 18:32) [25]
> Neo Trinitron © (29.03.07 18:24) [24]
> Ништяк, всё, иду к начальству и требую перемен сервера и
> компонентов :) Шикарное решение!!!
Есть решение №2 - сесть и самому написать компонент.
← →
Jan (2007-03-29 18:33) [26]
> И что, если я пытаюсь отредактировать данные на клиенте,
> а затем отослать изменения в базу на сервере посредством
> хранимой процедуры, это называется "на клиенте"? Ну, ну.
> .. Чтоже тогда будет называться "на сервере"?
trigger
← →
Neo Trinitron © (2007-03-29 18:51) [27]Jan, извини, но ты говоришь глупости :) Триггер вообще гадость редкостная (по этому вопросу спорить не буду). Да и писАть код на три экрана в триггере - лучше не придумаешь.
Я нашёл правильный способ для моей ситуации. Если кому интересно, надо свойство датасета LockType = ltBatchOptimistic. И всё будет в шоколаде и ничего выдумывать не надо.
← →
Jan (2007-03-29 18:56) [28]
> Триггер вообще гадость редкостная (по этому вопросу спорить
> не буду).
действительно и чего это его мелкософт в репликации использует ума не приложу нет бы на уровне приложения все колбасить, анет выдумали понимаешь сушность и тягают ее.. да еще и все нормальные СУБД поддерживают - наверное рекламный ход...
← →
Neo Trinitron © (2007-03-29 19:04) [29]:)))) О микрософт я вообще молчу и о его репликации тоже. Ты работал с репликацией майкрософт? Проблем небыло? Может у тебя проэктики небольшие были? Заметно.
← →
Jan (2007-03-29 19:12) [30]
> О микрософт я вообще молчу и о его репликации тоже.
зачем тогда тебе их сервер?
← →
Neo Trinitron © (2007-03-30 09:55) [31]> зачем тогда тебе их сервер?
Мне?????? :)))
← →
Jan (2007-03-30 10:30) [32]пора тебе в клинику.
← →
Neo Trinitron © (2007-03-30 10:37) [33]А ты что, ещё и врач по совместительству? 50% программист, 50% врач (санитар)? Определись уже, делай что-то одно, а то ни то ни сё, как видно :). Может не будем до личностей опускаться? Ты ещё не чувствуешь в себе силы не влазить в это дерьмо?
← →
Sergey13 © (2007-03-30 10:42) [34]> [33] Neo Trinitron © (30.03.07 10:37)
По тону твоих постов можно подумать, что это у всех остальных что-то не получается, а ты задолбался всех учить.
← →
Neo Trinitron © (2007-03-30 10:55) [35]Sergey13, возможно тебе именно так и показалось, но это не повод отправлять меня в клинику. Раз. Второе. Я достаточно хорошо знаю теорию баз данных и знаю как надо делать, а как нет. Jan мне начал рассказывать что я вообще всё на клиенте делаю. Это же бред. На каком клиенте могут быть хранимые процедуры??? Jan мне так и не дал ссылки где описан "стандарт логики сервера вьюха". Также мне не поведал ни одного способа передавать параметры во вьюху, хотя утверждает что их очень много. О безопасности триггеров тоже умолчал, хотя говорил что это более безопасно чем использование хранимых процедур. Snicknik мне поведал что я нифига вообще не шарю ибо не знаю о событиях. Ему даже в голову не пришло что о такой фигне я здесь и не спрашивал бы. Гордо ушёл, а ответа на вопрос сам не знает. Вот такой вот я неуч на фоне такого профессора. Вот и тебе, Sergey13 что-то показалось... На мой вопрос так никто здесь и не отвечал. Все пытались научить чему-то, а конкретно о вопросе забыли. Я ответ здесь выложил чтобы те кому надо не мучались в поисках, а не чтобы кого-то научить. Это не в моих правилах учить, я не учитель...и не доктор (санитар).
← →
Sergey13 © (2007-03-30 11:08) [36]> [35] Neo Trinitron © (30.03.07 10:55)
Не знаю как в АДО (я так понял ты через него работаешь с МССКЛ) я бы переписал модифицирующие запросы (в БДЕ например это в TUpdateSQL), которые вызываются при правке датасета, со "стандартных" на вызовы своих процедур.
← →
Jan (2007-03-30 11:10) [37]
> Neo Trinitron © (30.03.07 10:55) [35]
если ты такой умный, то чего вообще постил тут вопрос? а если ты хотел чтобы все восхитились твоей идеей работы с данными через ХП, то ты не туда пришел.
Если сделал и хочешь похвастаться, то запости сюда плиз код который ты придумал, коды ХП - пусть народ порадуется. Или это большой секрет?
← →
Neo Trinitron © (2007-03-30 11:21) [38]>если ты такой умный, то чего вообще постил тут вопрос? а если ты хотел чтобы все восхитились твоей идеей работы с данными через ХП, то ты не туда пришел.
Если сделал и хочешь похвастаться, то запости сюда плиз код который ты придумал, коды ХП - пусть народ порадуется. Или это большой секрет?
Каждый судит по себе. Я не думаю что должен ответить на эти вопросы. Ведь я не утверждал что я шибко умный, я не хотел восхищения и оваций, также не хотел хвастаться и выкладывать комерческий код и методологию (это уже из разряда секретов фирмы). Если хочешь узнать чего же я хотел, прочти мой первый пост, там всё есть, ничего большего.
Sergey13. Да через ADO. В DAO (Oracle) есть такое собитие OnApplyRecord, там я раньше такие фичи обрабатывал. Вот столкнулся с ADO, а там немного по-другому, как выяснилось.
← →
Neo Trinitron © (2007-03-30 11:30) [39]>я бы переписал модифицирующие запросы (в БДЕ например это в TUpdateSQL), которые вызываются при правке датасета, со "стандартных" на вызовы своих процедур.
Sergey13, я так и сделал, но мне ещё надо было заставить эти данные правильно отобразиться в гриде, минуя процедуру post. Тип блокировки датасета решил проблему. Мелочь такая, а такие вещи делает.
← →
Sergey13 © (2007-03-30 11:37) [40]> [39] Neo Trinitron © (30.03.07 11:30)
> но мне ещё надо было заставить эти данные правильно отобразиться
> в гриде, минуя процедуру post.
Не понял я этой фразы.
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2007.07.01;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.005 c