Это на самом деле довольно большая тема и чревата всеми потенциальными проблемами. В большинстве промежуточных и продвинутых книг на Access будет определен раздел, в котором обсуждается «Запрос по форме», где у вас есть несвязанная форма, которая позволяет пользователю выбирать определенные критерии, а при выполнении записывает «на лету» SQL, чтобы вернуть сопоставимые данные.
В чем-то, кроме плоской структуры данных с одной таблицей, это не тривиальная задача, поскольку предложение FROM SQL зависит от таблиц, запрошенных в предложении WHERE.
Несколько примеров некоторых QBF форм из приложений я создал для клиентов:
- Querying 4 underlying tables
- Querying a flat single table
- Querying 3 underlying tables
- Querying 6 underlying tables
- Querying 2 underlying tables
Первый из них управляется модулем класса, который имеет свойства, которые отражают критерии, выбранные в этой форме, и которые имеют методы, которые записывают предложения FROM и WHERE. Это упрощает добавление других полей (пока эти поля не поступают из таблиц, отличных от тех, которые уже включены).
Самая сложная часть процесса заключается в написании предложения FROM, поскольку у вас должны быть соответствующие типы соединений и они включают только таблицы, которые либо находятся в предложении SELECT, либо в предложении WHERE. Если вы включите что-нибудь еще, вы значительно замедлите свой запрос (особенно если у вас есть какие-либо внешние соединения).
Но это большой вопрос, и нет волшебного решения для пули - вместо этого для каждого конкретного приложения должно быть создано нечто подобное. Также важно, чтобы вы тщательно тестировали его с пользователями, поскольку то, что совершенно понятно и понятно для вас, разработчик, часто довольно замаскировано для конечных пользователей.
Но это принцип, который относится не только к QBF!
но приятный контент. Ничего плохого в публикации решений проблем, которые вы уже решили. – Mendelt 2008-09-16 14:20:29