Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - [решено] MS Access. Отчёт, базирующийся на запросе с отбором данных для вывода - как сделать?

Ответить
Настройки темы
Прочие БД - [решено] MS Access. Отчёт, базирующийся на запросе с отбором данных для вывода - как сделать?

Новый участник


Сообщения: 30
Благодарности: 4

Профиль | Отправить PM | Цитировать


Преамбула:
Есть MS Access база с 1 таблицей. Есть запрос по этой базе выбирающий следующие поля : ФИО и номера сертификатов. Всего 25 видов сертификатов, но не у каждого человека есть все, может быть 1 сертификат, а может быть 5 сертификатов. И есть отчёт, построенный на основании вышеуказанного запроса.

Амбула:
Необходимо выводить в отчёт ФИО и название сертификата, которого нету у данного человека, т.е. скрывать те сертификаты, которые он получил. Как я понимаю - нужно построчно просматривать запрос и проверять на наличие номера сертификата, если есть номер - скрывать поле с этим сертификатом в отчёте, но не знаю как это сделать.

Прошу помощи.

Отправлено: 11:35, 13-07-2010

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Darkvar, получается, что структура такая таблицы?
Код: Выделить весь код
КОД
ФИО
Сертификат
А данные примерно такие(представим, что всего 2 сертификата):

Код: Выделить весь код
1 Иванов Сер1
2 Иванов Сер2
3 Петров Сер2
И запрос Должен вывести

Код: Выделить весь код
3 Петров Сер1
Т.к. у Иванова есть оба сертификата, то он и не выведется в результате. Верно?

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:31, 14-07-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
SELECT Т1.ФИО, Т2.Сертификат
FROM Таблица1 AS Т1, Таблица1 AS Т2
WHERE NOT Exists (select Т2.Сертификат from Таблица1 Т2 where Т1.ФИО=Т2.ФИО and т1.Сертификат<>Т2.Сертификат) and Т1.Сертификат <>Т2.Сертификат;
Выведет

Код: Выделить весь код
Петров Сер1
Проверял и тестировал в Access 2007. Работает.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 02:14, 14-07-2010 | #3


Новый участник


Сообщения: 30
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата Delirium:
А данные примерно такие(представим, что всего 2 сертификата):
Код:
1 Иванов Сер1
2 Иванов Сер2
3 Петров Сер2 »
Немножко не так.
Код: Выделить весь код
1 Иванов Сер1  Сер2
2 Петров Сер1
И вывести должно
Код: Выделить весь код
Петров Сер1
Поле ФИО в таблице уникально и не может повторяться, приходиться вот так изгаляться
И ещё только что узнал, что у разных сертификатов может быть один и тот же номер/название. Например OD 123 ... И как можно с такими людьми работать...
Выручайте, а то это тихий ужас какой-то

Последний раз редактировалось Darkvar, 14-07-2010 в 10:47. Причина: Идиотизм сотрудников


Отправлено: 10:27, 14-07-2010 | #4


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Не понял, так у вас структура таблицы такая? :

Код: Выделить весь код
Код
ФИО
Сер1
Сер2
Сер3
....
Сер25
То есть 25 полей в таблице и в поле может быть какой то признак сертификата? Приведите ПРАВИЛЬНУЮ структуру, тогда и плясать будем. Лучшим вариантов будет вложение пустой базы (с 1-2 записями, чтобы понятней было).

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:33, 15-07-2010 | #5


Новый участник


Сообщения: 30
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата Delirium:
Код:
Код
ФИО
Сер1
Сер2
Сер3
....
Сер25 »
Абсолютно верно. Только поля называются
Код: Выделить весь код
Курс1Серт№
Курс2Серт№
...
Курс25Серт№
И в этих полях записаны номера сертификатов, которые являются признаком наличия сертификата соответственно. Причём номера сертификатов разных курсов могут совпадать, например:
Код: Выделить весь код
Фамилия   Курс1Серт№ ... Курс14Серт№
Петров      OD 123           OD123
Увы, проектировал эту базу не я, поэтому возникла такая проблема с повторяющимися номерами сертификатов.

Отправлено: 10:14, 15-07-2010 | #6


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Мда, задача усложнилась тем, что каждый сертификат в отдельном столбце, а Access либо выводит столбец, либо нет при создании запроса. Теоретически могу сделать запрос, который выведет результат примерно в таком виде:
Код: Выделить весь код
Иванов Сер1-OD123, Сер2-OD121, Сер3-OD125
Т.е. В одном поле будет фио, а в другом - через зяпятую-наименование столбца с сертификатом и имя. Устроит так?

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 02:10, 16-07-2010 | #7


ИО Капитана Очевидности


Contributor


Сообщения: 5387
Благодарности: 1105

Профиль | Отправить PM | Цитировать


Цитата Darkvar:
Поле ФИО в таблице уникально и не может повторяться, приходиться вот так изгаляться »
"Головы им нужно поменять, а не конституцию" ((с) Крабе)

Таблицу эту нужно переделать, потому что в настоящее время она просто неработоспособна.
Создаётся два столбца - ФИО и Сертификат - и объявляется первичный ключ на оба поля.

-------
Самое совершенное оружие, которым забиты арсеналы богатых и процветающих наций, может легко уничтожить необразованного, больного, бедного и голодного. Но оно не может уничтожить невежество, болезнь, нищету и голод. (Фидель Кастро)

Почему всех осужденных за измену Родине при Сталине реабилитировали при Горбачёве по отсутствию состава преступления? Потому что при Горбачёве измену Родине перестали считать преступлением.


Отправлено: 05:58, 16-07-2010 | #8


Новый участник


Сообщения: 30
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата Delirium:
Мда, задача усложнилась тем, что каждый сертификат в отдельном столбце, а Access либо выводит столбец, либо нет при создании запроса. Теоретически могу сделать запрос, который выведет результат примерно в таком виде:
Код:
Иванов Сер1-OD123, Сер2-OD121, Сер3-OD125
Т.е. В одном поле будет фио, а в другом - через зяпятую-наименование столбца с сертификатом и имя. Устроит так? »
Delirium, мне-то как раз и нужно, чтоб выводило наименование столбца с сертификатом, которого нету у человека. И да - подойдёт, если будет всего 2 столбца:
1) ФИО
2) Перечисление сертификатов, которых нету у человека через запятую. Номера сертификатов даже и не нужны, достаточно просто наименования этого сертификата.

To El Scorpio,
Ну отдаю честь Вашему "званию" :"Спасибо, Кэп" .
Базу, увы, переделать не могу ибо она уже полностью забита, созданы отчёты, запросы и пр. Как она до сих пор работала - загадка для всех. А человек, который "проектировал" базу - не имеет ни малейшего понятия о структуре БД.

Отправлено: 10:37, 16-07-2010 | #9


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата Darkvar:
Номера сертификатов даже и не нужны, достаточно просто наименования этого сертификата. »
Как можно вывести наименование сертификата, которого НЕТ? А если этого сертификата нет ни у одного пользователя? Можно, конечно, создать небольшое соответствие номеров названиям, но, в случае отсутствия сертификата у всех, будет тупить...


Создаем запрос, в котором пишем вот такой хитрый запрос:


Код: Выделить весь код
SELECT Таблица1.ФИО, 
IIf(Таблица1.Сер1 is null,' Серт1  ','')  + 
IIf(Таблица1.Сер2 is null,' Серт2 ','')   + 
IIf(Таблица1.Сер3 is null,' Серт3 ','')   + 
IIf(Таблица1.Сер4 is null,' Серт4 ','')   +
IIf(Таблица1.Сер5 is null,' Серт5 ','')   + 
IIf(Таблица1.Сер6 is null,' Серт6 ','')   + 
IIf(Таблица1.Сер7 is null,' Серт7 ','') AS ["Сертификаты"]

FROM Таблица1
WHERE 
Таблица1.Сер1 is null OR 
Таблица1.Сер2 is null OR 
Таблица1.Сер3 is null OR 
Таблица1.Сер4 is null OR 
Таблица1.Сер5 is null OR 
Таблица1.Сер6 is null OR 
Таблица1.Сер7 is null

Данный пример имеет таблицу (Таблица1), в которой есть 7 Столбцов:

Код: Выделить весь код
Код	ФИО	  Сер1	Сер2	Сер3	Сер4	Сер5	Сер6	Сер7

На выходе получаем вот такой результат:


Код: Выделить весь код
ФИО	"Сертификаты"
Петров	 Серт1   Серт2  Серт3  Серт4  Серт5 
Сидоров	 Серт7
В исходной таблице у Иванова есть все 7 сертификатов, поэтому он не выводится в результат. У Сидорова нет только 7-го сертификата.

El Scorpio, согласен, структура базы ужаснейшая, но, зачастую, увы, приходится работать и с такими вот ляпусами, куда ж деваться

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:13, 19-07-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - [решено] MS Access. Отчёт, базирующийся на запросе с отбором данных для вывода - как сделать?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Система - Как изменить текст в окне ОТПРАВИТЬ ОТЧЁТ МАЙКРОСОФТ? Klam Хочу все знать 17 11-11-2009 06:21
MSFT SQL Server - импорт данных из Контур в ms access seman Программирование и базы данных 3 30-09-2009 09:38
[решено] Запрет вывода данных в запросе MySQL по определенному id записи venuko Вебмастеру 4 31-01-2009 22:07
MySQL - помогите сделать запрос. обьединение таблиц в запросе running-frag Программирование и базы данных 5 24-12-2008 11:05
Прочие БД - Подскажите пожулуста как это сделать базу данных с прикрепленными фотками Gurza258 Программирование и базы данных 4 03-08-2008 10:53




 
Переход