|
|
|
Обновление таблицы через Local View
|
|||
|---|---|---|---|
|
#18+
Уважаемые знатоки ! Помогите решить такую задачу Есть таблица (PRICE) в ней хранятся остатки по карточке и Local View к ней (LVPRICE) вводится приходный документ нужно в поля qmp и sum_mpr добавить количество и сумму прихода за месяц Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Проблемма такая . Данные в lvPrice меняются а в таблице не желают. Причем если не ставить буферизацию на lvPrice то обрабатывается только одна запись в цикле, а затем вылетает ошибка "Конфликт обновления в курсоре ". Похоже на команде seek после коментария "Найдем запись с ИД карточки" если в ините формы добавить Код: plaintext 1. 2. Документ обрабатывается полностью но данные в таблице попрежнему не меняются После этого запускаю такую программу пересчета где есть такой код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Подскажите где глюк и чего я не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2008, 16:11 |
|
||
|
Обновление таблицы через Local View
|
|||
|---|---|---|---|
|
#18+
Представление - это курсор показывающий состояние исходных таблиц на момент его открытия. Автоматически он не обновляется при изменении исходных таблиц. Для этого есть команда REQUERY(). Есть еще REFRESH() - только у него возможностей гораздо меньше. Если LVPRICE полностью дублирует таблицу PRICE и используется для того чтобы указатели на разные записи установить, то проше так открыть: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2008, 16:43 |
|
||
|
Обновление таблицы через Local View
|
|||
|---|---|---|---|
|
#18+
Dima T Представление - это курсор показывающий состояние исходных таблиц на момент его открытия. Автоматически он не обновляется при изменении исходных таблиц. Это я знаю. Я может не совсем правильно описал проблемму. У меня в представлении хранится не вся таблица, а выбока из нее. Если менять данные напрямую в таблице, то для поиска нужны или дополнительные индексы или фильтры, поэтому стоит обратная задача: Изменить данные в представлении , а чтобы в исходной таблице само поменялось В коде программы нашел ошибку в команде INSERT TO указана имя исходно таблица заменил команду на APPEND BLANK и REPLACE Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2008, 08:24 |
|
||
|
Обновление таблицы через Local View
|
|||
|---|---|---|---|
|
#18+
nfpВ коде программы нашел ошибку в команде INSERT TO указана имя исходно таблица Этот кусок и натолкнул на мысль что тебе наоборот все надо. nfpзаменил команду на APPEND BLANK и REPLACE Код: plaintext 1. 2. 3. Тут может скрываться потенциальная ошибка (не связанная с твоей проблемой). Указывай явно алиасы с которыми работаешь: Код: plaintext 1. 2. 3. 4. Этот код непонятен: nfp Код: plaintext 1. EOF() - проверяется для текущей рабочей области. Ты уверен что при входе в цикл текущая rdoc_str_cs? 2. В rdoc_str_cs указатель при входе в цикл может быть где угодно, циклом с этого места и до конца записи обработаются. Проверь что указатель там где тебе надо устанавливается Твой цикл: nfp Код: plaintext 1. 2. 3. 4. 5. Равнозначен такому Код: plaintext 1. 2. 3. nfp Изменить данные в представлении , а чтобы в исходной таблице само поменялось Но итог такой же ПОЧЕМУ. В других программа меняю данные в представлениии и все изменения автоматом переходят в нужную таблицу . Если в представлении не прописано что оно должно обновлять исходную таблицу, то изменения туда не попадут. Примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Глюки еще может грид привносить, он сам записи блокирует, если твой LVPRICE на форме в гриде отображается, то убирай с грида фокус куда-нибудь перед твоим расчетом, на кнопку или на поле ввода какое-нибудь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2008, 09:33 |
|
||
|
Обновление таблицы через Local View
|
|||
|---|---|---|---|
|
#18+
Дима ,спасибо за такой большой и подробный ответ !!! Разрешение на сохранение имеется. Дело в том, что в этой же пакете, но в других формах такое обновление проходит (пример приведен в первом посте). Попробую применить все Ваши советы, и внимательно посмотреть коды программ, которые нормально работают. Возможен вариант с гридом. А пока если не сложно ответьте еще на несколько вопросов. Заранее благодарен 1 почему программа ломается если не делать буферизацию. (после 1-го прохождения цикла на команде SEEK выдает "Конфликт обновления в курсоре ") Почему тут требуется буферизация 2 Если я перед какими либо действиями сделал буфферизацию командой CursorSetProp('Buffering', 5, 'lvprice') то после их выполнения и сохранения изменений я должен отменить буфферизацию командой CursorSetProp('Buffering', 1, 'lvprice'). Так? Но сейчас не могу точно вспомнить все подробности, но была такая ситуация. Эти команды отрабатывали нормально, а переходил на другую форму выдавалась ошибка о несоответствии типа буферизации. Писал CursorSetProp('Buffering', 3, 'lvprice') - работало нормально.Но мне надо не изменить тип буферизации мне нужно ее отменить . В этом примере lvprice- тот же самый Local View ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2008, 10:35 |
|
||
|
Обновление таблицы через Local View
|
|||
|---|---|---|---|
|
#18+
nfp1 почему программа ломается если не делать буферизацию. (после 1-го прохождения цикла на команде SEEK выдает "Конфликт обновления в курсоре ") Почему тут требуется буферизация 2 Если я перед какими либо действиями сделал буфферизацию командой Грида точно нет который этот курсор использует? SET MULTILOCK ON есть? nfpCursorSetProp('Buffering', 5, 'lvprice') то после их выполнения и сохранения изменений я должен отменить буфферизацию командой CursorSetProp('Buffering', 1, 'lvprice'). Так? Не так. Вью без буферизации не бывают, только оптимистическая строки (3) или таблицы(5), остальные типы буферизации только для таблиц. Об этом в сообщении об ошибке написано. Для вью по умолчанию 3. По-хорошему - запоминай как было и восстанавливай в конце: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2008, 12:05 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35307917&tid=1587791]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 334ms |

| 0 / 0 |
