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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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