Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему? / 13 сообщений из 13, страница 1 из 1
03.05.2020, 12:02
    #39953836
Geizer1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
Я VBA почти не пользуюсь (только макросами), поэтому тонкостей не знаю.
В приведённом примере реализуется одна и та же задача двумя способами:
1. через свойство Column(х, х), 2. с помощью DFirst().
По событию 'после обновления' поля Цвет(1 или 2) вычисляется КодЦвета(1 или 2) и вставляется в соответствующее поле. Для контроля срабатывания события заполняется еще и поле Время(1 или 2).
Пока выбираем значения из выпадающего списка комбобокса всё работает хорошо в обоих случаях.
Если изменить значение текстового поля комбобоска (так чтоб получить не существующий вариант выпадающего списка), то должны получить пустое поле КодЦвета(1 или 2).
2-й способ очищает КодЦвета2 с первого раза, а 1-й способ очищает КодЦвета1 только со второго раза.
Вопрос почему 1-й способ очищает КодЦвета1 со второго раза.
...
Рейтинг: 0 / 0
03.05.2020, 12:10
    #39953837
Geizer1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
Да лучше добавлю сразу , для тех кто торопится.
Если просто открыть форму Цвета и сразу изменить значение поля Цвет1 (на не существующее), то КодЦвета1 сотрётся.
Но если сначала выбрать существующее значение, а потом изменить значение поля Цвет1 (на не существующее), то то КодЦвета1 не изменится. Но если еще раз изменить значение поля Цвет1 (на не существующее), то КодЦвета1 сотрётся.
...
Рейтинг: 0 / 0
05.05.2020, 04:34
    #39954250
Geizer1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
Изменил с
' записываем Код из источника строк комбобокса, в поле КодЦвета1 формы Цвета, сохраняем запись
Private Sub Цвет1_AfterUpdate()
Dim КодЦвета1 As Integer
Dim НомСтроки As Integer
НомСтроки = Screen.ActiveControl.ListIndex
[Forms]![Цвета]![КодЦвета1] = Screen.ActiveControl.Column(1, НомСтроки) ' .
[Forms]![Цвета]![время1] = Now()
DoCmd.RunCommand acCmdSaveRecord
End Sub

на

Private Sub Цвет1_AfterUpdate()
Dim КодЦвета1 As Integer
Dim НомСтроки As Integer
НомСтроки = Screen.ActiveControl.ListIndex
If НомСтроки = -1 Then
[Forms]![Цвета]![КодЦвета1] = Null
Else
[Forms]![Цвета]![КодЦвета1] = Screen.ActiveControl.Column(1, НомСтроки)
End If
[Forms]![Цвета]![время1] = Now()
DoCmd.RunCommand acCmdSaveRecord
End Sub

и стало работать так как надо.
Но причина для меня не понятна. Если кто знает отпишитесь, я думаю всем (простым читателям) полезно будет.
Прикреплён обновлённый пример.
...
Рейтинг: 0 / 0
05.05.2020, 13:09
    #39954299
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
Geizer1
Если изменить значение текстового поля комбобоска (так чтоб получить не существующий вариант выпадающего списка)
При этом нет выделенной строки в списке, поэтому ListIndex = -1. Другое дело, почему ваш "комбобоск" молча разрешает вводить "не существующий вариант". Видимо так настроен.
Есть еще вопросы (с учетом "Я VBA почти не пользуюсь"):
1. Если вас интересует значение выбранной строки, то попробуйте просто .Column(1) без всяких проверок ListIndex.
2. Если это процедура на событии конкретного поля конкретной формы, то зачем эти архитектурные излишества в виде Screen.ActiveControl? пишите явно Me.Цвет1 (а правильнее - Me![Цвет1])
3. Вместо DoCmd.RunCommand acCmdSaveRecord тоже логичнее использовать Me.Refresh или Me.Dirty = False.
...
Рейтинг: 0 / 0
05.05.2020, 21:18
    #39954429
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
Со списками,когда хотят добавить новое значение, работают как-то так:
...
Рейтинг: 0 / 0
06.05.2020, 09:11
    #39954485
Geizer1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
sdku, У меня задача не ограничить вводимую информацию пользователем, а записать в другое поле формы свойство этой введённой информации (КодЦвета1).
...
Рейтинг: 0 / 0
06.05.2020, 09:11
    #39954486
Geizer1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
Кривцов Анатолий,
...
Рейтинг: 0 / 0
06.05.2020, 09:45
    #39954492
Geizer1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
Кривцов Анатолий,
Мой комбобокс действительно так настроен, чтобы пользователь мог ввести любое значение, так и задумано.
1 применение Column(1) ситуацию не меняет
2 применение полного пути вместо Screen.ActiveControl ситуацию не меняет
3 применение Me.Dirty = False ситуацию не меняет
Пример с изменениями прилагается.

Хочу напомнить, что вопрос касается свойства Column(1). Почему оно не всегда срабатывает?
...
Рейтинг: 0 / 0
06.05.2020, 09:54
    #39954493
Geizer1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
Geizer1,
извините за 2 лишних сообщения Control+Enter жму рефлекторно
Вопрос решён!
мешала строка НомСтроки = [Forms]![Цвета]![Цвет1].ListIndex - убрал её и заработало как надо.

Хотя всё таки не понятно как
строка НомСтроки = [Forms]![Цвета]![Цвет1].ListIndex
мешает следующей строке [Forms]![Цвета]![КодЦвета1] = [Forms]![Цвета]![Цвет1].Column(1)
...
Рейтинг: 0 / 0
06.05.2020, 12:26
    #39954553
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
Geizer1
sdku, У меня задача не ограничить вводимую информацию пользователем, а записать в другое поле формы свойство этой введённой информации (КодЦвета1).
Так по-любому надо обрабатывать NotInList ведь заполнение "другого" поля зависит именно от наличия значения в списке,а не от AfterUpdate() которое произойдет совершенно независимо от того есть значение в списке или нет
...
Рейтинг: 0 / 0
06.05.2020, 14:46
    #39954624
Geizer1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
sdku,Так по-любому надо обрабатывать NotInList ведь заполнение "другого" поля зависит именно от наличия значения в списке,а не от AfterUpdate() которое произойдет совершенно независимо от того есть значение в списке или нет
Я знаю когда возникает событие AfterUpdate(). И мне действительно нужно что бы в "другом" поле были пустые значения когда введено значение не из списка.
Я просто хотел не много оптимизировать систему, заменив DFirst() на Column() и получил проблему которую даже не сразу обнаружил.
...
Рейтинг: 0 / 0
06.05.2020, 16:00
    #39954665
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
Geizer1
поля Цвет(1 или 2) вычисляется КодЦвета...(1 или 2)
и еще:как КОД(кодовое поле) может вычисляться(оно НИКАК,кроме специальных действий, не зависит от пользователя и вычисляться не может-только определяться-а ХДЕ Вы его храните?)-подумайте над логикой работы Вашей БД
...
Рейтинг: 0 / 0
06.05.2020, 18:20
    #39954742
Geizer1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
sdkuи еще:как КОД(кодовое поле) может вычисляться(оно НИКАК,кроме специальных действий, не зависит от пользователя и вычисляться не может-только определяться-а ХДЕ Вы его храните?)-подумайте над логикой работы Вашей БД
Это вопрос БОЛЬШОЙ и для отдельной темы.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему? / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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