|
|
|
SQL Server 2000 & VFP9
|
|||
|---|---|---|---|
|
#18+
Есть таблица хранящияся на сервере, на половину заполненная, в остальных ячейках null. делаю выбор по условию через SQLEXEC в курсор,выбрал 10 строк, ну все как положено. и мне надо зделать так, когда я изменяю одну запись в выбранной строке из 10 выбранных строк, то сразу же в остальных строках пересчитывались значения этого столбца по заданному условию, например изменил на n=1, в остальных изменились на n=n+1 и т.д. Как это зделать понятия не имею, никогда с этим не сталкивался. Мне скажали что нужно зделать связь через SQLSETPROP(). ВладимирМ, я прочитал топик http://www.sql.ru/forum/actualthread.aspx?tid=51268&hl=sqlsetprop, но так мало понял что нужно зделать. чтоб была передача обратно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2005, 19:23 |
|
||
|
SQL Server 2000 & VFP9
|
|||
|---|---|---|---|
|
#18+
"Как сделать?" - не проблема. Проблема в том, что не понятно "что сделать?" Итак, у тебя на клиенте есть таблица (курсор), содержащая 10 записей. При изменении значения одного поля в одной записи необходимо изменить значение поля во всех остальных записях. Как вообще происходит модификация? По одной записи за раз (пользователь видит одновременно только одну запись) или списком? Какое событие будет служить признаком того, что модификация в одной записи завершена? Переход на другое поле в той же записи - это завершение модификации? Или по нажатию специальной кнопки? Где именно надо произвести модификацию? На клиенте? На сервере? И на клиенте, и на сервере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2005, 23:29 |
|
||
|
SQL Server 2000 & VFP9
|
|||
|---|---|---|---|
|
#18+
Для обновления данных на сервере тебе нужно установить спомощью SQLSetProp следующие свойства: Tables KeyFieldList UpdateType WhereType UpdatableFieldList UpdateNameList Установить св-во SendUpdates в .t. Выполнить команду TableUpdate Что бы изменить столбец таблицы при изменении одной записи создай класс CursorAdapter где помимо вышеописанных свойств используй евенты BeforeUpdate, AfterUpdate Вообще как то некрасиво задача выглядит, может можно реализовать как-нить по другому?. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2005, 23:36 |
|
||
|
SQL Server 2000 & VFP9
|
|||
|---|---|---|---|
|
#18+
Hi Недоходящий! Опять? Ну прочитай же ты сам что пишешь! Ну не человеческий это язык! Ничего не понятно. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2005, 04:09 |
|
||
|
SQL Server 2000 & VFP9
|
|||
|---|---|---|---|
|
#18+
>>Итак, у тебя на клиенте есть таблица (курсор), содержащая 10 записей. >>При изменении значения одного поля в одной записи необходимо изменить >>значение поля во всех остальных записях. Да, в этот курсор загружаються строки со значением поля status = 5 из сервера и та строка, которая была выбрана в гриде. и работа происходит со строкой выбранной в гриде. >>Как вообще происходит модификация? По одной записи за раз (пользователь видит одновременно только одну запись) или списком? Модификация происходит следующим образом. юзер после выбора строчки видит загруженный данные (из этой строчки) разбросанные в комбо и текстбоксы. когда юзер изменил статус (= 5) и выставил кол-во дней 10, то нужно чтоб в этом курсоре в выбранной строчке поменялись значения статуса и в поле с датой прибавились эти 10 дней, + в остальных (выбранных) строчках в полях дата отнимаються 10 дней. >>Какое событие будет служить признаком того, что модификация в одной >>записи завершена? Переход на другое поле в той же записи - это >>завершение модификации? Или по нажатию специальной кнопки? по нажатию на кнопку в которой все это будет прописываться >>Где именно надо произвести модификацию? На клиенте? На сервере? И на >>клиенте, и на сервере? И на клиенте и на сервере. 2 Igor Korolyov Сори. не получаеться точно описать проблему. задача такова что нужно в выбранной строчке после изменения в ней некоторых значений занести изменения на сервер, изменить дату в остальных строках на кол-во дней которое укажет юзер и также занести изменения на сервер. Теперь нормально задачу вырозил? Или надо еще как-то по другому? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2005, 11:27 |
|
||
|
SQL Server 2000 & VFP9
|
|||
|---|---|---|---|
|
#18+
Продолжаем задавать уточняющие вопросы Итак, из твоих пояснений вырисовывается такая картина: С сервера делается выборка из 10 записей. Результат этой выборки отображается в Grid Пользователь выбирает нужную запись и раскрывает еще одну форму, в которой происходит модификация только и исключительно этой одной записи. Завершение модификации этой записи происходит по нажатию кнопки. В процессе сохранения этой одной записи выполняется модификация всех остальных записей из тех, что отобраны на клиенте Вот в последнем действии и заключается "закавыка". Дело в том, что процесс внесения изменений в одну запись, в общем случае, может занять достаточно много времени. Это значит, что есть вероятность, что пока данный пользователь правил свою запись, другой пользователь исправил другую запись, но из того же списка. Или просто была добавлена новая запись, удовлетворяющая условиям выборки. Поэтому опираться на тот список, который уже находится на клиенте не имеет смысла. Он не отражает реального положения вещей. Модификация этих записей только испортит данные. Следовательно, единственный выход - это написать триггер на сервере , который в момент внесения изменений в одну запись сделает автоматический пересчет и модификацию данных в других записях. А на клиенте, после сохранения, надо будет выполнить запрос заново. Вообще, подобные "автоматические" модификации данных желательно выносить в триггера и хранимые процедуры самой базы данных, поскольку это явно вопрос поддержания целстности базы данных. PS: по приведенной ссылке речь идет об асинхронном запросе, что к данной проблеме вообще никаким боком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2005, 23:39 |
|
||
|
SQL Server 2000 & VFP9
|
|||
|---|---|---|---|
|
#18+
2 ВладимирМ Все оказываеться сложнее. Хорошо, а как делать эти триггеры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 12:39 |
|
||
|
SQL Server 2000 & VFP9
|
|||
|---|---|---|---|
|
#18+
НедоходящийХорошо, а как делать эти триггеры? Это уже надо читать документацию того сервера, с которым происходит работа. Ищи по ключевому слову "Trigger" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 13:50 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33442166&tid=1592738]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
182ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 524ms |

| 0 / 0 |
