powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как узнать реальную высоту поля в отчете?
25 сообщений из 108, страница 4 из 5
Как узнать реальную высоту поля в отчете?
    #39056632
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,

У меня таблицы не было. Это уже Ваше.
У меня там два отчета - один обычный (Отчет2_С_разрывом_поля) - с разрывом поля;
второй (Отчет1_С_полями_в_группах) - со способом решения этой проблемы.

sdkuПоле не разрывается-переносится целиком-может я чё не понимаю, но разве не этого хотел ТС?ТС хотел не совсем этого.
Чтобы не разрывалось поле, когда этих полей в области данных по вертикали больше одного.
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39056665
Банджо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku, у меня не ленточный отчет и полей в столбик 14
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39056683
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Банджонашел ошибку, переменная передается, отчет не работает. Более того, разъехались все поля в отчете ))
если точно сделаете , как в моем примере (+ с коррекцией процедуры , как я указал выше, + с поправкой на высоту страницы для вашего случая её ориентации), то всё должно работать нормально :)
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39056698
Банджо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Однако не получается с одним КС, какая-то хрень идет
Кусок кода как есть, торможу на первой строке и иду пошагово по строкам
На выходе формата верное значение 7416, на входе принта откуда-то берется 12021.
Что за фокус? Что там между ними встревает?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Debug.Print "===формат врейк====" & Break
'Me.Controls("КонецСтраницы").Top = Break
Me.Controls("Линия").Top = Break
Debug.Print "===Линия формат====" & Me.Controls("Линия").Top '''(дает верное значение 7416)
End Sub

Private Sub ОбластьДанных_Print(Cancel As Integer, PrintCount As Integer)
Debug.Print "==Линия вход принт==" & Me.Controls("Линия").Top ''(дает 12021 )

For i = 1 To 14
Debug.Print (Nz(Me.Controls("Name" & i).Value) & " ++ " & Nz(Me.Controls("Name" & i).Top))
   If Break = 0 And Nz(Me.Controls("Name" & i).Top) > 8000 Then Break = Me.Controls("Name" & i - 1).Top - 15: Debug.Print ("!!!" & Me.Controls("Name" & i - 1).Value)
Next i
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39056699
Банджо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport, я пробую через один КС и выставление .Top - visible.. ну кажется мне что так красивее . Но засада пока непонятно откуда
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39056701
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Банджо,
Какое отношение ваши "изыскания" с Top имеют отношения к названию вашей темы? Что спросили, то ответили, остальное за рамками темы
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39056755
Банджо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport, конечно никакого. Спасибо большое за помощь, с небольшими поправками получилось вот так
На формате
Код: vbnet
1.
2.
3.
4.
5.
6.
....
Me.Controls("КС1").Visible = False
For i = 2 To 11
   Me.Controls("КС" & i).Visible = r(i)
Next i
End Sub



и на принте
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub ОластьДанных_Print(Cancel As Integer, PrintCount As Integer)

For i = 2 To 12
If Break = False And Nz(Me.Controls("Name" & i).Top) + Nz(Me.Controls("Name" & i).Height) > 14000 Then
Me.Controls("КС" & i - 1).Visible = True
Break = True
Else
Me.Controls("ÊÑ" & i - 1).Visible = False
End If
r(i - 1) = Me.Controls("ÊÑ" & i - 1).Visible
Next i

If j = 0 Then j = 1: Cancel = True

End Sub



автоматом и подпись не отрывать обрабатывается.
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39056787
Банджо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle, по вашему образцу собрал линк

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub Связи_Click()
Dim tdf As TableDef

Set dbs = CurrentDb
For Each tdf In CurrentDb().TableDefs
  With tdf
   If Len(.Connect) > 0 Then
    .Connect = ";DATABASE=" & CurrentProject.Path & "\" & "XXX_be.mdb"
    .RefreshLink
   End If
  End With
Next
Set dbs = Nothing
End Sub



Вроде работает. Этого достаточно или есть подводные камни? В autoexec его или куда правильно поставить?
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39057180
Банджо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно наверно один из подводных камней в том что если по каким-то причинам произойдет сбой, то таблица потеряется и все на этом.
Видимо правильнее иметь таблицу таблиц и обращаться к ней?
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39060030
Банджо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще вопрос.
Вздумалось мне тут видимостями поиграть на свою голову...
Все та же Форма1 каркас, на ней подформа2 РеестрПациентов сама по себе и связанная с ней по мастерэслэйву подформа3 РеестрОбследований. И еще кнопки УдалитьОбследование УдалитьПациента.
Ставлю на каррент РеестраПациентов проверку есть ли пациенты, есть ли обследования у пациента и соответственно показывать или нет кнопки и РеестрОбследований.

Выдает ошибки - нет значения, выход за рамки и тп. Но если ошибки игнорировать, то все в итоге делает верно.
Но ставить просто игнор ошибок видимо как-то неправильно будет.. что можно поправить?
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39060195
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. РЕКОМЕНДАЦИИ по публикации сообщений (ЧИТАЙТЕ FAQ, а также...) #7. #7. Если вы хотите обсудить несколько разных вопросов, создавайте несколько новых топиков - каждый со своей темой обсуждения.
2. Никаких "мастерэслэйвов" нет.
Есть другое. Смотрите документацию.
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39060675
Банджо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimportБанджо,
процедура ОбластьДанных_Print у меня в примере не корректна, надо бы так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub ÎáëàñòüÄàííûõ_Print(Cancel As Integer, PrintCount As Integer)

For i = 2 To 12
Debug.Print (Nz(Me.Controls("Name" & i).Value) & " ++ " & (Nz(Me.Controls("Name" & i).Top) & " ++ " & Nz(Me.Controls("Name" & i).Height)))
If Break = False And Nz(Me.Controls("Name" & i).Top) + Nz(Me.Controls("Name" & i).Height) > 13000 Then
Me.Controls("КС" & i - 1).Visible = True
Break = True
Else
Me.Controls("КС" & i - 1).Visible = False
End If
r(i - 1) = Me.Controls("КС" & i - 1).Visible
Next i

If j = 0 Then j = 1: Cancel = True

End Sub



где 9000 - приблизительная высота страницы минус сумма высоты верхнего и нижнего поля (при альбомной её ориентации)

Влез какой-то фонарь, полез проверять - оказывается Me.Controls("Поле" & i).Height дает всегда 256. При этом Top дает реальное положение.

ДебагПринт
...++ 9423 ++ 256
...++ 13523 ++ 256
..++ 14594 ++ 0
..++ 14687 ++ 256
++ 16745 ++ 256

Почему так?
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39060715
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Банджоguest_rusimportБанджо,
процедура ОбластьДанных_Print у меня в примере не корректна, надо бы так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub ÎáëàñòüÄàííûõ_Print(Cancel As Integer, PrintCount As Integer)

For i = 2 To 12
Debug.Print (Nz(Me.Controls("Name" & i).Value) & " ++ " & (Nz(Me.Controls("Name" & i).Top) & " ++ " & Nz(Me.Controls("Name" & i).Height)))
If Break = False And Nz(Me.Controls("Name" & i).Top) + Nz(Me.Controls("Name" & i).Height) > 13000 Then
Me.Controls("КС" & i - 1).Visible = True
Break = True
Else
Me.Controls("КС" & i - 1).Visible = False
End If
r(i - 1) = Me.Controls("КС" & i - 1).Visible
Next i

If j = 0 Then j = 1: Cancel = True

End Sub



где 9000 - приблизительная высота страницы минус сумма высоты верхнего и нижнего поля (при альбомной её ориентации)

Влез какой-то фонарь, полез проверять - оказывается Me.Controls("Поле" & i).Height дает всегда 256. При этом Top дает реальное положение.

ДебагПринт
...++ 9423 ++ 256
...++ 13523 ++ 256
..++ 14594 ++ 0
..++ 14687 ++ 256
++ 16745 ++ 256

Почему так?
во-первых - потому, что то, что вы привели тут - это не та процедура, которую я тут приводил , а ваша бурная фантазия на тему моего примера, а во-вторых - хотите разобраться - выкладывайте базу или пример в mdb того, что у вас не получается (вы упорно игнорируете последнее, за вас это пришлось делать Мишель...
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39060728
Банджо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport, не могу я базу отрезать... я пробовал (... ладно, буду разбираться.
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39060739
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Банджо,
создать пустую базу и импортировать туда отчет и таблицу или запрос - источник записей этого отчета - это проблема? сомнительно мне что-то...
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39060773
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Банджо,
вариант с Top (может это поможет) :)
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39061223
Банджо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport, спасибо большое.
Я так понимаю, что .Height все же не работает и приходится идти в обход? Но почему не работает?

У меня в основе Ваш код, но немного поправил, и делаю без вычисления h, просто на Top, хотя так есть минусы (если между полями есть расстояние).

Если не сделать флаг на первый взвод видимости КС, то все КС после лимита становятся True, что не гуд - ввел Break.
При сбоях (неважно где) стирается j и .Visible, поэтому пришлось ввести начальные условия.
Так все вроде работает.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Печать_Click()
Me.Dirty = False 'обновить таблицу
Break = False
j = 0
DoCmd.OpenReport "04Заключение", acPreview
DoCmd.Close acReport, "04Заключение"
DoCmd.OpenReport "04Заключение", acPreview
DoCmd.Maximize
End Sub



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub ОбластьДанных_Print(Cancel As Integer, PrintCount As Integer)

If j = 0 Then
For i = 1 To 11
Me.Controls("KC" & i).Visible = False
Next i
End If

For i = 1 To 11
If Break = False And Nz(Me.Controls("Name" & i).Top) > 14520 Then
Me.Controls("KC" & i).Visible = True
Break = True
End If
r(i) = Me.Controls("KC" & i).Visible

Next i
If j = 0 Then j = 1: Cancel = True

End Sub
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39061280
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Банджо,
ваш вариант некорректен, лучше изучайте мой последний пример, у вас неверное представление о работе Top в многостраничном отчете, выведите через debug.print все значения Top полей отчета и всё поймете надеюсь
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39061290
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport,

на мой вариант Банджо тоже не среагировал, причем во всех своих темах не выложил ни одного примера данных






+6
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39061384
Банджо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport, я его изучил, но видимо в силу нехватки знаний ничего принципиально различного с вашим вариантом не вижу. Можно что конкретно некорректно, куда смотреть?
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39061459
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Банджо,

не знаю как вам ещё объяснить, не можете разобраться в алгоритме - просто используйте его один в один, не понимаю, зачем вы всё пытаетесь не разобравшись до конца вносить изменения в то, что вам не понятно
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39061495
Банджо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport, просто ткните на некорректный кусок у меня, я дальше буду думать почему он работает нормально )

К вашему коду я добавил только Брейк и начальные условия, по необходимости.
Зачем вычислять высоту когда есть тор, а разница топов и есть высота, мне не совсем понятно, что так что эдак тот же профиль. А в остальном - чисто ваш код, за который еще раз спасибо.

зы и все же: .Height - не работает? Просто интересно.
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39061524
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Банджо,
у вас работает "нормально" ваш код, вероятно потому, что у вас в отчете получается не более 2-х страниц, было бы больше , то вы бы сами увидели всю его "нормальную" работу (вероятно вам ещё предстоит с этим столкнуться , судя по вашему непонятному упорству не использовать один в один предложенные вам решения)... что у вас там с Height происходит можно только гадать, чем заниматься совсем не хочется, и опять же из-за вашего непонятного нежелания выложить проблемный кусок базы или воспроизвести проблему на тестовом примере и приложить к форуму, ну, что тут можно сказать - "Каждый заблуждается в меру своих возможностей"
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39061616
Банджо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport, спасибо, я переделал.
Думаю Height не работает потому что где-то пролетает ошибка и сносит переменные.
Сейчас r(i) обнуляется на формате. Где - кто ее знает, буду искать по всей базе.

=первый формат===
=vis===6 =R(i)= False
=vis===7 =R(i)= False
=vis===8 =R(i)= False
=vis===9 =R(i)= False
=vis===10 =R(i)= False
=vis===11 =R(i)= False

=Принт===
==R(i)== False
==R(i)== False
==R(i)== False
=Top=KC==9 == 15740
==R(i)== True
==R(i)== False
==R(i)== False

=второй формат===
=vis===6 =R(i)= False
=vis===7 =R(i)= False
=vis===8 =R(i)= False
=vis===9 =R(i)= False
=vis===10 =R(i)= False
=vis===11 =R(i)= False
...
Рейтинг: 0 / 0
Как узнать реальную высоту поля в отчете?
    #39061623
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Банджо,
эта "беда" поправима, вы просто не обратили внимание , что в примере есть общий модуль Module1, где объявлены глобальные переменные

Код: vbnet
1.
2.
3.
4.
Option Compare Database

Public r(12) As Boolean
Public j
...
Рейтинг: 0 / 0
25 сообщений из 108, страница 4 из 5
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как узнать реальную высоту поля в отчете?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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