Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Список со значениями (Access 2003)
 
 автор: gloom   (21.03.2010 в 12:12)   личное сообщение
 
 

Здравствуйте, уважаемые форумчане!
Я новичек в программировании на VBA. Судьба свела с ним лишь потому, что необходимо-таки доделать базу на Access для сдачи дисциплины в универе.
Большую часть работы я уже сделал сам, но возникла очередная загвоздка, от которой мозги мои вскипели напрочь. Собственно поэтому я и решил обратиться к access-гуру. Ниже я привожу упрощенный вариант поставленной задачи, который затрагивает только мою проблему.

Есть таблица номеров подшивок и номеров журналов
НПОД - НЖУР
1 - 1
1 - 2
1 - 3
2 - 1
2 - 2
и т.д.

Также есть таблица статей в журналах, которая имеет вид:

НПОД - НЖУР - НАЗВАНИЕ - АВТОР

Эти таблицы связаны между собой по ключевым полям НПОД - НЖУР
Необходимо создать форму, для ввода статей, в которой есть:
1. поле со списком для выбора подшивки (это я реализовал)
2. в подчиненной форме выводится таблица со статьями из выбранной подшивки (тоже сделал)

Моя проблема:
3. необходимо в подчиненной форме в таблице реализовать поле со списком номеров журналов, которые соответствуют выбранной подшивке.

У меня получается вывести список, но он содержит номера журналов всех подшивок, а мне нужно только номера выбранной. =(

С уважением и надеждой на Вашу помощь, Виталий.

  Ответить  
 
 автор: Explorer   (21.03.2010 в 13:07)   личное сообщение
 
 

добавьте в запрос условие вида <SELECT Some FROM AnyPlace> WHERE НПОД = 1

это очень простая задача - примеры есть на любом SQL хелпе в и-нете

  Ответить  
 
 автор: gloom   (21.03.2010 в 13:48)   личное сообщение
 
 

Нет, не все так просто, не думайте что я ничего не искал. Посмотрите пожалуйста файл базы, чтобы было нагляднее.
В форме СТАТЬИ нужно реализовать поле со списком номеров журналов в соответствующей колонке.

http://slil.ru/28826810

  Ответить  
 
 автор: snipe   (21.03.2010 в 13:54)   личное сообщение
 
 

Что то файлик не прикрепился или ссылка битая

  Ответить  
 
 автор: gloom   (21.03.2010 в 14:21)   личное сообщение
 
 

Вроде бы нормально залил, у меня качает.

Вот другая ссылка: http://gl00m.fatal.ru/jour.zip

  Ответить  
 
 автор: snipe   (21.03.2010 в 14:31)   личное сообщение
 
 

Уже смотрю.....
есть ошибки ( на мой взгляд)
зачем нужна таблица журналы ? ( мне непонятно)
Ну да ладно
Вам необходимо на основную форму поместить поле со списком не связанное с таблицами (свободное)
источником строк должен служить запрос (написаный на SQL - т.е. находиться внутри поля)
который будет в зависимости от состояния поля сосписком (подшивка) отбирать номера журналов а после выбора значения в этом поле сосписком фильтровать подчиненную форму

все равно со структурой что то не правильное (старыйя стал - ворчливый)

  Ответить  
 
 автор: gloom   (22.03.2010 в 12:38)   личное сообщение
 
 

Таблица журналы была создана, дабы разгрузить таблицу подшивки, от ненужных повторений (если бы её не было, то в таблице подшивки для каждого номера повторялась бы информация о названии журнала и прочее). Структура скорее всего грубая, но я в этом не специалист, поэтому сделал так, как мне это представилось в голове. :)
Спасибо, вам snipe за столь быстрый ответ, я к сожалению не мог присутствовать в тот день в онлайне.
Хорошо, я создал поле со списком (тип источника строк: Таблица или запрос), написал SQL запрос в Источник строк:
SELECT Avg(ЖУРНАЛЫ.НП) AS [Avg-НП]
FROM ПОДШИВКИ INNER JOIN ЖУРНАЛЫ ON ПОДШИВКИ.НП = ЖУРНАЛЫ.НП
GROUP BY ПОДШИВКИ.ЖУР
HAVING (((ПОДШИВКИ.ЖУР)=" & ПолеСоСписком0.Теxt & "));

Но что-то не работает ничего, список пуст.
Я хотел этим запросом из по названию подшивки узнать её номер, а уже потом отобрать номера журналов другим запросом.

  Ответить  
 
 автор: snipe   (22.03.2010 в 13:03)   личное сообщение
 
 

У поля со списком взаимоувязаны 5 строк
Вкладка данные
строка данные - в этой строке указывается поле таблицы куда вносится выбранные данные
строка Присоединённый столбец - тут пишется циферка № столбца в селекте запроса начиная с первого
Источник строк - собственно имя таблицы или имя запроса или строка написанная на SQL
Вкладка Макет
строка количество столбцов - указывается цифирка сколько отображать столбцов из источника строк
строка ширина столбцов - указывается ширина отображаемых столбцов в см.(при нескольких столбцах через точку с запятой)

Настраивая правильно эти пять строк получаем различные варианты отображения поля со списком
Например в селект имеет столбцы id и ФИО
нужно показывать фамилию а в таблу вносить Id
Макет
количество строк - 2
ширина строк - 0см;4см
Данные
данные - тут упущу
источник строк - тоже упущу
присоединенный столбец -1

Если обращение ведется к неприсоединенному столбцу поля со списком
то обращатся надо через Column

например
forms![имя формы]![имя поляСоСписком].Column(1) - полное обращение к полю в т.ч. и для другой формы
Me![имя поляСоСписком].Column(1) - краткое обращение для той же формы
forms![имя формы]![имя поляСоСписком].Column("ФИО") - не знаю так правильно или нет (вроде должно) (все три варианта примерно одинаковы)

цифирка в скобках Column это номер столбца в Select отсчет идет от 0

После того как выбраны значения в поисковых полях со списком нужно на форму установить фильтр или поменять форме источник строк RecordSource

  Ответить  
 
 автор: snipe   (22.03.2010 в 13:12)   личное сообщение
 
 

И еще
не уверен что мои познания правильные однако

свойство Text можно получить только в том случае если фокус находится на поле c которого пытаются считать это свойство
т.е. в данном случае вы не можете получить то что написано в другом поле используя это свойство

  Ответить  
 
 автор: gloom   (22.03.2010 в 13:34)   личное сообщение
 
 

Ок, с этим разобрался, номер подшивки показывает, но теперь очередная засада.
Вставил в источник строк ПоляСоСписком, которое у меня в таблице для выбора номера журнала, такой запрос:

SELECT ЖУРНАЛЫ.НЖ
FROM ЖУРНАЛЫ
WHERE (((ЖУРНАЛЫ.НП)=" & ПолеСоСписком16.Text & "));

Теперь он пишет ошибку: Несоответствие типов данных в выражении условия отбора.
Т.е., я ему строку пытаюсь для сравнения дать, нужно число.
Какие функции преобразования типов в Access? :)
Пойду гуглить, по этому поводу.

Спасибо за помощь!!!

  Ответить  
 
 автор: gloom   (22.03.2010 в 15:09)   личное сообщение
 
 

Что-то не выходит, у кого-нибудь есть соображения как побороть данный казус? =(

  Ответить  
 
 автор: snipe   (22.03.2010 в 17:02)   личное сообщение
 
 

Давай завтра
проснёшся- че нибудь придумаю

  Ответить  
 
 автор: snipe   (23.03.2010 в 06:34)   личное сообщение
26 Кб.
 
 

Пока вот так =>

  Ответить  
 
 автор: gloom   (23.03.2010 в 10:38)   личное сообщение
 
 

Огромное спасибо за помощь и содействие! Буду разбираться.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList