И снова - как убрать пустые картинки в отчёте?

NikVad
Дата: 15.12.2011 17:37:40
Поиском поискал - темы были, ответа нет.

Итак - есть база - текст+картинка (библиография). Текст есть всегда, картинка как когда.
В отчёте, естественно, лезет рамка заданного размера или с картинкой, или пустая.
Вопрос - как убрать это "пустое" место из отчёта?
Что бы не было:
книжка 1
рисунок
книжка 2
пустой рисунок
книжка 3
рисунок,

а было просто:
книжка 1
рисунок
книжка 2
книжка 3
рисунок,
alvk
Дата: 15.12.2011 17:41:35
NikVad,

поставьте сжатие - да в области данных, а на включении нарисуйте пустым рисункам visible = false.
NikVad
Дата: 15.12.2011 17:53:14
alvk,

--- поставьте сжатие - да в области данных,
поставил.
--- а на включении нарисуйте пустым рисункам visible = false.
не понял...
где нарисовать?




Access 2003, если что.
mds_world
Дата: 15.12.2011 19:58:52
NikVad
--- а на включении нарисуйте пустым рисункам visible = false.
не понял...
где нарисовать?

В процедуре на событии Форматирование соответствующего раздела отчета. Проверяете наличие рисунка и, если его нет, ставите контрол.визибле=фалсе, иначе контрол.визибле=тру
NikVad
Дата: 16.12.2011 11:10:00
mds_world,

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

--- ставите контрол.визибле=фалсе, иначе контрол.визибле=тру
а это как? честно, просто не знаю.
написал строчку (KNV - это ОЛЕ-поле с картинкой или NULLём)
-- If IsNull(Me.KNV) Then
это работает, а дальше?
... Control.Visible = false ? Ругается :)
mds_world
Дата: 16.12.2011 11:25:12
Me.KNV.visible=not isnull(Me.KNV)
NikVad
Дата: 16.12.2011 11:55:10
Не помогает.
То есть рамку не рисует, но пустое место ровно заказанного размера отображается.
И, кстати, если вписать что-то вроде:
If IsNull(Me.KNV) = True Then Me!KNV.Height = 0
тоже не помогает. Выоста-то делается "ноль", но всё равно - пустое место "под картинку".
mds_world
Дата: 16.12.2011 12:40:53
NikVad
Не помогает.
То есть рамку не рисует, но пустое место ровно заказанного размера отображается.
И, кстати, если вписать что-то вроде:
If IsNull(Me.KNV) = True Then Me!KNV.Height = 0
тоже не помогает. Выоста-то делается "ноль", но всё равно - пустое место "под картинку".

Если все картинки одинаковой высоты, то можно так:
на открытии отчета определяете публичные переменные hh - обычная высота рисунка, hsec - обычная высота области данных.
На форматировании ОбластиДанных (Section(0)) переопределяете высоты
Option Compare Database
Option Explicit
Dim hh, hsec

Private Sub Report_Open(Cancel As Integer)
    hh = Me.KNV.Height
    hsec = Me.Section(0).Height
End Sub

Private Sub ОбластьДанных_Format(Cancel As Integer, FormatCount As Integer)
    If Not IsNull(Me.KNV) Then
        Me.KNV.Height = hh
        Me.Section(0).Height = hsec
    Else
        Me.KNV.Height = 0
        Me.Section(0).Height = hsec - hh
    End If
End Sub
NikVad
Дата: 16.12.2011 14:17:18
ВОТ!!
Вот теперь получилось!
И, кстати, "Если все картинки одинаковой высоты" - не обязательно.
Огромное спасибо!

Который раз уже сталкиваюсь - вроде бы очевидная вещь - ан нет, не сделана!