|
автор: ?????? (08.09.2006 в 00:00) |
|
| Доброго времени суток всем!
Вопрос следующего содержания:
Есть таблица, в ней три поля код, фамилия и адрес.
Есть форма на которой расположено поле со списком (его источник - это код) и два поля (для фамилии и адреса).
Подскажите как правильно создать запрос чтобы по выбору значения в поле со списком соответствующие ему значения отображались в полях адрес и фамилия.
Понимаю что вопрос глупый но, начальник меня сожрет если это не будет сделано. | |
|
| |
|
автор: osmor (08.09.2006 в 00:00) |
|
| сделайте простую форму на основании вашей таблицы (можно мастером) октройте форму в режиме редактирования
в [red]заголовок[/red] формы вставьте поле со списком.
Дальше мастер спросит о способе получения значений
укажите "поиск записи в форме...."
далее следуйте указаниям мастера | |
|
| |
|
|
|
| Для вставки данных в другие поля на основе выбранного значения из справочной таблицы, нужно использовать функцию DLookup.
Например:
Ваша таблица содержит данные: Код, Фамилия, Адрес
Если у Вас есть другая таблица в которой нужно при выборе фамилили чтобы автоматически вставлялся адрес, пользуйтесь функцией DLookup.
В форме к создайте поле со списком "Выбор сотрудников" (например), в источнике строк с помощью мастера ... выберите вашу таблицу, выведите два поля Код и Фамилия (по возрастанию), укажите в свойствах поля число столбцов 2, присоединенный столбец 1, ширина столбцов 0см;5см, ширина списка 6см. Это Ваш список сотрудников по алфавиту.
Затем в событии поля После обновления, в процедуре сделайте следующее:
Me![Адрес] = DLookup("[Адрес]", "[Название Вашей таблицы]", "[Фамилия] = Forms![Название Вашей формы]![Фамилия]")
Ме![Адрес].Requery | |
|
| |
|
23 Кб. |
|
| дополню, что...
в таких полях формы, как правило приходится отображать данные вида
[FirstName] & ", " & [LastName] & " " & [MiddleName] AS Employee
|
или например
[Country] & ", " & [PostalCode] & ", " & [City] & " " & [AddressLine] AS Address
|
отбирать такие данные Dlookup' ом и прописывать длинное условие запроса в десятке разных мест очень неудобно...
имеет смысл создать сохраненный запрос с заранее объединенными данными и уже из него подставлять сведения в поле на форме - что-то вроде
SELECT
CompanyCode, [LegalStatus] & ' "' & [CompanyName] AS Company,
[Country] & ", " & [PostalCode] & " " & [Region] & " " & [City] & ", " & [AddressLine] AS Address
|
FROM tblCompanies;
как вариант можно сделать в глобальном модуле функцию с запросом и обращаться к ней передавая аргумент и Dlookup'ом забирая значение для поля формы:
ControlSource = q([EmployeeCode])
или
ControlSource = s([CompanyCode])
эз дискрайбд ин зе эттэчмент | |
|
| |
|
|
|
| а зачем сложности типа Dlookup ?
он тормозит сильно
можно
сделать источником данных формы-запрос на основании таблицы, который будет использовать значение поля со списком в качестве значения на отбор
или применить фильтр на форме
или, если вы вводите код в поле со списком, то увеличив кол-во столбцов в полесосписком вы можете отобразить еще два поля | |
|
| |
|
22 Кб. |
|
| >а зачем сложности типа Dlookup ?
конечно, использование того или иного приема зависит от конкретной ситуации и решать нужно именно в контентексте - где длукапом, где селектом
в примере на скриншоте - скорость DlookUp вообще никакого значения не имеет | |
|
| |