#ms-access #ms-access-2016 #subform
#ms-access #ms-access-2016 #подчиненная форма
Вопрос:
У меня есть родительская форма (frmGroupSession), которая имеет подчиненную форму (SubFormParticipants) в представлении таблицы данных. Подчиненная форма основана на запросе, который выбирает всех участников ([ИДЕНТИФИКАТОР КЛИЕНТА], [ИМЯ], [ПОСЕЩЕННЫЕ]), которые посещали определенную группу [groupId] в определенную дату [GroupSessionDate]. Родительская форма сохраняется в таблице, которая регистрирует групповые сеансы (tblGroupSessionLog). Мне нужно сохранить участников группы [идентификатор КЛИЕНТА] в записи в tblGroupSessionLog
По сути, мне нужно передать данные из подчиненной формы в запись в tblGroupSessionLog. Я не уверен, какой самый эффективный способ сделать это, если это вообще возможно. В идеале я хотел бы, чтобы каждый уникальный участник [ИДЕНТИФИКАТОР КЛИЕНТА] хранился в своем собственном поле в tblGroupSessionLog. Если бы в подчиненной форме было 20 участников, то каждое значение строки из первого столбца / поля [идентификатор КЛИЕНТА] передавалось бы в соответствующее поле в tblGroupSessionLog ([clientId1] через [ClientID20])
Я относительно новичок в этом. Даже задать этот вопрос было трудно.
Я не уверен, что еще я могу предоставить, чтобы помочь вам, мастерам, с решением, но дайте мне знать, и я это сделаю.
Мысли? Идеи?
Комментарии:
1. Мое первое впечатление заключается в том, что таблица с полем для каждого участника имеет мало смысла. Вместо сохранения в таблицу, возможно, вам нужен запрос ПЕРЕКРЕСТНОЙ таблицы. Вопрос слишком широкий и не содержит никаких попыток решить проблему (для чего потребуется код VBA), поэтому он не подходит для SO и, скорее всего, будет закрыт.
2. Сказав это, я признаюсь, что использую временные таблицы для временного хранения данных в ненормализованной структуре для вывода отчета. Это основа вашего требования? Обзор accessforums.net/showthread.php?t=21972
Ответ №1:
Доступ 101: у вас есть отношения «многие ко многим», вы должны посмотреть этот термин, но, короче говоря, это означает, что клиенты могут принадлежать ко многим группам, и в каждой группе может быть много клиентов. (так что преобразуйте свои данные в нормализованную структуру, аналогичную следующей:
Первый совет обязательно добавьте связи в разделе инструменты базы данных (вы должны посмотреть это). Access должен знать, как связаны таблицы, чтобы управлять ключами за кулисами, и иногда access принимает лучшие решения об автоматическом создании формы, когда он уже знает структуру отношений. После того, как ваши данные правильно структурированы, access упрощает создание функциональных, хотя и намного меньших, чем формы ввода данных, которые также можно использовать в качестве еще худших форм поиска. Например, щелкните любую таблицу и нажмите создать форму на ленте, и access создаст форму ввода данных для вас.
Совет по базовому стилю 1: всегда удаляйте поля первичного ключа, такие как ClientID, из формы. Поле все еще находится в источнике записи формы, управляемом access. Пользователям почти никогда не нужно видеть какие-либо ключи таблицы. Это дает вам базовую форму ввода данных, которую вы также можете использовать для прокрутки всех введенных вами клиентов с помощью селектора записей, обведенного кружком внизу frmClients.
Поиграйте с селектором записей, чтобы увидеть, как это работает. В частности, перейдите к последней записи, и вы обнаружите, что можете вводить новых клиентов, и access автоматически предоставит им идентификатор клиента. Вы также можете перебирать своих клиентов и обновлять их, используя эту форму, это просто не стильно. Таким же образом мы можем создать форму для таблицы групп.
Вы создаете форму для таблицы frmGroupSessions таким же образом, как и другие, но добавляете шаг. Замените текстовые поля, содержащие ClientID и groupId, на удобочитаемые выпадающие списки. Вот ссылка, которая поможет в этом: https://www.google.com/search ?q=access change text box to combo boxamp;oq=access change text amp;aqs=chrome.0.0i457j0l2j69i57j0j0i22i30l2.7503j0j1amp;sourceid=chromeamp;ie=UTF-8#kpvalbx=_r0sFYJ7vBcfY5gLz2aTgBw15
Становится:
На этом этапе поиграйте, чтобы узнать. Используйте селектор записей внизу frmGroupSessions для добавления и изменения данных. Поиграйте с таблицами и посмотрите, что произойдет. Начните возиться со свойствами формы, в частности с представлением по умолчанию. Вскоре у вас появятся идеи о том, как форма может быть лучше, и вы можете начать выяснять, как их стилизовать.