powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка 2165
19 сообщений из 19, страница 1 из 1
Ошибка 2165
    #39993824
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.
Подскажите, как разобраться с одной непоняткой.
Вроде бы, по логике, должно работать нормально - но не работает.
Согласно приложенного примера:
Есть стартовая форма FStart. На ней переключатель "да/нет". И кнопка открытия формы FStart2. Во второй форме есть поле [ДляТаба] для установки фокуса при открытии формы FStart2. В этой второй форме есть встроенная подформа, с тремя полями из таблицы.
Задача: по кнопке "Открыть" из формы FStart открыть форму FStart2. При этом анализируется состояние переключателя: если выключен - открывается FStart2, курсор фокусом загоняется в поле "ДляТаба", поля в подформе Forms![FStart2]![пф_Таблица1].Form должны быть скрыты (Visible = False).
Если выключатель включен - открывается FStart2, курсор фокусом загоняется в поле "ДляТаба", поля в подформе Forms![FStart2]![пф_Таблица1].Form должны быть отображены (Visible = True).
В самой подформе все переходы по табу отключены, но:
Если выключатель выключен, при попытке открыть вторую форму получаю сообщение
Run-time error '2165' Невозможно сделать невидимым элемент управления, имеющий фокус ввода.
Какой фокус ввода, если я переход по табам отключил и фокус насильно загоняю в поле "ДляТаба", где он и мигает, гад этакий? ;)
Вроде бы и простая задача, но туплю и не смог нарыть решения :(
В приложении - пример в формате Access 2003.
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993826
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tarasios,

Упростил
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993827
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,
спасибо большое! Решение от "наоборот", не выключать видимость, а включать по требованию. Вроде бы и те же яйца, но - работает, и это главное ) Ещё раз спасибо, а то почти сутки игрался, теперь могу дальше двигаться )
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993828
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tarasios,
попробуйте: на форме1, по нажатию кнопки записывать значение true/false в переменную уровня модуля,затем открывать форму2 и уже из неё на открытии,в зависимости от значения переменной управлять видимостью полей
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993829
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tarasios
Решение от "наоборот", не выключать видимость, а включать по требованию.


Да я сам нифига не понял, чисто комбинаторика... если на Visible = False ругается, а на Visible = True нет, то убрать Visible = False и все дела...
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993831
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку:
Может не понял Вашей задумки,но возник вопрос-свободное поле "для табулятора" с успехом можно разместить в заголовке пф_таблица1-form2 становится "лишним посредником" и кажется Вы избавитесь от ""непонятки" ( 100% не утверждаю-не проверял)
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993833
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,
да, пример отличается от реальной реализации.
В главной форме курсор ставится в поле одной из характеристик товара. Потому и не размещал дополнительное "пустое" поле в подчинённой форме. Хотя вру, размещал ) Отрабатывал и такой вариант. Пробовал его уменьшить до точки, спрятать "в сторону", под другое поле, сделать прозрачным с цветом текста под цвет формы - фиг там, Access старательно рисовал большой белый прямоугольник на месте "точки" и сдвигал содержимое подформы так, что бы это поле было на виду. Спасибо, заботливый ты мой Access, заррраза ))
А в подчинённой -отображаются используемые, согласно настроек, цены (у товара есть 7 вариантов отпускных цен). То есть в настройках в "чеках" (логические поля) отмечаются нужные варианты цен (кому то все 7 нужно, например - для опта, кому то и двух за глаза, или даже одной). И уже в карточке товара работаем с выбранными ценами, не отвлекаясь не неиспользуемые поля (а там ведь по каждой цене - наценка в процентах, гривнях, прибыль, подписи к этим полям и т.д., т.е. экономия нагрузки на мозги ощутимая выходит. И вот если самая первая цена была не выбрана - и рождался такой карамболь :(
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993834
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
Tarasios
Решение от "наоборот", не выключать видимость, а включать по требованию.


Да я сам нифига не понял, чисто комбинаторика... если на Visible = False ругается, а на Visible = True нет, то убрать Visible = False и все дела...

"Век живи - век учись", приговаривал Ржевский, перекладывая серебряный портсигар из штанов в нагрудный карман ;)))
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993866
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочтите справку по событиям Load and Open (когда они возникают и почему Вы их не обрабатываете,от слова никак-при нажатии кнопки они не возникают-только при выполнении DoCmd.OpenForm и в других случаях не имеющих отношения к вопросу)
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993899
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tarasios,
по мне лучше обрабатывать ошибку, и в случае, если все поля нужно спрятать - прятать контейнер с формой.
Код: vbnet
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.
Private Sub Кнопка0_Click()
Dim ctr As Control, da As Boolean
On Error GoTo Кнопка0_Click_ERROR
DoCmd.OpenForm "FStart2"
With Forms![FStart2]![пф_Таблица1].Form
If Not Me.Переключатель1 Then
![Поле1].Visible = False
![Поле2].Visible = False
![Поле3].Visible = False
Else
Forms![FStart2]![ДляТаба].SetFocus
![Поле1].Visible = True
![Поле2].Visible = True
![Поле3].Visible = True
End If
end with
Exithere:
Exit Sub
Кнопка0_Click_ERROR:
da = False
If Err.Number = 2165 Then
For Each ctr In Forms![FStart2]![пф_Таблица1].Form.Controls
   If ctr.Visible And ctr.Name <> Forms![FStart2]![пф_Таблица1].Form.ActiveControl.Name Then ctr.SetFocus: da = True: Resume
Next
If Not da Then Forms![FStart2]!ДляТаба.SetFocus: Forms![FStart2]![пф_Таблица1].Visible = False
End If
Resume Exithere
End Sub

...
Рейтинг: 0 / 0
Ошибка 2165
    #39993916
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko, спасибо за внимание к вопросу.
Да, допускаю вариант, при котором клиент в настройках не выбрал ни одной продажной цены для работы.
Тут я сделал так, что форма FStart2 (если согласно примера) тогда вообще не открывается, с показом соответствующего сообщения. Логика: нет ни одной выбранной цены - значит, нет смысла открывать окно обработки цен, наценок. Иначе в самой открытой форме пришлось бы на все кнопочки вешать контроль варианта "нет ни одной выбранной цены", с соответствующими сообщениями, лишняя морока. Думаю, что если программа молча отказывается что то делать, пусть это и правильно - клиент, особенно слабо подготовленный - будет в напрягах, что нежелательно. А так программа даёт ценное указание, типа - "старушка сюда не ходи, туда ходи" )
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993922
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подумайте вот над чем: почему Вы обрабатываете события никак не относящиеся к форме пф_Таблица1,хотя надо именно в ней на Load или Open произвести некие действия
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993926
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub Кнопка0_Click() 'для формы Fstart
DoCmd.OpenForm "FStart2"
End Sub

Private Sub Form_Load() 'для формы пф_таблица1
If Forms!FStart.Переключатель1  Then
Me.Поле1.Visible = True
.............
Else
Me.Поле1.Visible = False
............
End If
End Sub


Для переключателя значение по умолчанию 0
Хотя Вашу задумку не понимаю от слова совсем
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993933
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,
а вы не вышли, случаем, на самое начало этой ветки? Именно на вариант, где вылетала ошибка? Повторюсь: всё работает чётко. До момента, если "не отображать" самое первое поле.
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993947
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может хватит уже точить грабли и выбирать костыли...
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993970
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993972
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения-не тот файл опубликовал
Перед тем как от чего-либо открещиваться-проверьте
...
Рейтинг: 0 / 0
Ошибка 2165
    #39993973
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфу ты опять не тот
Это уже точно оно
...
Рейтинг: 0 / 0
Ошибка 2165
    #39994045
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku, спасибо за вариант, обязательно посмотрю
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка 2165
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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