|
9 Кб. |
|
| добрый!
access 2003
Извините, если повтор. Искал и поисковиками, и по форуму, не нашёл ответа.
имеется форма. нарисовал кнопку, к ней присоединил нехитрый код
Private Sub Открыть_Заказчиков_Click()
DoCmd.ApplyFilter , "Заказчик=zakazchik_Name"
Соответственно, при нажатие на кнопку, выскакивает окно "введите занчение параметра" (см. аттач). Далее вводится имя и просматривает информация об отгрузках заказчикам.
Вопрос: можно ли как-то сделать, чтобы это значение выбиралось из выпадающего списка с названиями заказчиков?
спасибо! | |
|
| |
|
15 Кб. |
|
| Ох........
измученная тема на этом форуме
чего тут только не предлагалось
ладно давайте разбираться
поле со списком
в этом поле важно настроить 6 параметров (и осознавать на что каждый параметр влияет)
1. вкладка данные поле данные - тут указывается в какой столбец таблы или запроса будет передаваться инфа если поле со списком свободное т.е. инфа не вносится связанную таблицу или запрос то поле оставляют пустым
2. вкладка данные поле тип источника строк - там три параметра "таблица или запрос" например позволяют подцепить в качестве списка таблицу или запрос, "список значений" ввести ручками свой список - пока будем пользоваться таблица или запрос
3. вкладка данные поле источник строк - тут пишется имя таблицы или имя сохраненного запроса или строка SQL - пробуем создать строку SQL ставим курсор в поле слева от поля появится кнопка с тремя точками давим ее - запустится стандартный редактор запросов - конструируем запрос
что в этот момент важно посчитать столбцы слева на право нужно знать сколько их , который по счету столбец в котором хранится инфа которая будет передаваться в таблу или запрос т.е. то значение которое будет принимать поле со списком и столбец(цы) которые будет видеть пользователь (счет идет от 1)
пример столбцов 2 фио(text) и ид(long)
в таблу будет передаваться инфа из столбца ид, пользователь будет видеть фио
если столбцы расположены так
фио ид
то столбцов 2
значение поля со списком (правильно называется присоединенный столбец) - 2
столбец который надо отображать -1
4. вкладка данные поле присоединенный столбец - столбец из которого информация будет передаваться в таблу или запрос т.е. то значение которое примет поле со списком
(на примере это цифра 2 - столбец ид)
5. вкладка макет поле количество столбцов - количество столбцов в запросе или табле
(напримере тоже цифра 2)
6. вкладка макет поле ширина столбцов - вот тут решается вопрос о том что показывать а что скрывать ширина указывается в см через точку с запятой
ну поскольку в примере решили что видеть будем фио а ид показывать не будем то будет так
4см;0см
с остальными настройками разберетесь сами
теперь переходим к форме
у нее (формы) есть 2 свойства которые можно менять
1. вкладка данные источник записей - тут пишется имя таблицы, имя запроса или строка SQL
делаем запрос который бы ссылался на наше поле со списком
2. вкладка данные поле фильтр - тут устанавливается фильтр
применение фильтров - тут устанавливается разрешение на применение фильтра или его запрещение
( какой из способов фильтрации применять лучше я не знаю - тут дело вкуса
например если менять источник записей то пользователь не видит общее количество записей в табле или запросе, если применять фильтр то пользователь забывает что применил фильтр - вообщем как удобнее так и делаем)
теперь как все это свести в кучу что бы работало
у поле со списком есть событие после обновления - вот его и будем отлавливать возникает оно когда юзер выбрал значение в после со списком либо кликнул по какому-то значению в списке либо нажал enter или tab
первое что надо сделать это опросить поле со списком - если оно пустое то выбрать все данные
поле - обзовём поле со списком1
таблу сотрудники
пишем код для источника записей
Private Sub Поле_со_списком1_AfterUpdate()
If Nz(Me![Поле со списком1], 0) = 0 Then
Me.RecordSource = "SELECT Сотрудники.ид, Сотрудники.фио FROM Сотрудники;"
Else
Me.RecordSource = "SELECT Сотрудники.ид, Сотрудники.фио FROM Сотрудники WHERE (((Сотрудники.ид)=" & Me![Поле со списком1] & "));"
End If
End Sub
|
или для фильтра
Private Sub Поле_со_списком1_AfterUpdate()
If Nz(Me![Поле со списком1], 0) = 0 Then
Me.Filter = ""
Me.FilterOn = False 'запретить использование фильтров
Else
Me.Filter = "(Сотрудники.ид)=" & Me![Поле со списком1]
Me.FilterOn = True 'разрешить использование фильтров
End If
End Sub
|
заметьте что при использовании фильтра задействована та часть запроса которая стоит после слова Where в предыдущем примере
ну и смотрите прицеп => | |
|
| |
|
|
|
| http://hiprog.com/index.php?option=com_content&task=view&id=251661613&Itemid=35 | |
|
| |