Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.006 c
2-1181132170
Sapos
2007-06-06 16:16
2007.07.01
Путь


2-1181487281
имя
2007-06-10 18:54
2007.07.01
RichEdit меняет шрифт


2-1181127278
SentinelVologda
2007-06-06 14:54
2007.07.01
Mathcad+Delphi


2-1181354671
Solbon
2007-06-09 06:04
2007.07.01
ftp


2-1181276047
KJ
2007-06-08 08:14
2007.07.01
Выделить строку ListView целиком





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский