|
|
|
Сохранение изменений
|
|||
|---|---|---|---|
|
#18+
Столкнулся с одной граблей. Запускаю элементарный справочник с парой полей всего. См. приложенную таблицу. Редактируется/удаляется/ добавляется все нормально и рузультаты изменений сохраняются нормально, кроме единственного случая. Про этот случай ниже. В чем прикол понять не могу. При загрузке справочника создается локальная таблица идентичная той, кот. в базе: Код: plaintext 1. 2. 3. 4. 5. 6. 7. При выходе из справочника идет сохранение результатов: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Если в таблице физически нет ни одной записи или есть хоть одна без пометки deleted - сохранение проходит на ура. В случае, если в таблице есть только удаленные записи - записи в базу не добавляются. Т.е. во временной локальной таблице они есть, но insert-ом не вставляются. Чтобы понять, отбираются ли записи для вставки смотрел часть insert-а, где отбираются записи для вставки: Код: plaintext 1. Данные выбираются правильно. Но не вставляются. Подозреваю, что дело может быть в этих !DELETED(). Где собака порылась, подскажите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2008, 15:21 |
|
||
|
Сохранение изменений
|
|||
|---|---|---|---|
|
#18+
Странно, после того как вместо Код: plaintext Код: plaintext Все заработало. Немного непонятно для меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2008, 15:40 |
|
||
|
Сохранение изменений
|
|||
|---|---|---|---|
|
#18+
Вот, кстати и сама таблица - не заметил, что сразу не прикрепилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2008, 15:49 |
|
||
|
Сохранение изменений
|
|||
|---|---|---|---|
|
#18+
При использовании нескольких таблиц-источников, как поведет себя функция Deleted() внутри команды Select-SQL заранее предсказать невозможно. Точнее, невозможно сказать, в каком алиасе он будет выполнять проверку признака удаленной записи. Поэтому, в команде INSERT-SQL я бы посоветовал выбросить все условия по !Deleted(), а перед исполнением запроса просто вернуть настройку SET DELETED ON Ведь удаленные записи уже были удалены, значит, сохранять настройку OFF - нет необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2008, 16:05 |
|
||
|
Сохранение изменений
|
|||
|---|---|---|---|
|
#18+
ВладимирМ , почему-то о таком простом варианте - вернуть настройку после удаления - даже в голову не пришло. Но насчет алиаса - в этих же запросах ставил deleted() с указаниями конкретных алиасов, в которых они должны проверять условие - результат тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2008, 16:13 |
|
||
|
Сохранение изменений
|
|||
|---|---|---|---|
|
#18+
Мои рассуждения: пусть пока остается Код: plaintext 1. В таблице вообще нет записей - возвращается 0 записей 2. В таблице только удаленные записи - результат тоже 0 3. Есть неудаленные записи - непустой набор Но при этом какая разница между вариантами 1 и 2? В первом случае insert проходит, во втором нет? Убираем условие: Код: plaintext 1. получаем 0 записей 2. получаем непустой набор 3. тоже непустой набор Работает во всех трех случаях. Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2008, 16:19 |
|
||
|
Сохранение изменений
|
|||
|---|---|---|---|
|
#18+
lo-pataНо насчет алиаса - в этих же запросах ставил deleted() с указаниями конкретных алиасов, в которых они должны проверять условие - результат тот же. Так нельзя. Это не будет работать. Дело в том, что внутри команды Select-SQL таблицы открываются в других, скрытых, рабочих областях. Отличных от тех, которые видны разработчику. Это значит, что функция Deleted() при явном указании алиаса будет всегда ссылаться только на одну запись указанной рабочей области. Вот на какую запись попали, в указанной рабочей области, то значение Deleted() и вернет для ВСЕХ записей выборки. Поэтому, функцию Deleted() лучше в запросах вообще не использовать. А если и использовать, то только в самых простых. И ни в коем случае не указывать явно алиас таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2008, 16:23 |
|
||
|
Сохранение изменений
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2008, 16:28 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35056508&tid=1588303]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 429ms |

| 0 / 0 |
