|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
Помогите нубу ;-) Есть таблица в базе на MS SQL сервер. Получаю данные в локальный курсор с помощью синхронного SqlExec. Привязываю курсор к компоненту Grid. Пользователь производит редактирование данных. Жмет на кнопку "Сохранить". По логике, я должен просканировать курсор в котором производились изменения, и отправить на сервер серию серию DML запросов. Как узнать что запись в курсоре была изменена? или добавлена/удалена. Вариант в лоб - хранить оригинальный курсор, к сетке привязывать копию и при сохранении изменений тупо сравнивать строки. Но думаю есть более производительные решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 09:05 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
FreeBardПомогите нубу ;-) Есть таблица в базе на MS SQL сервер. Получаю данные в локальный курсор с помощью синхронного SqlExec. Привязываю курсор к компоненту Grid. Пользователь производит редактирование данных. Жмет на кнопку "Сохранить". По логике, я должен просканировать курсор в котором производились изменения, и отправить на сервер серию серию DML запросов. Как узнать что запись в курсоре была изменена? или добавлена/удалена. Вариант в лоб - хранить оригинальный курсор, к сетке привязывать копию и при сохранении изменений тупо сравнивать строки. Но думаю есть более производительные решения. Я обычно все изменения передаю в одной команде (как параметр хранимой процедуры обновления) через XML: 1. SELECT .. FROM MyCursor INTO xmlcursor WHERE .... признак_что_было_обновление 2. CURSORTOXML("xmlcursor", "m.xmlData", 3, 16) 3. Далее вызываю хранимую процедуру, которая обновляет данные на сервере с передачей ей в качестве параметра переменную m.xmlData 4. В хранимой процедуре на сервере с помощью функции OPENXML извлекаю данные из XML документа и делаю с ними то, что надо делать (обработка, добавление и пр.) С уважением, Алексей ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 09:30 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
Aleksey-K, решение с xml понравилось, экономнее и удобнее чем я сделал - шлю кучу запросов. Вопрос в том как определить "признак_что_было_обновление". Вы это как то искуственно реализуете, с помощью дополнительного поля, или у курсора/среды есть встроенные свойства методы для определения была изменена текущая запись или нет? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 09:40 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
FreeBard... Вопрос в том как определить "признак_что_было_обновление". Вы это как то искуственно реализуете, с помощью дополнительного поля, или у курсора/среды есть встроенные свойства методы для определения была изменена текущая запись или нет? Спасибо. Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 10:10 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
FreeBardAleksey-K, решение с xml понравилось, экономнее и удобнее чем я сделал - шлю кучу запросов. Вопрос в том как определить "признак_что_было_обновление". Вы это как то искуственно реализуете, с помощью дополнительного поля, или у курсора/среды есть встроенные свойства методы для определения была изменена текущая запись или нет? Спасибо. Я обычно обновляю все поля. Если пользователь нажал OK, то он согласился с тем, что остальные данные (которые он не обновил) должны быть такие, какие он видит на экране. Но, конечно, приложения могут быть разные и не везде надо обновлять все. Тогда можно поступить как советует PaulWist или использовать дополнительное поле в курсоре, как признак обновления. С уважением, Алексей. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 10:29 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
PaulWistFreeBard... Вопрос в том как определить "признак_что_было_обновление". Вы это как то искуственно реализуете, с помощью дополнительного поля, или у курсора/среды есть встроенные свойства методы для определения была изменена текущая запись или нет? Спасибо. Код: plaintext
Похоже то что надо, спасибо! Осталось с CURSORSETPROP разобраться ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 10:29 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
Может, удобней пользоваться CursorAdapter? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 10:51 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
FfffffffffffffffМожет, удобней пользоваться CursorAdapter? CAD - имеет ряд ограничений (нельзя получить несколько курсоров, множественное срабатывание триггеров при модификации), хотя так же имеет плюсы. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 11:31 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
Я к тому, что может автор вопроса не знает о такой возможности. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 11:45 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
авторПо логике, я должен просканировать курсор в котором производились изменения, и отправить на сервер серию серию DML запросов. по логике, Вы должны использовать инструменты, которые это сделают самостоятельно, и не нужно ничего сканировать и отправлять ищите слово курсорадаптер и примеры ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 12:06 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
авторCAD - имеет ряд ограничений это не ограничение, а именно предназначение один КАД = одному курсору и никак иначе Ваши привычки и приемы не принимались во внимание при разработке абстрактных базовых классов, и это правильно. Для использования в качестве источника при построении ф-мы ред-я документов выбор КАД является правильным и экономит трудозатраты. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 12:13 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
2PaulWist авторДалековато, однако, а так бы взялся :) интересно как? тупо рисуя каждую форму и треся руками сервер? и в одно лицо убился-бы сам и завалил сроки. рьяное желание бить руки наталкивает на мысль: Вы работали с чем-то абстрактным? Видели построители интерфейсов посредством настройки словарей данных (метаданных) и т.д.? не обязательно это должен быть продукт, разработанный посредством фокспро, а тот-же сапр - селекционные экраны, ракурсы и т.д.. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 14:46 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
прошелмимоавторПо логике, я должен просканировать курсор в котором производились изменения, и отправить на сервер серию серию DML запросов. по логике, Вы должны использовать инструменты, которые это сделают самостоятельно, и не нужно ничего сканировать и отправлять ищите слово курсорадаптер и примеры это очевидно)) Однако не обладаю на данный момент такими глубокими знаниями среды. Знаю фокс про на уровне шестой версии и то много пробелов. Но курсор адаптер посмотрю обязательно ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 19:47 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
прошелмимо2PaulWist авторДалековато, однако, а так бы взялся :) интересно как? тупо рисуя каждую форму и треся руками сервер? и в одно лицо убился-бы сам и завалил сроки. .. Это сильно, взять мой пост с одного форума, что бы я ответил на другом форуме Саня, давай не будем устаривать "звёздных войн". Автору было рассказано про ограничения, если в какой-то момент он захочет получить несколько курсоров посредством CAD-a и у него не получиться, то возможно он вспомнит этот тред и не будет наступать на грабли, на которые уже наступили до него :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2010, 12:12 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
авторесли в какой-то момент он захочет получить несколько курсоров посредством CAD-a и у него не получиться, то возможно он вспомнит этот тред и не будет наступать на грабли, на которые уже наступили до него на эти грабли наступили только упертые бараны, не понимающие абстракции. ООП разработчик, понимающий принцип устройства КАД понимает и представляет себе норму 1КАД = 1курсору и это для него не является каким-то ущемлением, а если необходимо работать с несколькими курсорами, то для этого создаются несколько КАД, а не вопят из года в год. авторСаня, давай не будем устаривать "звёздных войн". это только начало ,- мать вашу. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2010, 12:19 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
прошелмимоа если необходимо работать с несколькими курсорами, то для этого создаются несколько КАД, а не вопят из года в год. авторСаня, давай не будем устаривать "звёздных войн". это только начало ,- мать вашу. Начало, так начало Верни все выборки из ХП через CAD, покажи как ты создашь несколько CAD для ХП. Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2010, 12:24 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
+ автормножественное срабатывание триггеров при модификации а как они сработают если sqlexec("update tt set kk = 1 where id=1") sqlexec("update tt set kk = 4 where id=2") ? почему при генерации строк обновления КАДом не должны отработать при выполнении этих команд на сервере триггеры? в чем "плохость" этого к примеру при изменении какой-то детализации документа? может "плохость" и непонимания КАД растет из-за упертости и своих любимых приемов разработки? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2010, 12:33 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
авторВерни все выборки из ХП через CAD, че ржешь та? как сивый мерен? утрись и убейся ап стол. я так не буду делать. и для КАД не буду возвращать несколько отборов. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2010, 12:34 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
был бараном - бараном и помрешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2010, 12:35 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
авторВерни все выборки из ХП через CAD, покажи как ты создашь несколько CAD для ХП. 2 PaulWist ты идиот? или как? что ты мне рисуешь, какие-то дебильные примеры про возврат нескольких курсоров. выше не читаешь один, только один должен быть курсор! и это не является неудобством или ограничением. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2010, 12:38 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
прошелмимо+ автормножественное срабатывание триггеров при модификации а как они сработают если sqlexec("update tt set kk = 1 where id=1") sqlexec("update tt set kk = 4 where id=2") ? почему при генерации строк обновления КАДом не должны отработать при выполнении этих команд на сервере триггеры? в чем "плохость" этого к примеру при изменении какой-то детализации документа? может "плохость" и непонимания КАД растет из-за упертости и своих любимых приемов разработки? 1. Совсем не обязательно с клиента обновлять каждую запись как ты показал. 2. Детали документа передаются на сервер в ХП, в ней "курсор" фокса "разворачивается" и одним пакетом накатывается на таблицу источник, таким образом происходит всего одно срабатывание триггера. 3. Давай не будем хамить друг другу если, что-то не ясно в технологии, спрашивай. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2010, 12:42 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
автор3. Давай не будем хамить друг другу если, что-то не ясно в технологии, спрашивай. давай не будем на своих устоях, приемах опошлять какие-то иные способы реализации? мне все яснов технологии КАД и очень давно, что успешно реализована, и на чем приобретен опыт данных реализаций. поэтому Ваши крики души - на фоксклаб, пожалуйста, и там "трите" из пустго-в порожнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2010, 12:51 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
автор1. Совсем не обязательно с клиента обновлять каждую запись как ты показал. 2. Детали документа передаются на сервер в ХП, в ней "курсор" фокса "разворачивается" и одним пакетом накатывается на таблицу источник, таким образом происходит всего одно срабатывание триггера. это трудозатратно! еще раз: КАД позволяет экономить трудозатраты, помогаент разработчику быстро решить задачу, сглаживает некоторые огрехи(ошибки), которые вылазят при ручном трясении сервера если разработчик стремится к минимазации затрат, пытается строить фрейм, то он должен выбрать КАД. те разработчики, которые трясут руками сервер, имеют большие трудозатраты. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2010, 12:56 |
|
Cursor + SQLExec + MS SQL
|
|||
---|---|---|---|
#18+
прошелмимоавтор3. Давай не будем хамить друг другу если, что-то не ясно в технологии, спрашивай. давай не будем на своих устоях, приемах опошлять какие-то иные способы реализации? мне все яснов технологии КАД и очень давно, что успешно реализована, и на чем приобретен опыт данных реализаций. поэтому Ваши крики души - на фоксклаб, пожалуйста, и там "трите" из пустго-в порожнее. Странный подход! А если кто-то другой имеет опыт работы с SQL Server через Не кад их всех надо посылать на фоксклаб? Что-то вас заносит. Тут все имеют право высказать свои точки зрения, а не только вы. Нравится вам КАД - прекрасно, работайте на нем, но не затыкайте рот другим. С уважением, Алексей. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2010, 14:44 |
|
|
start [/forum/topic.php?fid=41&fpage=106&tid=1585609]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
134ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 212ms |
0 / 0 |