Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вставка данных с помощью Stored Procedure [D6, MSSQL]


Страницы:   1 2 3 4

Neo Trinitron ©   (2007-03-29 15:36:00) 

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


Neo Trinitron   (2007-03-30 12:18:00) [21]

jan, иди играйся своими игрушками, тут взрослые дяди разговаривают :P Вот когда дорастёшь до уровня базы большой корпорации, тогда и потолкуем. Прощай.


Jan   (2007-03-30 12:08:00) [22]


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

ты не думал что что-то со структурой базы не то?


> По поводу SDAC. Не глючные компоненты? Платные?

тебе не подойдут. там хелп читать надо.


Neo Trinitron   (2007-03-30 11:58:00) [23]

>сказал бы проще - лень или не надо придумывать что сделал...

Опять по себе судишь? У кого лень, а у кого и увольнение за разглашение без возможности устроиться в нормальную фирму в моём городе. И потом, что тебе так здалась эта хранимая процедура? Что она меняет? Какое отношение она имеет к вопросу? Связи не вижу.

>тебе б еще и на королевстве почитать про АДО - цены б тебе не было

Ты хочешь сказать что здесь все ламеры, а там нет? Не думаешь что кто-то может обидеться?

>ага еще она наверное данные возвращает, которые делаются с данными на стороне сервера...

ага, и ещё она делает всё на свете, что надо и что не надо, для особо одарённых. А для не особо одарённых (это я о себе) данные может возвращать та же самая хранимая процедура.


Neo Trinitron   (2007-03-30 11:52:00) [24]

>Во вьюху никак. А зачем? Если тебе нужно выбрать отфильтрованные записи, то вместо SELECT ... FROM my_table WHERE... пиши SELECT ... FROM my_view WHERE ... делов-то.

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

По поводу SDAC. Не глючные компоненты? Платные?


Jan   (2007-03-30 11:46:00) [25]


> (это уже из разряда секретов фирмы)

сказал бы проще - лень или не надо придумывать что сделал...


> Вот столкнулся с ADO, а там немного по-другому, как выяснилось.

тебе б еще и на королевстве почитать про АДО - цены б тебе не было


> минуя процедуру post. Тип блокировки датасета решил проблему.
>  Мелочь такая, а такие вещи делает.

ага еще она наверное данные возвращает, которые делаются с данными на стороне сервера...


Neo Trinitron   (2007-03-30 11:46:00) [26]

1. В гриде добавляется запись. Dataset.State=dsInsert;
2. Вносим данные в запись;
3. Переходим на другую запись или постим введённые данные;
4. Поскольку надо чтобы вставку данных сделала ХП, нужно в BeforePost это сделать;
5. Если не поменять тип блокировки у датасета на тот что я писал выше, то после BeforePost выполнится процедура Post которая попытается добавить в базу данных эту запись. Но этого делать то уже не нужно. Произойдёт ошибка. Если в конце BeforePost поставить Abort, то ошибки не произойдёт, но в гриде запись так и останется в режиме редактирования. Cancel вообще сотрёт из грида эту запись, хотя в базе она уже есть.


Bless   (2007-03-30 11:41:00) [27]


> ANB ©   (29.03.07 18:22) [23]
>
>
> > Neo Trinitron ©   (29.03.07 18:01) [22]
>
> Бросай ты это дурацкое ADO + MS SQL.
>
> В связке Oracle + Odac дейтасеты ведут себя именно так,
> как тебе надо. И даже рефреш одной записи есть, на случай,
>  если на сервере она поменялась сильно.
>
> :)


В связке MSSQL + SDAC  датасеты ведут себя ничуть не хуже.
И если пробить замену ADO на SDAC не проблема, то будет тебе счастье.
Наверное ;)

Можешь также взять ClientDataset. У него тоже есть OnApplyRecord. И от ADO отказываться не придется. Минус (лично для меня) - я не знаю, как через него обновить одну запись (чтоб из базы, и не весь датасет переоткрывать).

Можешь попробовать MemTableEh из набора EhLib.


>
> Neo Trinitron ©   (29.03.07 16:41) [11]
> И ещё интересно как можно в "стандартный способ реализации
> логики на сервере" вьюху передать параметры, фильтрации
> например. Очень интересно.


Во вьюху никак. А зачем? Если тебе нужно выбрать отфильтрованные записи, то вместо SELECT ... FROM my_table WHERE...пиши SELECT ... FROM my_view WHERE ...делов-то.


Sergey13   (2007-03-30 11:37:00) [28]

> [39] Neo Trinitron ©   (30.03.07 11:30)
> но мне ещё надо было заставить эти данные правильно отобразиться
> в гриде, минуя процедуру post.

Не понял я этой фразы.


Neo Trinitron   (2007-03-30 11:30:00) [29]

>я бы переписал модифицирующие запросы (в БДЕ например это в TUpdateSQL), которые вызываются при правке датасета, со "стандартных" на вызовы своих процедур.

Sergey13, я так и сделал, но мне ещё надо было заставить эти данные правильно отобразиться в гриде, минуя процедуру post. Тип блокировки датасета решил проблему. Мелочь такая, а такие вещи делает.


Neo Trinitron   (2007-03-30 11:21:00) [30]

>если ты такой умный, то чего вообще постил тут вопрос? а если ты хотел чтобы все восхитились твоей идеей работы с данными через ХП, то ты не туда пришел.
Если сделал и хочешь похвастаться, то запости сюда плиз код который ты придумал, коды ХП - пусть народ порадуется. Или это большой секрет?

Каждый судит по себе. Я не думаю что должен ответить на эти вопросы. Ведь я не утверждал что я шибко умный, я не хотел восхищения и оваций, также не хотел хвастаться и выкладывать комерческий код и методологию (это уже из разряда секретов фирмы). Если хочешь узнать чего же я хотел, прочти мой первый пост, там всё есть, ничего большего.

Sergey13. Да через ADO. В DAO (Oracle) есть такое собитие OnApplyRecord, там я раньше такие фичи обрабатывал. Вот столкнулся с ADO, а там немного по-другому, как выяснилось.


Jan   (2007-03-30 11:10:00) [31]


> Neo Trinitron ©   (30.03.07 10:55) [35]

если ты такой умный, то чего вообще постил тут вопрос? а если ты хотел чтобы все восхитились твоей идеей работы с данными через ХП, то ты не туда пришел.
Если сделал и хочешь похвастаться, то запости сюда плиз код который ты придумал, коды ХП - пусть народ порадуется. Или это большой секрет?


Sergey13   (2007-03-30 11:08:00) [32]

> [35] Neo Trinitron ©   (30.03.07 10:55)

Не знаю как в АДО (я так понял ты через него работаешь с МССКЛ) я бы переписал модифицирующие запросы (в БДЕ например это в TUpdateSQL), которые вызываются при правке датасета, со "стандартных" на вызовы своих процедур.


Neo Trinitron   (2007-03-30 10:55:00) [33]

Sergey13, возможно тебе именно так и показалось, но это не повод отправлять меня в клинику. Раз. Второе. Я достаточно хорошо знаю теорию баз данных и знаю как надо делать, а как нет. Jan мне начал рассказывать что я вообще всё на клиенте делаю. Это же бред. На каком клиенте могут быть хранимые процедуры??? Jan мне так и не дал ссылки где описан "стандарт логики сервера вьюха". Также мне не поведал ни одного способа передавать параметры во вьюху, хотя утверждает что их очень много. О безопасности триггеров тоже умолчал, хотя говорил что это более безопасно чем использование хранимых процедур. Snicknik мне поведал что я нифига вообще не шарю ибо не знаю о событиях. Ему даже в голову не пришло что о такой фигне я здесь и не спрашивал бы. Гордо ушёл, а ответа на вопрос сам не знает. Вот такой вот я неуч на фоне такого профессора. Вот и тебе, Sergey13 что-то показалось... На мой вопрос так никто здесь и не отвечал. Все пытались научить чему-то, а конкретно о вопросе забыли. Я ответ здесь выложил чтобы те кому надо не мучались в поисках, а не чтобы кого-то научить. Это не в моих правилах учить, я не учитель...и не доктор (санитар).


Sergey13   (2007-03-30 10:42:00) [34]

> [33] Neo Trinitron ©   (30.03.07 10:37)
По тону твоих постов можно подумать, что это у всех остальных что-то не получается, а ты задолбался всех учить.


Neo Trinitron   (2007-03-30 10:37:00) [35]

А ты что, ещё и врач по совместительству? 50% программист, 50% врач (санитар)? Определись уже, делай что-то одно, а то ни то ни сё, как видно :). Может не будем до личностей опускаться? Ты ещё не чувствуешь в себе силы не влазить в это дерьмо?


Jan   (2007-03-30 10:30:00) [36]

пора тебе в клинику.


Neo Trinitron   (2007-03-30 09:55:00) [37]

> зачем тогда тебе их сервер?

Мне?????? :)))


Jan   (2007-03-29 19:12:00) [38]


> О микрософт я вообще молчу и о его репликации тоже.

зачем тогда тебе их сервер?


Neo Trinitron   (2007-03-29 19:04:00) [39]

:)))) О микрософт я вообще молчу и о его репликации тоже. Ты работал с репликацией майкрософт? Проблем небыло? Может у тебя проэктики небольшие были? Заметно.


Jan   (2007-03-29 18:56:00) [40]


> Триггер вообще гадость редкостная (по этому вопросу спорить
> не буду).

действительно и чего это его мелкософт в репликации использует ума не приложу нет бы на уровне приложения все колбасить, анет выдумали понимаешь сушность и тягают ее.. да еще и все нормальные СУБД поддерживают - наверное рекламный ход...


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо