Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вновь обновление данных MSSQL через курсор
|
|||
|---|---|---|---|
|
#18+
Возвращаясь к теме от 23 марта: Попытался обновить данные MS SQL через курсор SQLSETPROP(_sqlconn, "Asynchronous", .f. ) SQLSETPROP(_sqlconn, "Transactions", 1 ) _otm_query = " запрос " SQLEXEC(_sqlconn, _otm_query, "otm_cur") До этого места все работает изумительно (главное быстро, чего и требовалось). CURSORSETPROP("SendUpdates", .T.) CURSORSETPROP("KeyFieldList","DATAAREAID, RECID, VOUCHER") CURSORSETPROP("Tables", "otm_cur") CURSORSETPROP("UpdateType",1) CURSORSETPROP("WhereType",3) CURSORSETPROP("UpdateNameList","AMOUNTMST Otm_transaction.AMOUNTMST, QTY Otm_transaction.QTY") CURSORSETPROP("UpdatableFieldList", "AMOUNTMST, QTY") После изменения данных в курсоре получаем сообщение: No update tables are specifie. Use the Tables property of the cursor. Подскажите пожалуйста где наврал! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 08:26 |
|
||
|
Вновь обновление данных MSSQL через курсор
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 09:17 |
|
||
|
Вновь обновление данных MSSQL через курсор
|
|||
|---|---|---|---|
|
#18+
И вы думаете мне сильно полегчало? Это то, что я нашел по ссылке Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Это то, что я наделал по образу и подобию Код: plaintext 1. 2. 3. 4. 5. 6. Это результат: No key columns are specified for update table "Otm_transaction". Use the KeyFieldList property of the cursor. И я опять не вижу где наврал. Случайно это все не может зависеть от структуры запроса или баз данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 11:08 |
|
||
|
Вновь обновление данных MSSQL через курсор
|
|||
|---|---|---|---|
|
#18+
Ну ни фига себе по образу и подобию! А где у тебя в UpdateNameList перечисление ключевых столбцов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 11:23 |
|
||
|
Вновь обновление данных MSSQL через курсор
|
|||
|---|---|---|---|
|
#18+
Так вот где собака зарыта! авторА где у тебя в UpdateNameList перечисление ключевых столбцов? Мне эти столбцы обновлять то не надо было. Теперь все работает только пришлось установить Код: plaintext иначе постоянно попадал на Update conflict. Кстати с чем бы сие связано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 11:41 |
|
||
|
Вновь обновление данных MSSQL через курсор
|
|||
|---|---|---|---|
|
#18+
> иначе постоянно попадал на Update conflict. Кстати с чем бы сие связано? An optimistic locking conflict has been detected while trying to update a view. Make sure your update key is valid. При добавлении записей при оптимистической блокировке? Возможно, комбиниция ключевых полей не уникальна, поэтому еще нужно ориентироваться и на метку времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 12:20 |
|
||
|
Вновь обновление данных MSSQL через курсор
|
|||
|---|---|---|---|
|
#18+
Оба-на! А по умолчанию чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 13:47 |
|
||
|
Вновь обновление данных MSSQL через курсор
|
|||
|---|---|---|---|
|
#18+
По умолчанию вообще обновление не поддериживается :) А если про WhereType, то 3 Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2004, 23:40 |
|
||
|
Вновь обновление данных MSSQL через курсор
|
|||
|---|---|---|---|
|
#18+
2 ArDo По-моему, устанавливать CURSORSETPROP("WhereType",4) в Вашем случае достаточно опасно. Хотя, возможно, я ошибаюсь. Использование CURSORSETPROP("WhereType",4) имеет смысл при наличии поля типа TIMESTAMP в таблице на сервере(в данном случае MS SQL Server-е) и выборке этого поля в VFP cursor. В Вашем случае, похоже (судя по названиям полей), поля с типом TIMESTAMP в выборке нет. Опасность, с моей точки зрения, состоит в том, что в Вашем случае, несмотря на то что в VFP CURSORGETPROP("WhereType") возвратит 4, на SQL Server-е выполняется UPDATE-оператор, where clause которого состоит ТОЛЬКО из ключевых полей. Т.е. так, как если бы Вы установили CURSORSETPROP("WhereType",1). В этом можно легко убедиться используя SQL Profiler. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2004, 08:19 |
|
||
|
Вновь обновление данных MSSQL через курсор
|
|||
|---|---|---|---|
|
#18+
С точки зрения нормальной логики непонятно откуда конфликт ключа - уже 2 поля дают уникальную комбинацию. CURSORSETPROP("WhereType",4) стоит уже несколько дней и ошибок пока не видно.\r \r Уважаемые коллеги я вчера повесил еще один вопрос\r /topic/88635\r не погнушайтесь, дайте любые соображения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2004, 10:21 |
|
||
|
Вновь обновление данных MSSQL через курсор
|
|||
|---|---|---|---|
|
#18+
2 ArDo Думаю, что может возникнуть ошибка куда более серьёзная чем Update Conflict Предположим, что Ваша выборка содержит одну запись: AmountMST = 20, Qty = 10 С ней работают одновременно 2 пользователя. Оба пользователя начинают работу и видят одинаковые данные: AmountMST = 20, Qty = 10 Первый уменьшает Qty на 2, второй на 3. На стороне VFP у первого выполняется что-то типа Код: plaintext Код: plaintext На стороне SQL Server-а будет выполнено для первого пользователя Код: plaintext 1. 2. для второго пользователя Код: plaintext 1. 2. Есть очень хорошие шансы, что по окончании работы на SQL Server-е поле Qty НЕ БУДЕТ РАВНО 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2004, 18:29 |
|
||
|
Вновь обновление данных MSSQL через курсор
|
|||
|---|---|---|---|
|
#18+
2 vklepko В данном конкретном случае этим можно пренебречь, поскольку такое обновление разрешено только одному пользователю. Остальные работают с неизменяемым курсором. Все равно спасибо, мысль абсолютно правильная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2004, 09:47 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32493089&tid=1596729]: |
0ms |
get settings: |
12ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 225ms |
| total: | 407ms |

| 0 / 0 |
