|
Сохранение изменений
|
|||
---|---|---|---|
#18+
Приветствую всех. В Access только начинаю, но уже возникла такая проблема: имеется форма для редактирования записей. При открытии формы(так как граф много) делается запрос и заполняются поля, дабы пользователю все данные не пришлось вновь вносить. Вот только возникла одна проблема: как только заполняется любое поле-сразу же вносятся изменения в бд. Как возможно сделать так, чтобы изменения вносились сразу пачкой и только по нажатию кнопки? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 06:40 |
|
Сохранение изменений
|
|||
---|---|---|---|
#18+
Забыл добавить, если это требуется: В самой форме 2 столбца: с начальными данными(заблокированы для редактирования) и с полями для редактирования делается все на vba. при открытии формы с главной передается аргумент, затем идет Form_Load для загрузки данных из таблицы в форму. Переменные "New_" - это переменные полей для редактирования. Код формы: Код: vbnet 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 07:06 |
|
Сохранение изменений
|
|||
---|---|---|---|
#18+
Акцесс устроен так, что при любой смене фокуса с текущей строки в форме на базе запроса изменения вносятся в базу. Поэтому решений для сохранения всего сразу только по кнопке не так много: 1. Использовать unbound поля, заполняя их кодом при открытии и затем кодом же разносить по таблице - самое муторное решение 2. Использовать временную таблицу для редактирования и переностить готовые данные в основную по кнопке - пожалуй, самое правильное решение 3. Сохранять копию данных перед началом редактировани и восстанавливать в случае отмены. Иногда это проще, чем №2, но не всегда логика приложения позволяет это сделать, если нужна транзакционная целостность. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 07:58 |
|
Сохранение изменений
|
|||
---|---|---|---|
#18+
MrShin, благодарю. Третий способ точно отметается, а первый эстетически будет выглядеть извращенно в коде легче уж 2 запроса сделать, чтобы делался запрос на копирование, а потом на удаление из временной таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 08:23 |
|
Сохранение изменений
|
|||
---|---|---|---|
#18+
MrShinАкцесс устроен так, что при любой смене фокуса с текущей строки в форме на базе запроса изменения вносятся в базу. Поэтому решений для сохранения всего сразу только по кнопке не так много: 1. Использовать unbound поля, заполняя их кодом при открытии и затем кодом же разносить по таблице - самое муторное решение 2. Использовать временную таблицу для редактирования и переностить готовые данные в основную по кнопке - пожалуй, самое правильное решение 3. Сохранять копию данных перед началом редактировани и восстанавливать в случае отмены. Иногда это проще, чем №2, но не всегда логика приложения позволяет это сделать, если нужна транзакционная целостность. 4 Ну или использовать транзакции в рекордсет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 08:55 |
|
Сохранение изменений
|
|||
---|---|---|---|
#18+
ROI4 Ну или использовать транзакции в рекордсет. Да как-то мутно они работают с формами. Несколько раз пытался, вечно на какие-то грабли с видимостью изменений в других запростах натыкался. Сейчас транзакции стараюсь использовать только в сериях запросов в одном модуле. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 09:13 |
|
|
start [/forum/topic.php?fid=45&gotonew=1&tid=1613865]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
8ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 327ms |
total: | 446ms |
0 / 0 |