|
|
|
| Здравствуйте, уважаемые форумчане!
Я новичек в программировании на VBA. Судьба свела с ним лишь потому, что необходимо-таки доделать базу на Access для сдачи дисциплины в универе.
Большую часть работы я уже сделал сам, но возникла очередная загвоздка, от которой мозги мои вскипели напрочь. Собственно поэтому я и решил обратиться к access-гуру. Ниже я привожу упрощенный вариант поставленной задачи, который затрагивает только мою проблему.
Есть таблица номеров подшивок и номеров журналов
НПОД - НЖУР
1 - 1
1 - 2
1 - 3
2 - 1
2 - 2
и т.д.
Также есть таблица статей в журналах, которая имеет вид:
НПОД - НЖУР - НАЗВАНИЕ - АВТОР
Эти таблицы связаны между собой по ключевым полям НПОД - НЖУР
Необходимо создать форму, для ввода статей, в которой есть:
1. поле со списком для выбора подшивки (это я реализовал)
2. в подчиненной форме выводится таблица со статьями из выбранной подшивки (тоже сделал)
Моя проблема:
3. необходимо в подчиненной форме в таблице реализовать поле со списком номеров журналов, которые соответствуют выбранной подшивке.
У меня получается вывести список, но он содержит номера журналов всех подшивок, а мне нужно только номера выбранной. =(
С уважением и надеждой на Вашу помощь, Виталий. | |
|
| |
|
|
|
| добавьте в запрос условие вида <SELECT Some FROM AnyPlace> WHERE НПОД = 1
это очень простая задача - примеры есть на любом SQL хелпе в и-нете | |
|
| |
|
|
|
| Нет, не все так просто, не думайте что я ничего не искал. Посмотрите пожалуйста файл базы, чтобы было нагляднее.
В форме СТАТЬИ нужно реализовать поле со списком номеров журналов в соответствующей колонке.
http://slil.ru/28826810 | |
|
| |
|
|
|
| Что то файлик не прикрепился или ссылка битая | |
|
| |
|
|
|
| Вроде бы нормально залил, у меня качает.
Вот другая ссылка: http://gl00m.fatal.ru/jour.zip | |
|
| |
|
|
|
| Уже смотрю.....
есть ошибки ( на мой взгляд)
зачем нужна таблица журналы ? ( мне непонятно)
Ну да ладно
Вам необходимо на основную форму поместить поле со списком не связанное с таблицами (свободное)
источником строк должен служить запрос (написаный на SQL - т.е. находиться внутри поля)
который будет в зависимости от состояния поля сосписком (подшивка) отбирать номера журналов а после выбора значения в этом поле сосписком фильтровать подчиненную форму
все равно со структурой что то не правильное (старыйя стал - ворчливый) | |
|
| |
|
|
|
| Таблица журналы была создана, дабы разгрузить таблицу подшивки, от ненужных повторений (если бы её не было, то в таблице подшивки для каждого номера повторялась бы информация о названии журнала и прочее). Структура скорее всего грубая, но я в этом не специалист, поэтому сделал так, как мне это представилось в голове. :)
Спасибо, вам snipe за столь быстрый ответ, я к сожалению не мог присутствовать в тот день в онлайне.
Хорошо, я создал поле со списком (тип источника строк: Таблица или запрос), написал SQL запрос в Источник строк:
SELECT Avg(ЖУРНАЛЫ.НП) AS [Avg-НП]
FROM ПОДШИВКИ INNER JOIN ЖУРНАЛЫ ON ПОДШИВКИ.НП = ЖУРНАЛЫ.НП
GROUP BY ПОДШИВКИ.ЖУР
HAVING (((ПОДШИВКИ.ЖУР)=" & ПолеСоСписком0.Теxt & "));
Но что-то не работает ничего, список пуст.
Я хотел этим запросом из по названию подшивки узнать её номер, а уже потом отобрать номера журналов другим запросом. | |
|
| |
|
|
|
| У поля со списком взаимоувязаны 5 строк
Вкладка данные
строка данные - в этой строке указывается поле таблицы куда вносится выбранные данные
строка Присоединённый столбец - тут пишется циферка № столбца в селекте запроса начиная с первого
Источник строк - собственно имя таблицы или имя запроса или строка написанная на SQL
Вкладка Макет
строка количество столбцов - указывается цифирка сколько отображать столбцов из источника строк
строка ширина столбцов - указывается ширина отображаемых столбцов в см.(при нескольких столбцах через точку с запятой)
Настраивая правильно эти пять строк получаем различные варианты отображения поля со списком
Например в селект имеет столбцы id и ФИО
нужно показывать фамилию а в таблу вносить Id
Макет
количество строк - 2
ширина строк - 0см;4см
Данные
данные - тут упущу
источник строк - тоже упущу
присоединенный столбец -1
Если обращение ведется к неприсоединенному столбцу поля со списком
то обращатся надо через Column
например
forms![имя формы]![имя поляСоСписком].Column(1) - полное обращение к полю в т.ч. и для другой формы
Me![имя поляСоСписком].Column(1) - краткое обращение для той же формы
forms![имя формы]![имя поляСоСписком].Column("ФИО") - не знаю так правильно или нет (вроде должно) (все три варианта примерно одинаковы)
цифирка в скобках Column это номер столбца в Select отсчет идет от 0
После того как выбраны значения в поисковых полях со списком нужно на форму установить фильтр или поменять форме источник строк RecordSource | |
|
| |
|
|
|
| И еще
не уверен что мои познания правильные однако
свойство Text можно получить только в том случае если фокус находится на поле c которого пытаются считать это свойство
т.е. в данном случае вы не можете получить то что написано в другом поле используя это свойство | |
|
| |
|
|
|
| Ок, с этим разобрался, номер подшивки показывает, но теперь очередная засада.
Вставил в источник строк ПоляСоСписком, которое у меня в таблице для выбора номера журнала, такой запрос:
SELECT ЖУРНАЛЫ.НЖ
FROM ЖУРНАЛЫ
WHERE (((ЖУРНАЛЫ.НП)=" & ПолеСоСписком16.Text & "));
Теперь он пишет ошибку: Несоответствие типов данных в выражении условия отбора.
Т.е., я ему строку пытаюсь для сравнения дать, нужно число.
Какие функции преобразования типов в Access? :)
Пойду гуглить, по этому поводу.
Спасибо за помощь!!! | |
|
| |
|
|
|
| Что-то не выходит, у кого-нибудь есть соображения как побороть данный казус? =( | |
|
| |
|
|
|
| Давай завтра
проснёшся- че нибудь придумаю | |
|
| |
|
26 Кб. |
|
| Пока вот так => | |
|
| |
|
|
|
| Огромное спасибо за помощь и содействие! Буду разбираться. | |
|
| |