powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Cursor + SQLExec + MS SQL
25 сообщений из 40, страница 1 из 2
Cursor + SQLExec + MS SQL
    #36451078
FreeBard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите нубу ;-)

Есть таблица в базе на MS SQL сервер. Получаю данные в локальный курсор с помощью синхронного SqlExec. Привязываю курсор к компоненту Grid. Пользователь производит редактирование данных. Жмет на кнопку "Сохранить".

По логике, я должен просканировать курсор в котором производились изменения, и отправить на сервер серию серию DML запросов.
Как узнать что запись в курсоре была изменена? или добавлена/удалена.

Вариант в лоб - хранить оригинальный курсор, к сетке привязывать копию и при сохранении изменений тупо сравнивать строки. Но думаю есть более производительные решения.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36451125
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 документа и делаю с ними то, что надо делать (обработка, добавление и пр.)
С уважением, Алексей
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36451137
FreeBard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-K, решение с xml понравилось, экономнее и удобнее чем я сделал - шлю кучу запросов.

Вопрос в том как определить "признак_что_было_обновление". Вы это как то искуственно реализуете, с помощью дополнительного поля, или у курсора/среды есть встроенные свойства методы для определения была изменена текущая запись или нет?
Спасибо.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36451188
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeBard...
Вопрос в том как определить "признак_что_было_обновление". Вы это как то искуственно реализуете, с помощью дополнительного поля, или у курсора/среды есть встроенные свойства методы для определения была изменена текущая запись или нет?
Спасибо.

Код: plaintext
GETFLDSTATE(cFieldName | nFieldNumber [, cTableAlias | nWorkArea])
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36451230
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeBardAleksey-K, решение с xml понравилось, экономнее и удобнее чем я сделал - шлю кучу запросов.

Вопрос в том как определить "признак_что_было_обновление". Вы это как то искуственно реализуете, с помощью дополнительного поля, или у курсора/среды есть встроенные свойства методы для определения была изменена текущая запись или нет?
Спасибо.
Я обычно обновляю все поля.
Если пользователь нажал OK, то он согласился с тем, что остальные данные (которые он не обновил) должны быть такие, какие он видит на экране.
Но, конечно, приложения могут быть разные и не везде надо обновлять все.
Тогда можно поступить как советует PaulWist или использовать дополнительное поле в курсоре, как признак обновления.
С уважением, Алексей.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36451231
FreeBard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistFreeBard...
Вопрос в том как определить "признак_что_было_обновление". Вы это как то искуственно реализуете, с помощью дополнительного поля, или у курсора/среды есть встроенные свойства методы для определения была изменена текущая запись или нет?
Спасибо.

Код: plaintext
GETFLDSTATE(cFieldName | nFieldNumber [, cTableAlias | nWorkArea])


Похоже то что надо, спасибо! Осталось с CURSORSETPROP разобраться
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36451306
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может, удобней пользоваться CursorAdapter?
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36451444
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FfffffffffffffffМожет, удобней пользоваться CursorAdapter?

CAD - имеет ряд ограничений (нельзя получить несколько курсоров, множественное срабатывание триггеров при модификации), хотя так же имеет плюсы.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36451494
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я к тому, что может автор вопроса не знает о такой возможности.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36451574
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПо логике, я должен просканировать курсор в котором производились изменения, и отправить на сервер серию серию DML запросов.

по логике, Вы должны использовать инструменты,
которые это сделают самостоятельно,
и не нужно ничего сканировать и отправлять

ищите слово курсорадаптер и примеры
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36451599
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторCAD - имеет ряд ограничений

это не ограничение,
а именно предназначение

один КАД = одному курсору и никак иначе

Ваши привычки и приемы не принимались во внимание при разработке
абстрактных базовых классов, и это правильно.

Для использования в качестве источника
при построении ф-мы ред-я документов
выбор КАД является правильным
и экономит трудозатраты.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36452154
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2PaulWist
авторДалековато, однако, а так бы взялся :)

интересно как?
тупо рисуя каждую форму и треся руками сервер?
и в одно лицо убился-бы сам и завалил сроки.

рьяное желание бить руки наталкивает на мысль:
Вы работали с чем-то абстрактным?
Видели построители интерфейсов посредством настройки словарей данных (метаданных) и т.д.?
не обязательно это должен быть продукт, разработанный посредством фокспро,
а тот-же сапр - селекционные экраны, ракурсы и т.д..
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36452858
FreeBard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимоавторПо логике, я должен просканировать курсор в котором производились изменения, и отправить на сервер серию серию DML запросов.

по логике, Вы должны использовать инструменты,
которые это сделают самостоятельно,
и не нужно ничего сканировать и отправлять

ищите слово курсорадаптер и примеры

это очевидно)) Однако не обладаю на данный момент такими глубокими знаниями среды. Знаю фокс про на уровне шестой версии и то много пробелов. Но курсор адаптер посмотрю обязательно
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36455048
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимо2PaulWist
авторДалековато, однако, а так бы взялся :)

интересно как?
тупо рисуя каждую форму и треся руками сервер?
и в одно лицо убился-бы сам и завалил сроки.

..

Это сильно, взять мой пост с одного форума, что бы я ответил на другом форуме


Саня, давай не будем устаривать "звёздных войн".

Автору было рассказано про ограничения, если в какой-то момент он захочет получить несколько курсоров посредством CAD-a и у него не получиться, то возможно он вспомнит этот тред и не будет наступать на грабли, на которые уже наступили до него :)
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36455070
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторесли в какой-то момент он захочет получить несколько курсоров посредством CAD-a и у него не получиться, то возможно он вспомнит этот тред и не будет наступать на грабли, на которые уже наступили до него

на эти грабли наступили только упертые бараны,
не понимающие абстракции.

ООП разработчик, понимающий принцип
устройства КАД понимает и представляет
себе норму 1КАД = 1курсору и это для него
не является каким-то ущемлением,
а если необходимо работать с несколькими курсорами,
то для этого создаются несколько КАД, а
не вопят из года в год.

авторСаня, давай не будем устаривать "звёздных войн".

это только начало ,- мать вашу.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36455086
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимоа если необходимо работать с несколькими курсорами,
то для этого создаются несколько КАД, а
не вопят из года в год.

авторСаня, давай не будем устаривать "звёздных войн".

это только начало ,- мать вашу.

Начало, так начало

Верни все выборки из ХП через CAD, покажи как ты создашь несколько CAD для ХП.

Код: plaintext
1.
2.
3.
4.
create procedure AAA
as 
select  1 
selec  2 
select  3 
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36455116
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+

автормножественное срабатывание триггеров при модификации

а как они сработают
если

sqlexec("update tt set kk = 1 where id=1")
sqlexec("update tt set kk = 4 where id=2") ?

почему при генерации строк обновления КАДом
не должны отработать при выполнении
этих команд на сервере триггеры?

в чем "плохость" этого к примеру при изменении какой-то
детализации документа?

может "плохость" и непонимания КАД растет из-за
упертости и своих любимых приемов разработки?
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36455121
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВерни все выборки из ХП через CAD,

че ржешь та? как сивый мерен?

утрись и убейся ап стол.

я так не буду делать.
и для КАД не буду возвращать несколько отборов.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36455127
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
был бараном - бараном и помрешь.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36455145
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВерни все выборки из ХП через CAD, покажи как ты создашь несколько CAD для ХП.


2 PaulWist

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

выше не читаешь

один, только один должен быть курсор!
и это не является неудобством или ограничением.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36455155
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимо+

автормножественное срабатывание триггеров при модификации

а как они сработают
если

sqlexec("update tt set kk = 1 where id=1")
sqlexec("update tt set kk = 4 where id=2") ?

почему при генерации строк обновления КАДом
не должны отработать при выполнении
этих команд на сервере триггеры?

в чем "плохость" этого к примеру при изменении какой-то
детализации документа?

может "плохость" и непонимания КАД растет из-за
упертости и своих любимых приемов разработки?

1. Совсем не обязательно с клиента обновлять каждую запись как ты показал.

2. Детали документа передаются на сервер в ХП, в ней "курсор" фокса "разворачивается" и одним пакетом накатывается на таблицу источник, таким образом происходит всего одно срабатывание триггера.

3. Давай не будем хамить друг другу если, что-то не ясно в технологии, спрашивай.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36455186
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор3. Давай не будем хамить друг другу если, что-то не ясно в технологии, спрашивай.


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

мне все яснов технологии КАД и очень давно,
что успешно реализована,
и на чем приобретен опыт данных реализаций.

поэтому Ваши крики души - на фоксклаб, пожалуйста,
и там "трите" из пустго-в порожнее.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36455205
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1. Совсем не обязательно с клиента обновлять каждую запись как ты показал.

2. Детали документа передаются на сервер в ХП, в ней "курсор" фокса "разворачивается" и одним пакетом накатывается на таблицу источник, таким образом происходит всего одно срабатывание триггера.

это трудозатратно!

еще раз:
КАД позволяет экономить трудозатраты,
помогаент разработчику быстро решить задачу,
сглаживает некоторые огрехи(ошибки), которые вылазят при ручном трясении сервера

если разработчик стремится к минимазации затрат,
пытается строить фрейм, то он должен выбрать КАД.

те разработчики, которые трясут руками сервер,
имеют большие трудозатраты.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36455526
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимоавтор3. Давай не будем хамить друг другу если, что-то не ясно в технологии, спрашивай.


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

мне все яснов технологии КАД и очень давно,
что успешно реализована,
и на чем приобретен опыт данных реализаций.

поэтому Ваши крики души - на фоксклаб, пожалуйста,
и там "трите" из пустго-в порожнее.
Странный подход!
А если кто-то другой имеет опыт работы с SQL Server через Не кад их всех надо посылать на фоксклаб? Что-то вас заносит. Тут все имеют право высказать свои точки зрения, а не только вы.
Нравится вам КАД - прекрасно, работайте на нем, но не затыкайте рот другим.
С уважением, Алексей.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36455538
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНравится вам КАД - прекрасно, работайте на нем, но не затыкайте рот другим.

буду затыкать, так как не нужно писать бред.

на бред - сосответствующий посыл.

будет еще бред - будет посыл далее.
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Cursor + SQLExec + MS SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]