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

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


 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.67 MB
Время: 0.005 c
2-1181487281
имя
2007-06-10 18:54
2007.07.01
RichEdit меняет шрифт


3-1175663068
greg123
2007-04-04 09:04
2007.07.01
При переливе из gdb-ки в dbf-ку - сообщение "Out of memory"


2-1181153421
framez
2007-06-06 22:10
2007.07.01
процессы


2-1181152092
Ламер 2.Х
2007-06-06 21:48
2007.07.01
Админ


2-1181132170
Sapos
2007-06-06 16:16
2007.07.01
Путь





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский