Главная страница
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.

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


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


> 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 ... делов-то.


 
Neo Trinitron ©   (2007-03-30 11:46) [42]

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


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


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

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


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

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


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

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


 
Neo Trinitron ©   (2007-03-30 11:52) [44]

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

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

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


 
Neo Trinitron ©   (2007-03-30 11:58) [45]

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

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

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

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

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

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


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


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

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


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

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


 
Neo Trinitron ©   (2007-03-30 12:18) [47]

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


 
Bless ©   (2007-03-30 12:25) [48]


> Neo Trinitron ©   (30.03.07 11:52) [44]
> По поводу SDAC. Не глючные компоненты? Платные?
>


Платные. Плотно я с ними не работал, поэтому по поводу глючности судить с опыта не могу.
Но компоненты определенно серьезные, той же конторы, что и нахваливаемые в [23] ODAC для оракла.
Поищи мнения в Инете. Обший характер отзывов: компоненты хороши.


 
Bless ©   (2007-03-30 12:34) [49]


> Но компоненты определенно серьезные, той же конторы, что
> и нахваливаемые в [23] ODAC для оракла.


Добавлю еще(на правах имхи, сформированной от беглого знакомства):
Код у SDAC и ODAC тоже во многом общий.
Насколько я могу судить, грубо говоря, у них самописный мемори-датасет, одинаковый и для SDAC и для ODAC, поверх механизма доступа к базе данных, который у каждого свой.


 
Jan   (2007-03-30 12:39) [50]


> Вот когда дорастёшь до уровня базы большой корпорации, тогда
> и потолкуем

не завидую я твоей корморации...


 
Jan   (2007-03-30 17:22) [51]

2 Neo Trinitron ©

1. Вот интересно, ты говоришь что логика на сервере, а кто знает что после поста надо запускать такую-то и такую-то ХП? Только клиент. Так где логика реализована?
2. Вот ты говоришь что параметры нельзя передать во вьюху? А кто сказал что нельзя создать виртуальные колонки? Заполняй их и будут тебе параметры.
3. Триггеры говоришь в три этажа? а кто запрещает запустить в них твои трех-этажные ХП?

ЗЫ Закончи высшее свое заведение, поработай лет так 5 хотябы на серезных проектах, закончи хотя-бы один, да на боевых серверах а потом указывай, что делать...
ИМХО все. Бо наболело...


 
MsGuns ©   (2007-04-01 21:16) [52]

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

Кстати, еще вопрос: как автор сабжа при такой технологии сбирается управлять транзакциями, ведь они в датасете как бы "свои", а в хранимке "свои" ?


 
Jan1   (2007-04-02 11:33) [53]

Похоже автор поста самодовольный студент, который вилез впервые в инет...


 
Neo Trinitron ©   (2007-04-02 11:39) [54]

>нет никакой гарантии, что добавленная в грид запись реально добавилась в БД

А разве ошибку от ХП нельзя обработать на клиенте? Я обрабатываю легко.

>Непонятно также, как при таком "точечном" редактировании пользователь увидит все добавленные записи (в т.ч. другими) без перечитки всего датасета.

Никто не запрещает делать перечитку датасета, если это нужно :) Даже если стандартно постить, данные сами не перечитываются. Если нужно перечитать, то пожалуйста, никто же не запрещает! И что значит "точечное"? Насколько я знаю в гриде после редактирования или добавления записи постится одна запись, не более.

>Кстати, еще вопрос: как автор сабжа при такой технологии сбирается управлять транзакциями, ведь они в датасете как бы "свои", а в хранимке "свои" ?

Управление транзакциями на клиенте не использую, только на сервере. Предполагается что база данных будет работать с клиентом написанном не только на дельфи, в общем, клиент здесь дело десятое.

По поводу триггеров. Не юзаю. Ибо добавляю записи не в конкретную таблицу, а в документ. Документ состоит из нескольких таблиц. Пополняться эти таблицы могут в нескольких случаях и в разных вариантах (с нормализацией всё в порядке). На какую таблицу вешать триггер? Да и зачем триггер когда можно всю логику увязать в одной ХП. Хочу я добавить документ. Я могу зайти в Query Analyzer, вызвать соответствующую ХП, указать нужные параметры и если у меня есть права, выполнить эту ХП. Всё. Документ добавлен, проблем не вижу никаких. Иначе документ нельзя добавить - на редактирование таблиц прав нет. Всё через ХП, чем плохо? Вся система учёта корпорации насчитывающей уже более 200-т дочерних магазинов работает уже более 5-ти лет так и ничего, глюков не наблюдается. База уже более 200Гб и не загинается. Поэтому

>ИМХО, сама проблема, вероятно, от неправильной концепции проектирования интерфейса обмена с сервером

невероятное утверждение.


 
PETR   (2007-04-02 11:54) [55]

Наверное Neo Trinitron имел ввиду Б , что когда использует ХП , не обновляется GRID , т.е. запрос , т.к. не при использовании ХП нет метода Post ,  Refresh . Мне приходилось обновлять запрос .


 
Neo Trinitron ©   (2007-04-02 12:00) [56]

PETR, обновить запрос часто занимает много времени, если база данных немалая. Разве стОит в таком случае обновлять весь набор данных для того чтобы отобразить одну только что добавленную запись? Да ещё небойсь и искать её потом надо для того чтобы установить на неё курсор. Вышеперечисленные недостатки заставили меня отказаться от этой затеи и найти тот вариант который я в итоге нашёл.


 
sniknik ©   (2007-04-02 12:16) [57]

зачем обновлять "запрос", если надо обновить 1 запись? что времени много занять ну никак не может.
советовать, объяснять, не дай бог учить "всезнающегононепольующегося..." не смею, просто скромно интересуюсь зачем? что за причина побуждает на это?


 
Neo Trinitron ©   (2007-04-02 12:34) [58]

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

ЗЫ: Меня вообще не интересовал вопрос обновления данных, это другие товарищи про это толк вели. В общем, без прочтения трёх страниц темы трудно делать правильные выводы о дискуссии.


 
Jan1   (2007-04-02 14:18) [59]


> запись будет выглядеть идентично с уже имеющейся. Тогда
> зачем её надо обновлять?

т.е. логика работы с данными на клиенте у тебя такая же как и на сервере? и? к чему пришли? ты дублируешь логику в двух местах! или одно из двух - тебе ХП лишь бы було или прийдет время и ты откажешься от них...


 
NKT   (2007-04-02 14:22) [60]

Попробуй trigger  -  условие -> после обновления , нормально работает с ХП .


 
MsGuns ©   (2007-04-02 23:02) [61]

>Neo Trinitron ©   (02.04.07 11:39) [54]
>А разве ошибку от ХП нельзя обработать на клиенте? Я обрабатываю легко.

Можно поинтересоваться КАК, тем более что попытка откорректить несуществующую запись (которую, например, секунду назад удалили) ни к какой ошибке не приведет ?

>Насколько я знаю в гриде после редактирования или добавления записи постится одна запись, не более.

Плохо знаете. Есть кэширование изменений например.

>Управление транзакциями на клиенте не использую, только на сервере.

Неужели ? Если у Вас нет явного Begin/Commit/Rollback Trans, это не значит, что его нет вообще ;)

>Предполагается что база данных будет работать с клиентом написанном не только на дельфи, в общем, клиент здесь дело десятое.

Что такое "клиент-дело десятое" и каким боком к этой доктрине приходится собственно Дельфи ?

>Neo Trinitron ©   (02.04.07 12:34) [58]
>sniknik, а зачем мне нужно обновлять запись которая и так уже есть в гриде?

Заблуждение

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

Заблуждение еще одно

Спорить с Вами, вероятно, глупо,- Вы не просто не понимаете принцип взаимодействия сервера с "десятым" клиентом (равно как и наоборот), но еще весьма агрессивно пытаетесь тут поучать всех. Непонятно только с какой целью Вы тут появились с весьма мутным сабжем - типа себя показать ?

На сем откланиваюсь, примите и проч.


 
Neo Trinitron ©   (2007-04-03 10:59) [62]

>Можно поинтересоваться КАК, тем более что попытка откорректить несуществующую запись (которую, например, секунду назад удалили) ни к какой ошибке не приведет ?

...
INSERT INTO TAB1
VALUES(@v1,@v2,@v3,@v4)

SELECT
   @ERROR = @@ERROR,
   @RC = @@ROWCOUNT

IF @RC=0 OR @ERROR<>0
.....
RAISEERROR(...)
.....

>Плохо знаете. Есть кэширование изменений например.

Не пользую, не обессуттьте, я в основном на сервере пишу, клиент это скорее подработка. Могу всего (ненужного мне) не знать. Вы же тоже не всё знаете.

>Неужели ? Если у Вас нет явного Begin/Commit/Rollback Trans, это не значит, что его нет вообще ;)

Ну и что что есть? Это ничего не меняет в этой методологии. Одна ХП выполняется в рамках одной транзакции и мне всё равно что там на клиенте. В самой же ХП есть управление транзакциями.

>Заблуждение

Приведите контрпример пожалуйста.

>весьма агрессивно пытаетесь тут поучать всех. Непонятно только с какой целью Вы тут появились с весьма мутным сабжем - типа себя показать ?

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

>Вы не просто не понимаете принцип взаимодействия сервера с "десятым" клиентом (равно как и наоборот), но еще весьма агрессивно пытаетесь тут поучать всех. Непонятно только с какой целью Вы тут появились с весьма мутным сабжем - типа себя показать ?

Оскорбить меня не получится, милейший. Я не гордый и не возомнивший. Я написал много приложений и в вашу гипотезу не поверю никак, зря стараетесь. Поучать агрессивно меня пытались здесь, причём довольно агрессивным и оскорбительным тоном. И это скорее такие как эти товарищи пытаются себя показать, мне это уже лет 10 как нафик не нужно. На вопросы ламерские с бережным терпением отвечают, а как не знакомая тема встретилась, так сразу переиначить всё надо бо ответа не знаем. Ещё и натупить нужно, типа сам дурак. В общем, не надо никаких контрпримеров, ничего не надо от вас. Злые вы, ухожу я от вас. :) Тем более что ответ я уже получил ещё на той неделе. Сейчас я вижу какие-то попытки натупить меня и метнуть лишний раз грязью. Спасибо товарищам пытавшимся помочь. Остальным... Почаще смотреться в зеркало.


 
sniknik ©   (2007-04-03 11:44) [63]

>> Плохо знаете. Есть кэширование изменений например.
> Не пользую, не обессуттьте
ранее
> LockType = ltBatchOptimistic
это и есть кэширование изменений.

...  ну и т.д.

> так сразу переиначить всё надо бо ответа не знаем.
не переиначить, а попытаться вытянуть зачем извраты, понять смысл  (помогать бездумно, не понимая откуда что взялось сдесь както не принято... медвежья услуга получается).
я например до сих пор так и не понял, зачем менять вне грида то что по уверениям совпадает с табличным(/записываемым)... а если не совпадает то почему стандартный рефреш с сервера добавленной записи не подходит. не понял не потому что "туго доходит" а потому что были и те и другие взаимоисключающие уверения (вскользь, ничего не объясняя но были. а если бы было четкое описание ситуации, без лирики, собственного "всезнайства" и "наездов/обидок" на отвечающих,  думаю и разговор был бы другой).

> Злые вы, ухожу я от вас. :)
какому богу молиться, за сию радостную весть? ;о)

p.s. явный оффтопик пошол, толи закрыть толи в потрепаться перенести... ???


 
Johnmen ©   (2007-04-03 21:35) [64]


> Злые вы, ухожу я от вас. :)

На кого ж ты нас покинул, Дима-сан?
Вернись! Мы всё простим!


 
Кщд ©   (2007-04-04 09:25) [65]


> Neo Trinitron ©   (30.03.07 12:18) [47]
>
> jan, иди играйся своими игрушками, тут взрослые дяди разговаривают
> :P Вот когда дорастёшь до уровня базы большой корпорации,
>  тогда и потолкуем. Прощай.

офф - любопытства ради: можно узнать о какой корпорации идет речь?
или это тоже сверхвоенный секрет?


 
Jan1   (2007-04-04 10:09) [66]

он ушел. но обещал вернуться :)


 
Кщд ©   (2007-04-04 11:40) [67]


> Jan1   (04.04.07 10:09) [66]
>
> он ушел. но обещал вернуться :)

ну, пока высоколобые умники в поте лица отрабатывают свои миллионные гонорары на разработке "баз для больших корпораций", всем остальным, думаю, можно расслабиться и пойти поиграть со своими игрушками



Страницы: 1 2 вся ветка

Текущий архив: 2007.07.01;
Скачать: CL | DM;

Наверх




Память: 0.69 MB
Время: 0.024 c
15-1181010042
Slider007
2007-06-05 06:20
2007.07.01
С днем рождения ! 5 июня 2007 вторник


4-1169212752
hamster
2007-01-19 16:19
2007.07.01
Checkbox


5-1147886682
Любопытствующий
2006-05-17 21:24
2007.07.01
Наследник TImage с парочкой новых свойств


15-1180528252
homm
2007-05-30 16:30
2007.07.01
DOS атака


1-1177676693
Ford
2007-04-27 16:24
2007.07.01
Смена раскладки клавиатуре в системе