Microsoft Access подчиняется как песочница перед фактическим обновлением данных - PullRequest
0 голосов
/ 14 января 2019

У меня есть база данных Access 2013 с 2 подчиненными формами: первая предоставляет текущие данные, а вторая я пытаюсь настроить как пространство для песочницы, чтобы пользователи могли вносить изменения и обновления на досуге. Когда они будут готовы отправить эти изменения и обновления, они могут нажать «Отправить», и их результаты обновят текущие данные и информацию таблицы за ним.

Прошло некоторое время с тех пор, как я связался с Access, поэтому я не могу вспомнить, можно ли это сделать, поэтому подумал, что я спрошу.

Ответы [ 3 ]

0 голосов
/ 15 января 2019

Я бы посоветовал вам установить локальную временную таблицу для песочницы.

Затем, когда вы говорите: «Когда они будут готовы представить эти изменения и обновления, они могут нажать« Отправить », и их результаты обновят текущие данные и информацию таблицы». … .. Вместо этого, то, что происходит, является тем, что запись таблицы Temp Sandbox добавляет или вставляет / обновляет фактическую таблицу.

Если это разделенное многопользовательское приложение и временная таблица «Песочница» является локальной, то данные действительно временные, и обновление должно происходить в течение сеанса пользователя. Но общий дизайн довольно прост.

0 голосов
/ 04 июля 2019

Наконец, вернувшись к этому, я понял, что смотрю на разработку Access глазами того, как я буду это делать в Excel; обе разные экосистемы. Я снял свой объектив для форм Excel, и мне пришло в голову несколько вещей, которые, я думаю, могут помочь другим с подобной борьбой:

  1. Access и Excel - это разные экосистемы разработки VBA. Вы не можете обязательно кодировать его в Excel и ожидать, что он будет работать безупречно в Access.
  2. Подформа - это просто форма ... и, как и все формы, ее элементы управления, код и поведение изменяются не по функциональности, а по форме в зависимости от типа формы (таблица данных, непрерывная и т. Д.).
  3. Обрабатывать каждую форму и код события независимо друг от друга. Если ваша подчиненная форма на родительском элементе требует, чтобы события запускались, когда пользователь добавляет, обновляет, удаляет, проверяет и т. Д., Этот код должен принадлежать в форме, составляющей подчиненную форму ... а не родительской.
  4. Родительская форма должна управлять только фильтрацией и результатами подчиненной формы, а также собственным набором действий, которые выполняет пользователь.
  5. Метод Screen поразителен и, думаю, спас бы мне жизнь за отслеживание изменений. Отличная ссылка здесь: https://www.datawright.com.au/access_resources/tracking_data_changes_in_access.htm
0 голосов
/ 14 января 2019

Это не может быть сделано без довольно грязного подхода. Формы в доступе ВСЕГДА редактируйте ОДИН ряд.

Что я делаю в этих случаях, так это позволяю пользователю «редактировать» сколько угодно.

Однако, скажем, мы делаем «классический» чек или вводимую сумму пожертвования. Таким образом, у вас есть сумма пожертвования (скажем, 50 долларов), но вы ТОЛЬКО должны распределить суммы по различным счетам пожертвований.

С учетом вышеизложенного вы не хотите сохранять данные до тех пор, пока суммы, распределенные по счетам, не совпадут с суммой пожертвования.

Поскольку мы не можем содержать форму + вложенную форму как «одиночное» обновление, то я добавляю флаг публикации в родительскую форму (одну запись в основной форме).

Затем пользователь может редактировать / добавлять, уходить на кофе, возвращаться и редактировать еще. Вы даже можете вернуться на следующий день и продолжить редактирование.

Когда пользователь доволен, в форме появляется кнопка «*».

Если пользователь нажимает на сообщение, а суммы остатков не совпадают, вы не устанавливаете флаг postOK = true.

Таким образом, вышеприведенное НЕ предоставит пользователю средства для спасения или отмены внесения изменений в «все дело», но позволяет определить, что введенные данные были «сбалансированы» и проверены. А если «баланс» не произошел, то вы можете пропустить эту запись или ввести процесс, в котором данные не проводятся или не помечаются как выполненные до тех пор, пока данные не будут сбалансированы.

Вот снимок экрана в доступе к «классическому» распределению денег по нескольким счетам. Вы можете увидеть сумму пожертвования на левой стороне, а справа - распределение этой суммы по счету.

enter image description here

Тем не менее, в нижней части экрана для «рабочей задачи», над которой работает пользователь, также имеется кнопка «Отправить». Когда они нажимают кнопку «Отправить», если суммы не уравновешены, то публикация еще не завершена. На самом деле, я позволил пользователям вводить «много» пожертвований, и тогда они могут «публиковать» все сразу для простоты и скорости работы. «Пост» на самом деле НЕ публикуется, но проверяет баланс. Таким образом, пользователи «думают», что они публикуют, но на самом деле он устанавливает только одно значение (флаг POSTOK).

Таким образом, для запуска отчета его нельзя запустить до тех пор, пока не будет нажата кнопка «Опубликовать».

Как уже отмечалось, этот подход НЕ даст вам возможность «выйти из кризиса» для выхода из вашего ввода данных, а также не позволит вам «отменить» ввод данных, но он ДОЛЖЕН проверить, что проводка в порядке. и «действительный». Во многих случаях такого подхода будет достаточно.

Однако, если вы ищете какое-то «отменить» для редактирования формы + подформы, то Access в значительной степени не является подходящим инструментом для этого типа бизнес-модели и редактирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...