powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Cursor + SQLExec + MS SQL
40 сообщений из 40, показаны все 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
Cursor + SQLExec + MS SQL
    #36455548
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторимеют право высказать свои точки зрения, а не только вы.

жду высказываний.

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

PaulWist + Aleksey-K
пытались повести топикпастера по трудозатратному пути.

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

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

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

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

Бред проповедуете Вы,
заставляя программистов делать ненужные преобразования
и таскания курсоров на сервер.

Беред проповедуете Вы, не имея опята реализации
с использованием КАД.

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

автор
Почему при переходе на клиент-сервер с файл-сервер у меня так сильно упала скорость работы" и т.п. Остовитесь пока не поздно!
Вы пишете бред. Так как и руками разработчик
может потянуть большой объем на клиента, причем здесь КАД?
Остовитесь пока не поздно! Пусть разработчики увидят и попробуют альтернативный
способ работы.

авторДайте людям шанс освоить другую технологию, которая рано или поздно заставит из освоить язык SQL Server (t-sql) и передать ему обработку данных
Вы вновь пишете бред! КАД также прекрасно дает возможность освоить транзакт-скл,
и облегчает работу!

авторудобное для конечного пользователя представление данных.
КАД удобно предоставляет разработчику данные и облегчает разработку!
Далее уже разработчик удобно или неудобно представляет эти данные пользователю.

В сад - все в сад на фоксклаб и там несите БРЕД!
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36455733
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: прошелмимо
> моя точка зрения, и еще одного присутствующего была в том,
> что для решения озвученной задачи топикпастеру
> лучше использовать КАД.
>
> PaulWist + Aleksey-K
> пытались повести топикпастера по трудозатратному пути.

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

> еще есть желающие высказаться?

Я очень ценю, твой професионализм в ответах, но сейчас ты ведёш себя как моя(наша?) кандидатка в президенты.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36455748
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДа топик стартеру сейчас пофиг на трудозатраты, он спрашивает как сделать. Когда он дорастет до оценки
трудозатрат, тогда и будет интересоватся этим вопросом.

вот именно,
топикпастеру сейчас проще взять пример с КАДом
и понять как это работает

а не устраивать скачки по измененному курсору

авторЯ очень ценю, твой професионализм в ответах, но сейчас ты ведёш себя как моя(наша?) кандидатка в президенты.

эти моральные уроды за..., поэтому посылаются в сад.
и мне абсолютно не интересны оценки со стороны.

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

==========================================

Теперь по поводу "звездных войн"

Проблема в том, что несмотря на громкую пропаганду ООП, Александр не в состоянии абстрагироваться от того, что реализовал он лично. От своего собственного FrameWork и от своих собственных задач. Он все время "вязнет" в конкретной реализации, подразумевая под этим только и исключительно то, с чем сталкивался он лично. Естесственно, за это и "получает". Ведь задачи бывают очень разные.

Поскольку он чувствует, что "вразумительного" ответа у него нет, то и переходит на ругань и оскорбления, как в данном случае. Он просто не на том уровне пытается отвечать. Не тот уровень абстракции, как ни странно...

Как говорил Козьма Прутков: "Зри в корень!" Чем принципиально отличается работа через SQLExec() от работы с CursorAdapter?

Только и исключительно тем, что CursorAdapter позволяет автоматизировать некоторые стандартные операции с базой данных. Причем база данных также должна быть до некоторой степени "стандартной". Удобной с точки зрения ее обработки через CursorAdapter.

Как только возникает необходимость отойти от "стандарта", на который рассчитан CursorAdapter, так тут же возникают проблемы, реализовывать которые приходится либо путем сложного "обхода" в CursorAdapter, либо прямыми запросами SQLExec().

Ну и чего ругаться спрашивается?... Если задача соответствует "стандарту" - используй CursorAdapter. Не соответствует - используй прямые команды SQLExec().

Спор на уровне реализации приложения - бессмысленный (а именно на этом уровне пытается спорить Александр). Поскольку на этом уровне, как ни странно, даже общее количество кода примерно одинаковое.

Ведь рано или поздно, но любой программист создает собственный FrameWork, после чего он уже может правдиво заявлять, что способен легко и быстро решить "любую" задачу. Только вот, Александр забывает, что да, действительно, любую, но только ту, на которую рассчитан его FrameWork !

А дальше, все как обычно... Если задача не решается в рамках написанного FrameWork, то возможны два варианта:

1. Если программист еще молод (в первую очередь - душой), то он способен переписать FrameWork хоть с нуля. Разумеется, если задача этого потребует...

2. Если программист постарел (в первую очередь - душой), то сразу же последует: "задача не правильная", "постановщики идиоты" и вообще, что с вами разговаривать...

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

см.ридми

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

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
* Собственно выборка с сервера
=SQLExec(m.lnCH, "SELECT Field1, Field2 FROM MyTable", "MyCursor")

* Нужен  5  режим буферизации для редактирования в Grid
=CursorSetProp("Buffering",  5 , "MyCursor")

* Привязка Grid к результату запроса SQLExec
thisForm.oGrid1.RecordSource="MyCursor"

********************************************
* Сохранение после модификации
* Сканируем только измененные записи
select MyCursor
SET DELETED OFF
NextRecord = GETNEXTMODIFIED( 0 , "MyCursor")
do while NextRecord <>  0 
    do case
    case deleted() and IsNull(oldVal("deleted()"))
        * Создали и тут же удалили. Ничего делать не надо
    case IsNull(oldVal("deleted()"))
        * Создали новую запись. Необходимо создать новую запись на сервер
        =SQLExec(m.lnCH,"INSERT INTO MyTable (Field1, Field2) VALUES (?MyCursor.Field1, ?MyCursor.Field2)")
    case deleted()
        * Запись была удалена. Удаляем на сервере
        =SQLExec(m.lnCH, "DELETE FROM MyTable WHERE Field1 = ?OldVal([MyCursor.Field1]) and Field2 = ?OldVal([MyCursor.Field2])")
    otherwise
        * Запись была модифицирована. Если необходимо, можно уточнить по GetFldState() что именно было изменено
        =SQLExec(m.lnCH, "UPDATE MyTable SET Field1 = ?MyCursor.Field1, Field2 = ?MyCursor.Field2" + ;
            " WHERE Field1 = ?OldVal([MyCursor.Field1]) and Field1 = ?OldVal([MyCursor.Field2])")
    endcase

    * Берем следующую измененную запись
    NextRecord = GETNEXTMODIFIED(NextRecord, "MyCursor")
enddo
SET DELETED ON

Как можете видеть, общее количество кода примерно равно тому, что написано в Вашем примере. Насколько я понимаю, это именно то, что хотел автор данной темы.

Кстати, кроме класса CursorAdapter есть еще объект Remote View, который проще освоить. А если использовать файл формы SCX и объект DataEnvironment, то отпадает необходимость ручной привязки полей выборки к объектам формы. Эту операцию можно сделать мышкой. Без программирования.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36459381
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторобщее количество кода примерно равно тому,

этот человек - вредитель.
по коду и реализации грамотный разработчик поймет,
что данный теоретик учит тому, как делать нельзя.

данный прием можно критиковать бесконечно:
1. представлен явно "глючный" код, которые не будет работать
(будет работать при определенных тепличных условиях)
2. показывающий пример ни коим образом не задумывался о масштабировании,
о том, что произойдет если изменится структура таблицы и т.д. ...
3. показывающий пример ни коим образом не задумывался о трудозатратах.

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

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

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


2 кулинар:
баран.

просьба начинающим этот показанный бред забыть
и такого не повторять.

ВладимирМ - не программист, а теоретик.
Слушайте, вы "программист"! Вы бы угомонились!
Я как-то скачал пару ваши "шедевров", которое вы тут тоннами выкладываете! Они даже для обучения не годятся - столько всего в них, вызывающего мягко говоря, недоумения. И вы "это" предлагаете изучать начинающим программистам!
Ваша навязчивая идея использования КАД для всего, что можно и не можно говорит, что ничего сложнее программы ввода платежек вы не разрабатывали. И уж точно в команде не работали! Долго тут слушал ваш бредовые размышления по поводу использования КАД, как пример использования ООП в клиентских приложениях систем клиент-сервер. Ну, надо же, удумали! В качестве уровня абстракции приложения использовать КАД! Если так строить систему, то ее никогда не построить, а главное не обслужить должным образом!
Да не дай бог с таким архитектором системы иметь дело! Наплодит тысячи КАДов и будет тыкать каждому, как это классно, что командной UPDATE (SELECT, INSERT, DELETE) VFP у него будут манятся данные на сервере.
Бес всякого уважения к [прошелмимо], Алексей
P.S. Модератор, может пора забанить его за прямые оскорбления.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36459612
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ как-то скачал пару ваши "шедевров", которое вы тут тоннами выкладываете!

авторНаплодит тысячи КАДов

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

авторСлушайте, вы "программист"!
сам - дурак.

авторИ уж точно в команде не работали
работал и работаю,
и мои приемы помогают сокращать трудозатраты,
себестоимость, за что и получаю зар.плату.

Вы в своей команде варитесь в своем соку - варитесь.
Разумного зерна Вы видеть не желаете, на каждый пример
все одно любые возоажения. Работайте с XML и парсите
на здоровье на стороне сервера.
Только про КАД умозаключения не нужно делать - у Вас нет опыта
реализаций.


авторVFP у него будут манятся данные на сервере
Вы видели реализацию?
Ну я приводил пример документа с детализацией.
Работает. Могу там воткнуть вызов ХП с проверками какими-то.
Будем дедлоки искать или измерять скорость работы на
определенных объемах?

Затем напишем Ваш "бред" с парсингом XML на стороне сервера и расскажем
какая квалиф-я нужна на написание и сопровождение, и что случится в случае доработок.


слав те, господи, что не попал к Вам на спиртзавод.

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

ну не я первый начал.

язык за зубами про КАД нужно держать и не трепать.
Пусть Паша с фоксклаба покритикует скачки с курсоом
на тему срабатывания триггеров.

это не фоксклаб. я просил - не провоцировать.
на каждую провокацию - соответствующий посыл.

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

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

Вариант в лоб - хранить оригинальный курсор, к сетке привязывать копию и при сохранении изменений тупо сравнивать строки. Но думаю есть более производительные решения.

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

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

далее установлено:
есть группа непримеримых разработчиков, архитекторов, владельцев бизнеса,
специалистов, теоретиков ....

будем воевать, господа.
...
Рейтинг: 0 / 0
Cursor + SQLExec + MS SQL
    #36459976
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: В связи с тем, что топик потерял актуальность я его закрываю. Просьба к «прошлемило»: воздержаться от перехода на личности и оскорбления других участников форума.
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Cursor + SQLExec + MS SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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