powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / "плавающий интерфейс"
19 сообщений из 19, страница 1 из 1
"плавающий интерфейс"
    #32424104
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня!
Подскажите плиз:
На форме имеется несколько раскрывающихся списков, если в одном из "комбов" пользователь сделал выбор , то в зависимости от выбранного значения и ! комбинации значений других присутствующих на форме комбов !
изменяется интерфейс (состояние флажков, надписи, активность полей и их значения) в коде выглядит как куча условий, причем повторяющихся, иногда при перерисовке все это дело подвисает сек на три и мне становится тоскливо (
Я Access плохо знаю, получается, что вижу то пою, а хотелось бы рациональности. Подскажите, как решаются такие проблемы, буду рад ссылкам на обсуждения подобных тем.

И еще один вопрос: форма - свойства - вкл данные - источник записей - три точки...построитель запросов ... построили
как из кода VBA обратится к выборке, которая формируется в результате вышеописанных действий, когда есть необходимость из этой выборки зделать еще одну выборку по условию, которое определяется выбором пользователя на форме,
собственно пользователь зделал выбор из комбо, находящееся рядом поле должно поменять значение ... его можно вытащить из выборки (организовать поиск или запрос написать?), на которой основана форма, но как к ней обратится?
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424298
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По первому вопросу:
покажи код

По второму:
см. Me.RecordSet, Me.RecordSetClone
RecordSet возвращает данные, отвечающие условиям выборки в источнике записей
короче дави F1
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424500
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Private Sub Opers_Change()
If Me![Opers] = "РТА" Then
Me.PTA.Enabled = True
Else
Me.PTA.Enabled = False
End If
If Me![Opers] <> "Продажа" Then
Me.SB1.Visible = False - метки
Me.SB2.Visible = False
Me.SB3.Visible = False
Me.SB4.Visible = False
Me.SB5.Visible = False
Me.flg1.Visible = False - флажки
Me.flg2.Visible = False
Me.flg3.Visible = False
Me.flg4.Visible = False
Me.flg5.Visible = False
Me.zn1.Visible = False - поля
Me.zn2.Visible = False
Me.zn3.Visible = False
Me.zn4.Visible = False
Me.zn5.Visible = False
Me.Hlp.Visible = True
Else
Me.Hlp.Visible = False
End If

If Me![Agency] = "Пулково" And Me![Opers] = "Продажа" Then
Me.IsxTr.Enabled = True
Me.SB1.Caption = "Другие"
Me.SB1.Visible = True
Me.SB2.Visible = False
Me.SB3.Visible = False
Me.SB4.Visible = False
Me.SB5.Visible = False
Me.zn1.Visible = True
Me.zn2.Visible = False
Me.zn3.Visible = False
Me.zn4.Visible = False
Me.zn5.Visible = False
Me.flg1.Value = False
Me.flg1.Visible = True
Me.flg2.Visible = False
Me.flg3.Visible = False
Me.flg4.Visible = False
Me.flg5.Visible = False

Else
Me.IsxTr.Enabled = False
End If

If Me![Agency] = "ТКП" And Me![Opers] = "Продажа" Then
Me.SB1.Visible = True
Me.SB2.Visible = True
Me.SB3.Visible = True
Me.SB4.Visible = True
Me.SB5.Visible = True
Me.SB1.Caption = "ТКП"
Me.SB2.Caption = "ЦКС"
Me.SB3.Caption = "Обслуживание"
Me.SB4.Caption = "Х 2"
Me.SB5.Caption = "АГС"
Me![zn1] = "" ---------- значения полей необходимо задать
Me![zn2] = ""
Me![zn3] = ""
Me![zn4] = ""
Me![zn5] = ""
Me.zn1.Visible = True
Me.zn2.Visible = True
Me.zn3.Visible = True
Me.zn4.Visible = True
Me.zn5.Visible = True
Me.zn1.Enabled = True
Me.zn2.Enabled = False
Me.zn3.Enabled = True
Me.zn4.Enabled = False
Me.zn5.Enabled = False

Me.flg1.Value = True
Me.flg2.Value = False
Me.flg3.Value = True
Me.flg4.Value = False
Me.flg5.Value = False
Me.flg1.Visible = True
Me.flg2.Visible = True
Me.flg3.Visible = True
Me.flg4.Visible = True
Me.flg5.Visible = True

Else
End If

If Me![Agency] = "Сибирь" And Me![Opers] = "Продажа" Then
Me.SB1.Caption = "Такса Ru"
Me.SB2.Caption = "Другие"
Me.SB1.Visible = True
Me.SB2.Visible = True
Me.SB3.Visible = False
Me.SB4.Visible = False
Me.SB5.Visible = False
Me.zn1.Visible = True
Me.zn2.Visible = True
Me.zn3.Visible = False
Me.zn4.Visible = False
Me.zn5.Visible = False
Me.flg1.Value = True
Me.flg2.Value = False
Me.flg3.Value = False
Me.flg4.Value = False
Me.flg5.Value = False
Me.flg1.Visible = True
Me.flg2.Visible = True
Me.flg3.Visible = False
Me.flg4.Visible = False
Me.flg5.Visible = False
Else
End If

If Me![Agency] = "Аэрофлот" And Me![Opers] = "Продажа" Then
Me.SB1.Caption = "Такса Ru"
Me.SB2.Caption = "Другие"
Me.SB1.Visible = True
Me.SB2.Visible = True
Me.SB3.Visible = False
Me.SB4.Visible = False
Me.SB5.Visible = False
Me.zn1.Visible = True
Me.zn2.Visible = False
Me.zn3.Visible = False
Me.zn4.Visible = False
Me.zn5.Visible = False
Me.flg1.Value = True
Me.flg2.Value = False
Me.flg3.Value = False
Me.flg4.Value = False
Me.flg5.Value = False
Me.flg1.Visible = True
Me.flg2.Visible = True
Me.flg3.Visible = False
Me.flg4.Visible = False
Me.flg5.Visible = False
Else
End If
End Sub
Это пример только одного Change, а их много + плюс по мимо видимости/невидимости и активности/неактивности полей нужно формировать их значения
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424531
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinN , у меня такое же уродство
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424533
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
С подвисанием это не поможет. А с наглядностью кода можно так:

Было:

Me.SB1.Visible = True
Me.SB2.Visible = True
Me.SB3.Visible = False
Me.SB4.Visible = False
Me.SB5.Visible = False
Me.zn1.Visible = True
Me.zn2.Visible = False
Me.zn3.Visible = False
Me.zn4.Visible = False
Me.zn5.Visible = False
Me.flg1.Value = True
Me.flg2.Value = False
Me.flg3.Value = False
Me.flg4.Value = False
Me.flg5.Value = False

Стало:

Show "SB","++---"
Show "zn","+----"
Show "flg","+----"

Плюс описываем процедуру:

sub Show(sPrefix as string, sMask as string)
dim i as integer
for i=1 to len(sMask)
me(sPrefix & cstr(i)).visible=(mid(sMask,i,1)="+")
next
end sub
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424555
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Саныч, супер!!!
А главное ведь просто все до боли, а мозгов не хватило :)
SQL.RU THE BEST!!!
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424556
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinN
Могу посоветовать только разбить эту форму на несколько...
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424634
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы с удовольствием, но мой юзер умрет от отчаинья, дело в том, что изначально эта форма содержала четыре подчиненных, какжлая подчиненная
в свойствах ист данных имеет выборку из табл (часть полей отсекается + сортировка) и натыкано в областях данных этих форм полей да комбов...
В итоге перед пользователем фактически все таблицы на изнанку, все конечно компактно, но ... при вводе пользователь случайно может нажать энтер не там где надо пустое поле сотворить (а таблы связаные!), приходится лезть в базу, а часто при первом вводе тарифов, сборов инфа не фиксируется (прям как суслик, пока запись текущая видно, что все введено, тока внизу , где суммы считаются нулики, а как перейдешь на any запись и вернешься взад глядишь действительна нолики)
Короче при вводе бывают глюки, да и не должен пользователь с табличками играться, форма ввода должна быть...
Кроме того хотся ускорить тот самый ввод и ужесточить контроль за введенной информацией, а так как опыта не хватает получается как сказал Varan уродство...
Благо есть кому подсказать, за что огромное спасибо всем откликающимся!!!
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424677
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Саныч , что может помочь избавиться от подвисания при перерисовки интерфейса? Разве причина не в разбухшем коде?
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424688
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в смысле времени этот код не должен вызывать задержек на 3 сек.
скорее всего где-то вычисления в контролах есть.

в смысле скорости отображения еще можно добавить

Me.Painting = false
'-------
Show "SB","++---"
Show "zn","+----"
Show "flg","+----"
'------------
Me.Painting = true
Me.Repaint

Если Acc97 то смотри Docmd.Echo T/F,StatusMes
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424711
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Каюсь, есть вычисления :)
Байда такая: на форме есть три сбора (флажок - выбран/невыбран, метка - имя сбора, поле - значение), в некоторых случаях значения всех выбранных должно умножаться на 2, вот я и присобачил флажок, если активен - значения всех выбранных сборов помножатся на два, иначе "занять исходное положение". Неужели из - за этого?
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424714
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Access 2002
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424754
Ъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ъ
Гость
а я могу посоветовать перед всеми настройками сделать me.painting=false, а после окончания настроек me.painting=true. Скорость настроек с 3-х секунд упадет до 1 сек (+/- 10 секунд:)
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424759
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТЕБЕ ПОВЕЗЛО, ЧТО ВСЕГО 3 сек. ОТЛИЧНЫЙ КОМПУКТЕР!
Поздравляю.

Вот что значит невнимательность.
код про visible и т.д. ПРОСТО НИ ПРИ ЧЕМ.

Событие Change отрабатывает на каждое нажатие клавиши.

кто такие Me![Agency] Me![Opers]
Набирая в них слова всякие ты вызываешь Change столько раз, сколько буквочек на клаве нажал.

Просто выдели все, что находится в Change, дальше Edit->Cut
перейди в обработчик AfterUpdate и нажми Shift-Insert
После чего получи удовольствие от скорости работы своего компуктера

-)))
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424775
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Виктоша, Me![Agency] и Me![Opers] енто комбы и в них есть список фиксированных значений, то есть юзер не набирает, а выбирает
Основное подвисание при вкл/откл флажков ( флажки сборов и флажок умножения на 2) и то как-то спонтанно
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424786
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у флажка Click
покажи код того спонтанного флажка
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424797
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вспомнил, вычисления я сегодня грохнул, правда ничего не изменилось с подвисанием, я ради теста кликаю по очереди на фигурирующих сдесь четырех флажках, после 3-5 кликов оп задумались...(причем на разных флажках)

Private Sub flg4_AfterUpdate()
If Me![flg4] = False And (Me![flg1] = True) Then
Me!zn1 = ""
Me!zn1 = 70
End If
If Me![flg4] = False And (Me![flg2] = True) Then
Me!zn2 = ""
Me!zn2 = 70
End If
If Me![flg4] = False And (Me![flg3] = True) Then
Me!zn3 = ""
Me!zn3 = 100
End If
If Me![flg4] = True And (Me![flg1] = True) Then
Me!zn1 = ""
Me!zn1 = 140
End If
If Me![flg4] = True And (Me![flg2] = True) Then
Me!zn2 = ""
Me!zn2 = 140
End If
If Me![flg4] = True And (Me![flg3] = True) Then
Me!zn3 = ""
Me!zn3 = 200

End If
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32424850
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот прямая замена "в лоб".
Так тоже тормозит?

Private Sub flg4_AfterUpdate()
Dim bC as Boolean, rC as Boolean

Painting = False
bC = flg4.Value

If bC then
if flg1.Value Then zn1.Value = 140
if flg2.Value Then zn2.Value = 140
if flg3.Value Then zn3.Value = 200

Else

if flg1.Value Then zn1.Value = 70
if flg2.Value Then zn2.Value = 70
if flg3.Value Then zn3.Value = 100

End if
Painting = True

End Sub
...
Рейтинг: 0 / 0
"плавающий интерфейс"
    #32425553
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прямо как у доктора на приеме : А вот так не болит? А так легче ? : ))
Виктоша большой сэнкс, инет рабочий, забежал на минутку, в понедельник все попробую!
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / "плавающий интерфейс"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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