Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912

recordsource в отчете

22.02.2014, 14:05. Показов 2083. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый.
Накопился у меня один вопрос.
как бы мне после проверки условия и если оно выполняется , тогда в recordsource вставить запрос и показать пользователю записи в отчете
если же, условие не выполниться, то вывести пустой отчет ( думаю в поле"Сообщение" сделать надпись, типо "В данный момент для вас новостей нет" )

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Dim strNewRecord As String
Dim Ord As Variant
Dim Le As Variant
 
Ord = Me.OrderMan
Le = Me.LeadMan
 
If (Ord Or Le) = CurrentUser() Then
   ' 
Else
   
End If
Запрос на котором сейчас построен Отчет "Новости"
Кликните здесь для просмотра всего текста
SQL
1
2
3
SELECT Новости.Код, Новости.Дата, Новости.Сообщение, ТипНовости.НазваниеНовости, Новости.Запись, Новости.ТипНовости, EmployeeNews.Сотрудник, Новости.LeadMan, Новости.OrderMan
FROM (Employee RIGHT JOIN EmployeeNews ON Employee.Код = EmployeeNews.Сотрудник) LEFT JOIN (ТипНовости RIGHT JOIN Новости ON ТипНовости.Код = Новости.ТипНовости) ON EmployeeNews.ТипНовости = Новости.ТипНовости
WHERE (((EmployeeNews.Сотрудник)=CurrentUser()));
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.02.2014, 14:05
Ответы с готовыми решениями:

RecordSource
Как свойству RecordSource формы в режиме таблицы передать не строку запроса, запрос или таблицу, а RecordSet ?

RecordSource=запрос
Существует рабочий отчёт на основе запроса (См. ниже). Сейчас потребовалось отчёт улучшить, но в запросе уже ничего не сделаешь....

RecordSource подчиненной формы
Есть общая свободная форма (форма1) с полями и комбобоксами, по которым делается выборка данных. Так же, на ней расположена форма в режиме...

8
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
22.02.2014, 16:50
Цитата Сообщение от duh_si Посмотреть сообщение
как бы мне после проверки условия и если оно выполняется , тогда в recordsource вставить запрос и показать пользователю записи в отчете
если же, условие не выполниться, то вывести пустой отчет ( думаю в поле"Сообщение" сделать надпись, типо "В данный момент для вас новостей нет" )
На событии Open отчета проверяйте условие и, если оно не соблюдается, присваиваете параметру Cancel процедуры открытия значение True: Cancel=True. Там же можно записвть мсгбокс с сообщением. Сообщение вылезет, отчет не откроется.
1
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
23.02.2014, 11:16  [ТС]
Понимаете, я бы мог и в кнопке открывающий этот отчет, проверять это условие и выдавать либо сообщение о невозможности показать отчет, либо войти в него.

А у меня идея, вывести отчет в любом случае, но в первом ( если условие соблюдено ) это показать пользователю содержимое, а во втором показать, но пустой, единственное в одном контроле будет надпись .

Вот что то типо такого, незнаю можно ли так делать или нет?
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub Report_Load()
Dim strNewRecord As String
Dim Ord As Variant
Dim Le As Variant
 
Ord = Me.OrderMan
Le = Me.LeadMan
 
strNewRecord = "SELECT Новости.Код, Новости.Дата, Новости.Сообщение, ТипНовости.НазваниеНовости, Новости.Запись, Новости.ТипНовости, EmployeeNews.Сотрудник, Новости.LeadMan, Новости.OrderMan" _
  & "FROM (Employee RIGHT JOIN EmployeeNews ON Employee.Код = EmployeeNews.Сотрудник) LEFT JOIN (ТипНовости RIGHT JOIN Новости ON ТипНовости.Код = Новости.ТипНовости) ON EmployeeNews.ТипНовости = Новости.ТипНовости" _
  & "WHERE (((EmployeeNews.Сотрудник)=CurrentUser()));"
 
If (Ord Or Le) = CurrentUser() Then
Me.RecordSource = strNewRecord
Else
Me.RecordSource = ""
Me.Сообщение.Text = "Красивое Большое сообщение Пользователю"
End If
End Sub
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
23.02.2014, 11:45
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Dim IsEmptySource As Logical 'Если источник пуст IsEmptySource=False, иначе True
 
Private Sub Report_Open() 'Источник отчета задается в событии Open
Dim strNewRecord As String
Dim Ord As Variant
Dim Le As Variant
 
Ord = Me.OrderMan
Le = Me.LeadMan
 
strNewRecord = "SELECT Новости.Код, Новости.Дата, Новости.Сообщение, ТипНовости.НазваниеНовости, Новости.Запись, Новости.ТипНовости, EmployeeNews.Сотрудник, Новости.LeadMan, Новости.OrderMan" _
  & "FROM (Employee RIGHT JOIN EmployeeNews ON Employee.Код = EmployeeNews.Сотрудник) LEFT JOIN (ТипНовости RIGHT JOIN Новости ON ТипНовости.Код = Новости.ТипНовости) ON EmployeeNews.ТипНовости = Новости.ТипНовости" _
  & "WHERE (((EmployeeNews.Сотрудник)=CurrentUser()));"
 
If (Ord Or Le) = CurrentUser() Then
   Me.RecordSource = strNewRecord
   IsEmptySource=True
Else
   Me.RecordSource = ""
   IsEmptySource=False
End If
End Sub
 
'Задавать значение контролу надо в событии Format секции контрола. Предположим, что в области данных
Private Sub ОбластьДанных_Format(Cancel As Integer, FormatCount As Integer)
   If not IsEmptySource Then
      Me.Сообщение = "Красивое Большое сообщение Пользователю"
   Else
      Me.Сообщение = "" 'или Me.Сообщение.Visible=False
   End If
End Sub
И еще
Если контрол Сообщение поле:
Visual Basic
1
Me.Сообщение = "Красивое Большое сообщение Пользователю"
Если Сообщение надпись (Label):
Visual Basic
1
Me.Сообщение.Caption = "Красивое Большое сообщение Пользователю"
1
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
23.02.2014, 12:40  [ТС]
Когда компилирую, выдает ошибку на переменную IsEmptySource As Logical

И еще вопрос, в самом запросе в Источнике записей нужно убрать запрос или можно оставить?
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
23.02.2014, 12:57
Цитата Сообщение от duh_si Посмотреть сообщение
Когда компилирую, выдает ошибку на переменную IsEmptySource As Logical
Черт, Boolean конечно :-(

Цитата Сообщение от duh_si Посмотреть сообщение
И еще вопрос, в самом запросе в Источнике записей нужно убрать запрос или можно оставить?
Да без разницы. Вы ж его все равно в коде назначаете. Но лучше убрать для прозрачности. Чтобы потом не путаться.
1
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
23.02.2014, 13:57  [ТС]
Посидел тут над кодом, подумал, мне кажется я не так пытаюсь свою задачу решить и вас в заблуждение ввожу.

В общем то чего добиться мне нужно, это некоторым заинтересованным пользователям показывать новости.

предыстория, есть заказ, он полностью заполнен , включая OrderMan и LeadMan
Произошла оплата или приемка этого заказа. Все что нужно, собирается в сообщение и записывается в табл.Новости.

Условие 1... пользователям доступны новости ( табл.EmployeeNews ) это работает

Условие 2 ... И вот теперь показать эту новость нужно не всем пользователям, которые подписанны на эту новость, а только тем которые были в этом заказе, т.е только OrderMan и LeadMan этого заказа
как бы остальным лишняя информация не к чему.
Вложения
Тип файла: zip ОтчетДляНовостей.zip (48.6 Кб, 6 просмотров)
0
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
23.02.2014, 17:33  [ТС]
Подскажите, а можно как то в запросе НовостиДляОтчета в полях LeadMan и OrderMan сделать проверку на CurrentUser(), .. Если в любом из полей он присутствует, тогда показать эту запись в отчете,? Иначе не показывать.
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
23.02.2014, 20:38
Лучший ответ Сообщение было отмечено duh_si как решение

Решение

Цитата Сообщение от duh_si Посмотреть сообщение
Подскажите, а можно как то в запросе НовостиДляОтчета в полях LeadMan и OrderMan сделать проверку на CurrentUser()
Может быть так? Чисто по наитию, что к чему не знаю
SQL
1
2
SELECT * FROM НовостиДляОтчета
WHERE LeadMan=CurrentUser() OR OrderMan=CurrentUser()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.02.2014, 20:38
Помогаю со студенческими работами здесь

Еще раз о RecordSource
В одном и том же главном отчете Подотчет должен присутствовать 5 раз(!), один под другим, но с разным источником строк!

RecordSource - как перебрать все???
Нужно что бы в таблицу выводилось все содержимое базы - как получать имена RecordSource и перебрать все имеющиеся в подключенной базе? ...

Почему закрыт объект RecordSource?
мне нуижно запросом выбрать некоторые значения из таблиц, потом каждое из этих значений занести в другие таблицы. С запросом проблем не...

Выборка в базе mdb(RecordSource)?
Как сделать выборку в одном столбце по двум значениям? И как сделать выборку в двух столбцах по одному значению?

Динамический RecordSource для Списка
Бодрый день! Задачка(Access97)-есть подчиненная форма в режиме таблицы,2-а столбца: |Главный|V|Подчиненный|V| Как выбрав Главный, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru