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

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

По второму:
см. Me.RecordSet, Me.RecordSetClone
RecordSet возвращает данные, отвечающие условиям выборки в источнике записей
короче дави F1
...
Рейтинг: 0 / 0
27.02.2004, 15:35
    #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
27.02.2004, 15:43
    #32424531
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"плавающий интерфейс"
DinN , у меня такое же уродство
...
Рейтинг: 0 / 0
27.02.2004, 15:43
    #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
27.02.2004, 15:52
    #32424555
DinN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"плавающий интерфейс"
Саныч, супер!!!
А главное ведь просто все до боли, а мозгов не хватило :)
SQL.RU THE BEST!!!
...
Рейтинг: 0 / 0
27.02.2004, 15:52
    #32424556
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"плавающий интерфейс"
DinN
Могу посоветовать только разбить эту форму на несколько...
...
Рейтинг: 0 / 0
27.02.2004, 16:21
    #32424634
DinN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"плавающий интерфейс"
Я бы с удовольствием, но мой юзер умрет от отчаинья, дело в том, что изначально эта форма содержала четыре подчиненных, какжлая подчиненная
в свойствах ист данных имеет выборку из табл (часть полей отсекается + сортировка) и натыкано в областях данных этих форм полей да комбов...
В итоге перед пользователем фактически все таблицы на изнанку, все конечно компактно, но ... при вводе пользователь случайно может нажать энтер не там где надо пустое поле сотворить (а таблы связаные!), приходится лезть в базу, а часто при первом вводе тарифов, сборов инфа не фиксируется (прям как суслик, пока запись текущая видно, что все введено, тока внизу , где суммы считаются нулики, а как перейдешь на any запись и вернешься взад глядишь действительна нолики)
Короче при вводе бывают глюки, да и не должен пользователь с табличками играться, форма ввода должна быть...
Кроме того хотся ускорить тот самый ввод и ужесточить контроль за введенной информацией, а так как опыта не хватает получается как сказал Varan уродство...
Благо есть кому подсказать, за что огромное спасибо всем откликающимся!!!
...
Рейтинг: 0 / 0
27.02.2004, 16:41
    #32424677
DinN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"плавающий интерфейс"
Саныч , что может помочь избавиться от подвисания при перерисовки интерфейса? Разве причина не в разбухшем коде?
...
Рейтинг: 0 / 0
27.02.2004, 16:45
    #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
27.02.2004, 16:57
    #32424711
DinN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"плавающий интерфейс"
Каюсь, есть вычисления :)
Байда такая: на форме есть три сбора (флажок - выбран/невыбран, метка - имя сбора, поле - значение), в некоторых случаях значения всех выбранных должно умножаться на 2, вот я и присобачил флажок, если активен - значения всех выбранных сборов помножатся на два, иначе "занять исходное положение". Неужели из - за этого?
...
Рейтинг: 0 / 0
27.02.2004, 16:59
    #32424714
DinN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"плавающий интерфейс"
Access 2002
...
Рейтинг: 0 / 0
27.02.2004, 17:14
    #32424754
Ъ
Ъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"плавающий интерфейс"
а я могу посоветовать перед всеми настройками сделать me.painting=false, а после окончания настроек me.painting=true. Скорость настроек с 3-х секунд упадет до 1 сек (+/- 10 секунд:)
...
Рейтинг: 0 / 0
27.02.2004, 17:16
    #32424759
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"плавающий интерфейс"
ТЕБЕ ПОВЕЗЛО, ЧТО ВСЕГО 3 сек. ОТЛИЧНЫЙ КОМПУКТЕР!
Поздравляю.

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

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

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

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

-)))
...
Рейтинг: 0 / 0
27.02.2004, 17:24
    #32424775
DinN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"плавающий интерфейс"
Виктоша, Me![Agency] и Me![Opers] енто комбы и в них есть список фиксированных значений, то есть юзер не набирает, а выбирает
Основное подвисание при вкл/откл флажков ( флажки сборов и флажок умножения на 2) и то как-то спонтанно
...
Рейтинг: 0 / 0
27.02.2004, 17:29
    #32424786
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"плавающий интерфейс"
у флажка Click
покажи код того спонтанного флажка
...
Рейтинг: 0 / 0
27.02.2004, 17:38
    #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
27.02.2004, 18:21
    #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
29.02.2004, 17:47
    #32425553
DinN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"плавающий интерфейс"
Прямо как у доктора на приеме : А вот так не болит? А так легче ? : ))
Виктоша большой сэнкс, инет рабочий, забежал на минутку, в понедельник все попробую!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / "плавающий интерфейс" / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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