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) 

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


Кщд   (2007-04-04 11:40:00) [1]


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

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


Jan1   (2007-04-04 10:09:00) [2]

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


Кщд   (2007-04-04 09:25:00) [3]


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

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


Johnmen   (2007-04-03 21:35:00) [4]


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

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


sniknik   (2007-04-03 11:44:00) [5]

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

...  ну и т.д.

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

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

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


Neo Trinitron   (2007-04-03 10:59:00) [6]

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

...
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 как нафик не нужно. На вопросы ламерские с бережным терпением отвечают, а как не знакомая тема встретилась, так сразу переиначить всё надо бо ответа не знаем. Ещё и натупить нужно, типа сам дурак. В общем, не надо никаких контрпримеров, ничего не надо от вас. Злые вы, ухожу я от вас. :) Тем более что ответ я уже получил ещё на той неделе. Сейчас я вижу какие-то попытки натупить меня и метнуть лишний раз грязью. Спасибо товарищам пытавшимся помочь. Остальным... Почаще смотреться в зеркало.


MsGuns   (2007-04-02 23:02:00) [7]

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

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

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

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

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

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

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

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

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

Заблуждение

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

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

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

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


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

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


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


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

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


Neo Trinitron   (2007-04-02 12:34:00) [10]

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

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


sniknik   (2007-04-02 12:16:00) [11]

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


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

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


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

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


Neo Trinitron   (2007-04-02 11:39:00) [14]

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

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

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

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

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

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

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

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

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


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

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


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

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

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


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

2 Neo Trinitron ©

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

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


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


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

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


Bless   (2007-03-30 12:34:00) [19]


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


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


Bless   (2007-03-30 12:25:00) [20]


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


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


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

Наверх

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