Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 3

Динамическое формирование отчета

03.06.2013, 17:55. Показов 2067. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такая ситуация. С помощью аксесса у нас печатаются этикетки на товар. Все было хорошо, когда продукция делилась на крупные категории. Был создан отчет на каждый тип продукции. Сейчас всё веселее. Разные артикулы (а их туева хуча) требуют наличия на этикетке разных комбинаций значков (СТБ, РСТ, ИСО и т.п.). Нашел такой метод решения (уже с моими правками):
Visual Basic
1
2
3
4
5
6
7
8
9
Sub ОбластьДанных1_Print (Cancel As Integer, PrintCount As Integer)
 
    If (Me!артикул.value = "12С23-ВШ") Or (Me!артикул.value = "8С5-ВШ") Or (Me!артикул.value = "07С6-ВШ") Or (Me!артикул.value = "08С11-ВШ") Or (Me!артикул.value = "04С5-ВШ") Then
        Me!ТР.Visible = True
    Else
        Me!ТР.Visible = False
    End If
 
End Sub
(ТР-это имя картинки)
Однако это слишком коряво, и обработать так сотню - другую артикулов нереально. Хочу создать таблицу-справочник с полями вроде "артикул","Символ1","Символ2"... и запросом получать список артикулов для каждого символа. Но как это оформить на ВБА? тут я нуб, прошу помощи с синтаксисом.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.06.2013, 17:55
Ответы с готовыми решениями:

Формирование отчёта
Столкнулся с проблемой, как сделать так, чтобы на форме пользователь выбирал различные данные и с помощью этих данных формулировался отчёт,...

формирование отчета
ВСЕМ ПРИВЕТ!!мало что понимаю в VBA.у меня есть форма в ней при помощи ниспадающих списков я выбираю мах дату и мin дату, обьект.как...

Формирование отчета
Здравствуйте, создаю базу данных для своего предприятия, для упрощения работы с инвентаризацией ну и контролем за расходными материалами. ...

5
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,934
Записей в блоге: 4
03.06.2013, 19:14
угадать ваши реалии без базы --невозможно
нужны
--примерный вид ваших наклеек
--по скольку штук печатается
0
383 / 209 / 5
Регистрация: 29.05.2013
Сообщений: 337
03.06.2013, 20:58
Цитата Сообщение от alexalexmart Посмотреть сообщение
(СТБ, РСТ, ИСО и т.п.).
и т.п. Это сколько? 10? 20?

Ограничение на количество полей (столбцов) 256

Я бы сделал так:
1. В таблицу где храниться поле Артикул добавил логические поля (галочки) СТБ, РСТ, ИСО, и т.п.
2. Потом в форму где эти Артикулы живут добавил бы их в виде галочек (Элемент Флажок).
3. Посадил бы манагера, что бы он все отптичковал правильно. Ну или сам запросами на обновление если есть логика.
4. В отчете их добавил в источник данных.
5. Потом:
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
Sub ОбластьДанных1_Print (Cancel As Integer, PrintCount As Integer)
 
If Me!СТБ Then 
Me!ТР.Visible = True
Else
Me!ТР.Visible = False
End If
 
If Me!РСТ Then 
Me!ТР_2.Visible = True
Else
Me!ТР_2.Visible = False
End If
 
If Me!ИСО Then 
Me!ТР_3.Visible = True
Else
Me!ТР_3.Visible = False
End If
 
'и т.п.
 
End Sub
TP_2 и TP_3 Взялось из моего предположения, что для СТБ свой TP, а для РСТ другой TP, для ИСО третий.

Манагер получает инструмент управлять отображением значков через интерфейс, а не редактирование VB. Что удобно, и правильно.

Можно по другому, но в другой серии.

Добавлено через 15 минут
Сори, Me! лишним будет. И "= True" для понятности.
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
Sub ОбластьДанных1_Print (Cancel As Integer, PrintCount As Integer)
 
If СТБ = True Then 
Me!ТР.Visible = True
Else
Me!ТР.Visible = False
End If
 
If РСТ = True Then 
Me!ТР_2.Visible = True
Else
Me!ТР_2.Visible = False
End If
 
If ИСО = True Then 
Me!ТР_3.Visible = True
Else
Me!ТР_3.Visible = False
End If
 
'и т.п.
 
End Sub
1
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 3
04.06.2013, 09:02  [ТС]
Спасибо за подсказку. Я к вечеру так и начал думать, что в коде ВБА надо следить за свойствами чекбоксов в поле отчета, а не обрабатывать дополнительные запросы. В принципе, теперь можно и выстроить все видимые значки по порядку, чтобы небыло "дырок".
Оффтоп: просветите темного, что такое это "МЕ!". Мне делфи с паскалем как-то привычнее, тут теряюсь.
0
3357 / 1776 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
04.06.2013, 09:35
Лучший ответ Сообщение было отмечено как решение

Решение

Все это-->
Кликните здесь для просмотра всего текста
Цитата Сообщение от GenaY Посмотреть сообщение
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub ОбластьДанных1_Print (Cancel As Integer, PrintCount As Integer)
If СТБ = True Then 
Me!ТР.Visible = True
Else
Me!ТР.Visible = False
End If
If РСТ = True Then 
Me!ТР_2.Visible = True
Else
Me!ТР_2.Visible = False
End If
If ИСО = True Then 
Me!ТР_3.Visible = True
Else
Me!ТР_3.Visible = False
End If
'и т.п.
End Sub


Можно записать как:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
Sub ОбластьДанных1_Print (Cancel As Integer, PrintCount As Integer)
Me!ТР.Visible=СТБ
Me!ТР_2.Visible=РСТ 
Me!ТР_3.Visible=ИСО 
'и т.п. 
End Sub


Но,ИМХО,исходя из:
Цитата Сообщение от alexalexmart Посмотреть сообщение
и обработать так сотню - другую артикулов нереально.
Это не решение..
Думаю, вернО будет группировать необходимые артикулы и по группам, относящимся к артикулам, отображать/скрывать.

Добавлено через 8 минут
А вообще присоединяюсь к shanemac51.
Без отчета не понятно, что Вы хотите.
Вначале пишите о зависимости изображения от группы значений в поле "Артикул".
А после пишите о зависимости одного изображения от одного флажка.

Добавлено через 10 минут
Кстати, по поводу групп, о которых я говорил...Чтобы понятнее было о чем речь.
Вот эту строку:
Visual Basic
1
(Me!артикул.value = "12С23-ВШ") Or (Me!артикул.value = "8С5-ВШ") Or (Me!артикул.value = "07С6-ВШ") Or (Me!артикул.value = "08С11-ВШ") Or (Me!артикул.value = "04С5-ВШ")
Нужно просто объединить значения поля "Артикул" в одну группу...Т.е. добавить одно поле в таблице, которое будет равно к примеру "1" для всех этих перечисленных названий.
Соответственно отображать изображение в зависимости от группы.

Но смущают строки:
Visual Basic
1
2
Me!ТР.Visible=СТБ
Me!ТР_2.Visible=РСТ
Так как тогда не понятно чего Вы хотите..
3
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 3
04.06.2013, 11:42  [ТС]
to agapov stas: Просто когда я открывал топик, я сам не знал точно, как оно должно быть. Переварив первый толковый ответ, я так и поступил. Завел таблицу-справочник (вернее она уже была, я добавил к ней логический поля "тСТБ","тРСТ", "тТР" и т.п.), заполнил эти поля, на всех отчетах разместил группу невидимых чекбоксов с привязкой к этим полям, и все картинки(по умолч невидимые). А дальше в процедуре печати обработал видимость каждой картинки. Теперь кладовщик сам может настраивать отображение картинок, просто поправив таблицу регистрации артикулов. По большому счету, когда-нибудь я выпилю к ... все эти отчеты(для печати этикеток) и создам два, но формируемые динамически.
П.С. Спасибо за краткий вариант записи (без иф).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.06.2013, 11:42
Помогаю со студенческими работами здесь

формирование отчета
Здравствуйте! Подскажите в чем ошибка! Private Sub BtmOtchet_Click() On Error GoTo Err_BtmOtchet_Click Dim stDocName As String...

Формирование отчёта
Здравствуйте. Нужна помощь по созданию отчета в МА 2007. Есть простенькая БД регистрации обращений граждан (ФИО, адрес, телефон,...

Формирование отчета
Подскажите как убрать в отчете верхний колонтитул в разделе Примечание отчета. Добавлено через 11 минут Нашел Private Sub...

Формирование отчета по условию
Привет всем! Есть отчет, который выводит необходимые столбцы из таблицы Основная. Необходимо создать макрос/отчет таким образом чтобы за 5...

Формирование отчёта в Excel
Добрый вечер! Есть форма (см. картинку 1), отображающая таблицу с фильтрами (вверху столбцов). При выводе всего этого дела в Excel...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru