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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Отчет в виде таблицы
 
 автор: Едрёныч   (17.05.2014 в 14:24)   личное сообщение
 
 

Подскажите как можно вывести информацию в отчете в виде таблицы, а не полосатого списка? Если даже я делаю видимыми границы полей, то между ними все равно остается расстояние или линии становятся толстыми за счет сращивания. Также хочу узнать как при отправке по почте в виде ПДФ присвоить отчету другое название.

  Ответить  
 
 автор: Alex   (18.05.2014 в 10:42)   личное сообщение
 
 

Вот хорошая штука! Где-то спёр, где - не помню

Процедура создания в отчетах таблиц с изменяемой высотой строк.


Public Sub DrawTableInDetailSection(objReportSection As Section)
'==============================================================
'es 15.12.2004
'Для "красивого" обрамления в таблицу области данных табличного
'отчета c изменяемой высотой полей (и соответственно строк целиком).
'Аргумент: objReportSection = Ссылка на область данных отчета
' "Вешается" на событие PRINT области данных отчета - например так:
'     Call DrawTableInDetailSection(Me.ОбластьДанных)
'Разумеется контуры полей в области данных отчета должны быть невидимы
'==============================================================
Dim DataControl As Control    'обект текущ. контроль
Dim x As Integer
Dim MaxHeight As Integer      'макс. высота в тек строке
Dim MinX As Integer           'координата начала горизонтальной линии
Dim MaxX As Integer           'координата конца горизонтальной линии
Dim StartX As Integer         'координата начала линии по оси X
Dim EndX As Integer           'координата конца линии по оси X
Dim StartY As Integer         'координата начала линии по оси Y
Dim EndY As Integer           'координата конца линии по оси Y

On Error GoTo DrawTableInDetailSectionERR
    MaxX = 0
    MinX = objReportSection.Parent.Width
    With objReportSection
        'Находим макс высоту в строке
            For Each DataControl In .Controls
                x = DataControl.Height
                If MaxHeight < x Then MaxHeight = x
                
                x = DataControl.Left + DataControl.Width
                If MaxX < x Then MaxX = x
                
                x = DataControl.Left
                If MinX > x Then MinX = x
                    
            Next
        'рисуем вертикальную в Начале строки
            EndY = MaxHeight
            .Parent.Line (MinX, StartY)-(MinX, EndY)
        'рисуем горизонтальную Над строкой
            .Parent.Line (MinX, StartY)-(MaxX, StartY)
        
        'рисуем горизонтальную под строкой
            .Parent.Line (MinX, EndY)-(MaxX, EndY)
        
        'рисуем вертикальные линии справа от каждого контрола
            For Each DataControl In .Controls
                StartX = DataControl.Left + DataControl.Width
                EndX = StartX
                .Parent.Line (StartX, StartY)-(StartX, EndY)
            Next
    End With
    Exit Sub

DrawTableInDetailSectionERR:
    Err.Clear
End Sub

  Ответить  
 
 автор: Едрёныч   (18.05.2014 в 18:37)   личное сообщение
 
 

я вообще-то удивлен, что нет стандартного решения. Мы привыкли к отчетам виде таблиц, а не в виде полосатых списков. Я поискал и нашел как " сростить" поля через макет. Как насчет присвоения пользовательского имени при отправке файла в формате ПДФ?

  Ответить  
 
 автор: Дядя Федор   (19.05.2014 в 11:57)   личное сообщение
 
 

PDF: http://www.lebans.com/reporttopdf.htm

А с 2007 есть команда сохранения в пдф.

  Ответить  
 
 автор: Дядя Федор   (19.05.2014 в 11:58)   личное сообщение
 
 

Еще вариант

'Обрисовка линиями или прямоугольником
Public Sub Obrisovka(MyReportSection As Section, Optional L_Color As Long = vbBlack, Optional BBF As Boolean = True)
    
Dim ctl As Control, lngHeight As Long
On Error GoTo DrawTableInDetailSectionStep_Error

With MyReportSection
    
    For Each ctl In .Controls
    If ctl.Visible = True And ctl.Height + ctl.Top > lngHeight Then lngHeight = ctl.Height + ctl.Top
    Next ctl
    'Рисyем pамки вокруг всех элементов раздела
    For Each ctl In .Controls
         Select Case BBF
            Case True
            If ctl.Visible = True Then .Parent.Line (ctl.Left, ctl.Top)-Step(ctl.Width, lngHeight), L_Color, B
            Case False
            If ctl.Visible = True Then .Parent.Line (ctl.Left, ctl.Top)-Step(ctl.Width, lngHeight), L_Color, BF
         End Select
    Next ctl
    
End With

   On Error GoTo 0
   Exit Sub

DrawTableInDetailSectionStep_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Obrisovka of Module MdlReportFunctions"
End Sub

  Ответить  
 
 автор: kot_k_k   (19.05.2014 в 13:17)   личное сообщение
 
 

всегда рисую линиями - окантовку не применяю бо фигня

  Ответить  
 
 автор: Дядя Федор   (19.05.2014 в 13:50)   личное сообщение
 
 


всегда рисую линиями - окантовку не применяю бо фигня



Дело вкуса.
А, вообще, иногда лучше даже прямоугольником.
См., например, тему http://hiprog.com/forum/read.php?id_forum=1&id_theme=11491&page=2

  Ответить  
 
 автор: Едрёныч   (19.05.2014 в 21:12)   личное сообщение
 
 

нет, Дядя Федор, сохранить в ПДФ я как раз и не хочу. У меня этих документов каждый день штук по пять. Я именно хочу отправить ПДФ под другим именем без сохранения.Для отправки без сохранения есть стандартная возможность, но имя присвоить невозможно. Имя дается по имени отчета.

  Ответить  
 
 автор: Дядя Федор   (20.05.2014 в 12:40)   личное сообщение
 
 

Как вариант: сохранить, отправить, удалить

  Ответить  
 
 автор: shanemac51   (20.05.2014 в 13:45)   личное сообщение
 
 

я 95 % отчетов из ворд-ассесс-ексель-фохпро формирую программно в НТМ-формате(в стандартных тегах) для
--просмотра броузером
--печати вордом с автоподбором ширины столбцов
--открывается екселем,оо...

очень удобно

но почему-то этот прием мало используется.
не знаю --в чем причина
применяете ли вы этот прием

  Ответить  
 
 автор: kot_k_k   (20.05.2014 в 14:08)   личное сообщение
 
 

причина в том что нужно еще и html и ручками - да и юзеры пугаются - незнакомы действий системы. я как-то из акса в екселе окрывал автоматом - пол-дня каждый считал своим делом сообщить о подозрительном поведении проги, проверить ее на вирусы да и просто истерики - "оно не работает".

  Ответить  
 
 автор: shanemac51   (20.05.2014 в 14:29)   личное сообщение
 
 

да, у каждого свое

мы попробовали репорт на фохпро ДОС и отказались после первой же задачи
видимо сказывался навык прежней работы на ЕС-1035 --нам было легче ручками прописывать все, что надо

  Ответить  
 
 автор: Едрёныч   (20.05.2014 в 22:37)   личное сообщение
 
 

Как вы поняли, я этот репорт должен отправлять. Но я не написал кому. Я его отправляю на охрану завода. Там люди могут точно сказать кто быстрее, муха без крыльев или таракан, но HTML-формат не для них. Неужели нет решения, гуры?

  Ответить  
 
 автор: Дядя Федор   (21.05.2014 в 09:46)   личное сообщение
 
 

Чем не вариант: Как вариант: сохранить,переименовать, отправить, удалить?

  Ответить  
 
 автор: kot_k_k   (22.05.2014 в 08:43)   личное сообщение
 
 

а мы "ломали" 1033 - весело было, диски 80М - размером ведро, на панели управления лампочки как на елке, бармалей трещит
даже где-то корочка валяется.

  Ответить  
 
 автор: shanemac51   (20.05.2014 в 23:56)   личное сообщение
 
 

в действительности у вас две задачи

1-как можно вывести информацию в отчете в виде таблицы
2-отправке по почте в виде ПДФ присвоить отчету другое название

пдф можно получить через печать вордовского документа, при формировании которого формировать клеточки
я предпочитаю НТМ, который открываю в ворде для печати
можно напрямую формировать ДОС/RTF, но их нельзя открыть в броузере или екселе

========
я формирую 1 отчет н НТМ-формате, но имею 3 кнопки открытия word-excel-броузер
дополнительно формирую СНМ для автономного просмотра с полевых условиях с карманного планшета

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