Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка 2165 / 19 сообщений из 19, страница 1 из 1
30.08.2020, 00:57
    #39993824
Tarasios
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 2165
Привет всем.
Подскажите, как разобраться с одной непоняткой.
Вроде бы, по логике, должно работать нормально - но не работает.
Согласно приложенного примера:
Есть стартовая форма 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
30.08.2020, 01:25
    #39993826
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 2165
Tarasios,

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


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


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

"Век живи - век учись", приговаривал Ржевский, перекладывая серебряный портсигар из штанов в нагрудный карман ;)))
...
Рейтинг: 0 / 0
30.08.2020, 14:00
    #39993866
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 2165
Прочтите справку по событиям Load and Open (когда они возникают и почему Вы их не обрабатываете,от слова никак-при нажатии кнопки они не возникают-только при выполнении DoCmd.OpenForm и в других случаях не имеющих отношения к вопросу)
...
Рейтинг: 0 / 0
30.08.2020, 15:42
    #39993899
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 2165
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
30.08.2020, 18:47
    #39993916
Tarasios
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 2165
alecko, спасибо за внимание к вопросу.
Да, допускаю вариант, при котором клиент в настройках не выбрал ни одной продажной цены для работы.
Тут я сделал так, что форма FStart2 (если согласно примера) тогда вообще не открывается, с показом соответствующего сообщения. Логика: нет ни одной выбранной цены - значит, нет смысла открывать окно обработки цен, наценок. Иначе в самой открытой форме пришлось бы на все кнопочки вешать контроль варианта "нет ни одной выбранной цены", с соответствующими сообщениями, лишняя морока. Думаю, что если программа молча отказывается что то делать, пусть это и правильно - клиент, особенно слабо подготовленный - будет в напрягах, что нежелательно. А так программа даёт ценное указание, типа - "старушка сюда не ходи, туда ходи" )
...
Рейтинг: 0 / 0
30.08.2020, 19:11
    #39993922
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 2165
Подумайте вот над чем: почему Вы обрабатываете события никак не относящиеся к форме пф_Таблица1,хотя надо именно в ней на Load или Open произвести некие действия
...
Рейтинг: 0 / 0
30.08.2020, 19:31
    #39993926
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 2165
Код: 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
30.08.2020, 20:10
    #39993933
Tarasios
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 2165
sdku,
а вы не вышли, случаем, на самое начало этой ветки? Именно на вариант, где вылетала ошибка? Повторюсь: всё работает чётко. До момента, если "не отображать" самое первое поле.
...
Рейтинг: 0 / 0
30.08.2020, 21:56
    #39993947
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 2165
Может хватит уже точить грабли и выбирать костыли...
...
Рейтинг: 0 / 0
31.08.2020, 01:03
    #39993970
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 2165
.
...
Рейтинг: 0 / 0
31.08.2020, 01:25
    #39993972
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 2165
Прошу прощения-не тот файл опубликовал
Перед тем как от чего-либо открещиваться-проверьте
...
Рейтинг: 0 / 0
31.08.2020, 01:28
    #39993973
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 2165
Тьфу ты опять не тот
Это уже точно оно
...
Рейтинг: 0 / 0
31.08.2020, 11:54
    #39994045
Tarasios
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 2165
sdku, спасибо за вариант, обязательно посмотрю
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка 2165 / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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