powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с отчетом
7 сообщений из 7, страница 1 из 1
Помогите с отчетом
    #35529250
Фотография softmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот процедурка
Код: plaintext
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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
Private Sub Report_Open(Cancel As Integer)

Dim i As Integer, countfld As Integer
Dim rs As dao.Recordset
Dim w As Integer, w_1 As Integer, h As Integer
Dim j As Long
Dim hHead As Integer, hCol As Integer, k As Integer
Const MaxCountFld As Integer =  65 

Const kd As Integer =  25 
Const k_1 As Integer =  12 
Const kh As Integer =  25 

    Set rs = CurrentDb.OpenRecordset(Me.RecordSource, dbOpenSnapshot)
    countfld = rs.Fields.Count
    If rs.Fields.Count > MaxCountFld Then countfld = MaxCountFld
    j =  0 
    For i =  1  To MaxCountFld
  
        If i <= countfld Then
            Me("Head" & i).ControlSource = "='" & rs.Fields(i -  1 ).Name & "'"
            Me("Col" & i).ControlSource = rs.Fields(i -  1 ).Name
            h = Me("Head" & i).FontSize * kh
            If i =  1  Then k = k_1 Else k = kd
            w = Len(rs.Fields(i -  1 ).Name) * Me("Col" & i).FontSize * k
            w_1 = Len(rs.Fields(i -  1 ).Name) * Me("Head" & i).FontSize * k
            If w_1 > w Then w = w_1
            Me("Head" & i).Width = w
            Me("Col" & i).Width = w
            Me("Head" & i).Height = h
            Me("Col" & i).Height = h
            Me("Head" & i).Left = j
            Me("Col" & i).Left = j
            Me("Head" & i).Top =  0 
            Me("Col" & i).Top =  0 
            j = j + w
          Else
            Me("Head" & i).Visible = False
            Me("Col" & i).Visible = False
        End If
    Next i
    rs.Close
    Set rs = Nothing
    
    Me.Printer.DefaultSize = False
    Me.Printer.ItemSizeWidth = Me("Col" & countfld).Left + Me("Col" & countfld).Width
    rptKol.Height = h
    rptDate.Height = h
    rptLab.Caption = Me.Report.Name
    DoCmd.Maximize
    
End Sub

Формирует отчет из перекрестного запроса

авторTRANSFORM Sum(ВыборкаПоПродукции.[Брак шт]) AS [Sum-Брак шт]
SELECT ВыборкаПоПродукции.Продукция, ВыборкаПоПродукции.Машина
FROM ВыборкаПоПродукции
GROUP BY ВыборкаПоПродукции.Продукция, ВыборкаПоПродукции.Машина
PIVOT Format([Дата],"mmm") In ("янв","фев","мар","апр","май","июн","июл","авг","сен","окт","ноя","дек");


Подскажите неполучаеться второй столбец сделать по аналогии первого "ширину"
...
Рейтинг: 0 / 0
Помогите с отчетом
    #35529315
Karfaqen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softmasterПодскажите неполучаеться второй столбец сделать по аналогии первого "ширину"Не совсем понятно, вы хотите второй столбец сделать такой же ширины как и первый? Если да то смотрите строку:If i = 1 Then k = k_1 Else k = kdОна устанавивает некий коэффициент ширины для контролов - и как видно, для первого столбца он более другой чем для всех прочих.
...
Рейтинг: 0 / 0
Помогите с отчетом
    #35529377
Фотография softmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Karfaqen softmasterПодскажите неполучаеться второй столбец сделать по аналогии первого "ширину"Не совсем понятно, вы хотите второй столбец сделать такой же ширины как и первый? Если да то смотрите строку: If i = 1 Then k = k_1 Else k = kdОна устанавивает некий коэффициент ширины для контролов - и как видно, для первого столбца он более другой чем для всех прочих.

Сделал так
Код: plaintext
If i =  1  Or i =  2  Then k = k_1 Else: k = kd

незнаю насколько это грамотно но вроде работает
...
Рейтинг: 0 / 0
Помогите с отчетом
    #35529522
Фотография softmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще вот такой вопросец у меня при открытии отчета форма сворачиваеться
открывается отчет
а как при закрытии отчета востановить форму
...
Рейтинг: 0 / 0
Помогите с отчетом
    #35530195
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softmasterеще вот такой вопросец у меня при открытии отчета форма сворачиваеться
открывается отчет
а как при закрытии отчета востановить форму

В процедуре на событии закрытия отчета ставите инструкции получения фокуса формой и ее восстановления
Код: plaintext
1.
Forms!ВашаФорма.SetFocus
Docmd.Restore
...
Рейтинг: 0 / 0
Помогите с отчетом
    #35530384
Фотография softmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world softmasterеще вот такой вопросец у меня при открытии отчета форма сворачиваеться
открывается отчет
а как при закрытии отчета востановить форму

В процедуре на событии закрытия отчета ставите инструкции получения фокуса формой и ее восстановления
Код: plaintext
1.
Forms!ВашаФорма.SetFocus
Docmd.Restore

Помогло спасибо
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Помогите с отчетом
    #39161203
_MKS_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Громадное спасибо Автору.
Формат слолбцов по ширине в отчете не работает.
' If i = 1 Then k = k_1 Else k = kd
w = Len(rs.Fields(i - 1).Name) * Me("Col" & i).FontSize * k
w_1 = Len(rs.Fields(i - 1).Name) * Me("Head" & i).FontSize * k
If w_1 > w Then w = w_1
- отсекает по количесву символов в верхней строке т.е. в заголовке


1. Подскажите, пожалуйста, как реализовать ширину столбцов по максимальному значению в каждом?
______________________
Черпаю данные из запроса, все корректно отображает.
В управляющей форме Поле "Регион" позволяет выбрать страну или группу стран.
Если пользователь выбирает в поле "Регион" страну, то столбец Страна в отчете не нужен.
Если пользователь выбирает в поле "Регион" регион, то столбец Страна в отчете нужен т.к. в регионе их несколько.

2. Можно ли сделать универсальный отчет или целесообразно два похожих с if then else?
Либо сделать на уровне перекрестного запроса. Сейчас по полю "Страна" в запросе стоит "не отображать". Можно ли в графе "Перекрестная таблица" конструктора запроса ввести "если" и какой синтаксис?

С уважением,
Кирилл
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с отчетом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]