Использование запроса для предоставления формы доступа

#forms #ms-access #view #ms-access-2010 #ms-access-2003

#формы #ms-access #Вид #ms-access-2010 #ms-access-2003

Вопрос:

У меня есть форма Microsoft Access, которая предоставляется (каким-то образом) запросом. Запрос содержит три таблицы, связанные вместе с помощью их соответствующих первичных и внешних ключей, и форма отображает данные довольно удачно.

Странная вещь (насколько я понимаю) — это способность формы затем разрешать ввод данных с помощью запроса.

Однако, если пользователь создает новую запись, у всего этого, похоже, возникают проблемы из-за обязательного поля в [table2] таблице.

 SELECT [table1].*
    ,[table2].JobNo
    ,[table2].PlannedDateOC
    ,[table3].DateJobStarted
    ,[table1].PlanNo
FROM (
    [table1] LEFT JOIN [table2] ON [table1].PlanNo = [table2].PlanNo
    )
LEFT JOIN [table3] ON [table2].JobNo = [table3].JobNo
ORDER BY [table2].PlannedDateOC
    ,[table1].PlanNo;
  

По словам пользователей, эта форма отлично работала до преобразования из формата Access 97/2003 в Access 2010 (формат файла 2007).

Может ли кто-нибудь уточнить, является ли это (тот факт, что оно должно работать) законным, и будет ли этот процесс работать в любой версии Access, если да? Концепция возможности использования запроса для ввода данных мне совершенно чужда.

Дайте мне знать, если вам нужны дополнительные разъяснения.

ПРИМЕЧАНИЕ: Здесь следует отметить, что я переместил некоторые поля в заголовок формы, чтобы они всегда были видны как остальная часть прокрутки формы. Я не знаю, будет ли это иметь какие-либо побочные эффекты на производительность формы.

Комментарии:

1. приведенный выше запрос позволит вам вставлять данные в [table1], когда все ненулевые поля имеют значения! какая у вас проблема?

2. Спасибо за ответ, @krishKM. Цитата: Однако, если пользователь создает новую запись, у всего этого, похоже, возникают проблемы из-за обязательного поля в [table2] таблице. В основном запись не сохраняется, потому что во второй таблице есть обязательное поле.

3. и убедитесь, что только table1.поля загрязняются при вставке новой записи. Не все видимые поля из другой таблицы.. это было бы (непоследовательное обновление / вставка) и, скорее всего, приведет к ошибке

4. конечно! дайте нам знать. (в идеале просто заблокируйте / отключите другие поля из других таблиц), чтобы они все еще могли просматривать их при открытии для просмотра)

5. нет никаких изменений в том, как работает ядро базы данных и формы в отношении 20-летней версии access 97 по сравнению с новой версией 2016 года. Итак, в чем бы ни заключалась проблема — это не какое-то изменение в том, как работает Access — что-то еще было / испорчено.

Ответ №1:

Приведенный выше запрос позволит вам вставлять данные в [table1], когда все ненулевые поля имеют свои значения, и убедитесь, что только table1.поля загрязняются при вставке новой записи.