powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL Server 2000 & VFP9
9 сообщений из 9, страница 1 из 1
SQL Server 2000 & VFP9
    #33441841
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица хранящияся на сервере, на половину заполненная, в остальных ячейках null. делаю выбор по условию через SQLEXEC в курсор,выбрал 10 строк, ну все как положено. и мне надо зделать так, когда я изменяю одну запись в выбранной строке из 10 выбранных строк, то сразу же в остальных строках пересчитывались значения этого столбца по заданному условию, например изменил на n=1, в остальных изменились на n=n+1 и т.д.
Как это зделать понятия не имею, никогда с этим не сталкивался. Мне скажали что нужно зделать связь через SQLSETPROP().
ВладимирМ, я прочитал топик http://www.sql.ru/forum/actualthread.aspx?tid=51268&hl=sqlsetprop, но так мало понял что нужно зделать. чтоб была передача обратно
...
Рейтинг: 0 / 0
SQL Server 2000 & VFP9
    #33442093
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Как сделать?" - не проблема. Проблема в том, что не понятно "что сделать?"

Итак, у тебя на клиенте есть таблица (курсор), содержащая 10 записей. При изменении значения одного поля в одной записи необходимо изменить значение поля во всех остальных записях.

Как вообще происходит модификация? По одной записи за раз (пользователь видит одновременно только одну запись) или списком?

Какое событие будет служить признаком того, что модификация в одной записи завершена? Переход на другое поле в той же записи - это завершение модификации? Или по нажатию специальной кнопки?

Где именно надо произвести модификацию? На клиенте? На сервере? И на клиенте, и на сервере?
...
Рейтинг: 0 / 0
SQL Server 2000 & VFP9
    #33442094
Krey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для обновления данных на сервере тебе нужно установить спомощью SQLSetProp следующие свойства:

Tables
KeyFieldList
UpdateType
WhereType
UpdatableFieldList
UpdateNameList
Установить св-во SendUpdates в .t.

Выполнить команду TableUpdate

Что бы изменить столбец таблицы при изменении одной записи создай класс CursorAdapter где помимо вышеописанных свойств используй евенты BeforeUpdate, AfterUpdate

Вообще как то некрасиво задача выглядит, может можно реализовать как-нить по другому?.
...
Рейтинг: 0 / 0
SQL Server 2000 & VFP9
    #33442166
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Недоходящий!

Опять? Ну прочитай же ты сам что пишешь! Ну не человеческий это язык! Ничего
не понятно.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
SQL Server 2000 & VFP9
    #33443637
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Итак, у тебя на клиенте есть таблица (курсор), содержащая 10 записей. >>При изменении значения одного поля в

одной записи необходимо изменить >>значение поля во всех остальных записях.

Да, в этот курсор загружаються строки со значением поля status = 5 из сервера и та строка, которая была выбрана

в гриде. и работа происходит со строкой выбранной в гриде.

>>Как вообще происходит модификация? По одной записи за раз (пользователь видит одновременно только одну

запись) или списком?

Модификация происходит следующим образом. юзер после выбора строчки видит загруженный данные (из этой строчки)

разбросанные в комбо и текстбоксы. когда юзер изменил статус (= 5) и выставил кол-во дней 10, то нужно чтоб в

этом курсоре в выбранной строчке поменялись значения статуса и в поле с датой прибавились эти 10 дней, + в

остальных (выбранных) строчках в полях дата отнимаються 10 дней.


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

поле в той же записи - это >>завершение модификации? Или по нажатию специальной кнопки?

по нажатию на кнопку в которой все это будет прописываться

>>Где именно надо произвести модификацию? На клиенте? На сервере? И на >>клиенте, и на сервере?
И на клиенте и на сервере.

2 Igor Korolyov
Сори. не получаеться точно описать проблему. задача такова что нужно в выбранной строчке после изменения в ней

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

юзер и также занести изменения на сервер.

Теперь нормально задачу вырозил? Или надо еще как-то по другому? :)
...
Рейтинг: 0 / 0
SQL Server 2000 & VFP9
    #33445348
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжаем задавать уточняющие вопросы

Итак, из твоих пояснений вырисовывается такая картина:

С сервера делается выборка из 10 записей.

Результат этой выборки отображается в Grid

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

Завершение модификации этой записи происходит по нажатию кнопки.

В процессе сохранения этой одной записи выполняется модификация всех остальных записей из тех, что отобраны на клиенте

Вот в последнем действии и заключается "закавыка".

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

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

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

А на клиенте, после сохранения, надо будет выполнить запрос заново.

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

PS: по приведенной ссылке речь идет об асинхронном запросе, что к данной проблеме вообще никаким боком.
...
Рейтинг: 0 / 0
SQL Server 2000 & VFP9
    #33448963
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ВладимирМ
Все оказываеться сложнее. Хорошо, а как делать эти триггеры?
...
Рейтинг: 0 / 0
SQL Server 2000 & VFP9
    #33449254
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НедоходящийХорошо, а как делать эти триггеры?
Это уже надо читать документацию того сервера, с которым происходит работа. Ищи по ключевому слову "Trigger"
...
Рейтинг: 0 / 0
SQL Server 2000 & VFP9
    #33449271
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все понял. Спасибо!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL Server 2000 & VFP9
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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