powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ComboBox + SQL
2 сообщений из 2, страница 1 из 1
ComboBox + SQL
    #32032861
Accesser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую.

Есть отдел, в отделе - люди. Каждый человек "привязан" к отделу. На один отдел - один начальник, при этом он - один из этих людей этого отдела. В комбобоксе должны быть люди только текущего отдела("текущего" в понятии Access, то есть определенного поля определенной таблицы, то есть короче пример):



Сотрудники
----------
man_id ot_id man_name
1 1 Иванов
2 1 Петров
3 2 Сидоров
------------

Отделы
-------------
ot_id ot_name ot_main
1 Снабжения 2
2 Поставок 3
-------------


Таким образом у нас в отделе снабжения (ot_id=1) два чела (man_id = 1 и 2) , в "поставок" - один (man_id = 3). На отдел снабжения (ot_od = 1) начальник - Петров, на поставок (ot_id = 2) - Сидоров (он же и единственный сотрудник этого отдела). То есть, скажем, в ленточной форме "Отделы" у меня будет:

КАРТИНКА ФОРМЫ ТУТ

А хотелось бы, чтобы для 1-го отдела я мог выбрать _только_ либо Иванова, либо Петрова (то есть тех, у кого ot_id совпадает с ot_id текущей записи таблицы "Отделы").

SELECT DISTINCTROW [Сотрудники].[man_id], [Сотрудники].[man_name] FROM [Сотрудники];

Это то, что дает мне Access для SQL-запроса этого комбобокса. Что-то туда надо добавить. Но что?
...
Рейтинг: 0 / 0
ComboBox + SQL
    #32032951
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос элементарный
Код: plaintext
1.
SELECT DISTINCTROW [Сотрудники].[man_id], [Сотрудники].[man_name] FROM [Сотрудники] 
WHERE Сотрудники.ot_id=[Forms]![Отделы]![ot_id]; 


Все это совершенно корректно будет работать на простой форме. А вот на ленточной придется развлекаться со скрытыми текстовыми полями и обновлением combobox при получении фокуса

Короче, в запрос формы добавляется поле с текстовым представлением ot_main:
Код: plaintext
1.
SELECT Отделы.*, Сотрудники.man_name AS main_n
FROM Отделы LEFT JOIN Сотрудники ON Отделы.ot_main = Сотрудники.man_id;


Комбо ot_main делается прозрачным и накладывается на текстбокс main_n ( или можно поразвлекаться с visible)

А на событие получение фокуса комбобокса навешивается
Код: plaintext
1.
2.
Private Sub ot_main_GotFocus()
    Me![ot_main].Requery
End Sub
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ComboBox + SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]