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

Вниз

Вставка данных с помощью 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;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.033 c
15-1180637443
ыыыыы
2007-05-31 22:50
2007.07.01
Как правильно, - "генерация" или "генерирование"


15-1180539791
Орион
2007-05-30 19:43
2007.07.01
Индекс иконки файла по расширению


2-1181168807
delphino
2007-06-07 02:26
2007.07.01
?


15-1180784583
Zeqfreed
2007-06-02 15:43
2007.07.01
Magic 8-ball


15-1180805387
Fman
2007-06-02 21:29
2007.07.01
Перехватить соединение.