powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
13 сообщений из 13, страница 1 из 1
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
    #39953836
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я VBA почти не пользуюсь (только макросами), поэтому тонкостей не знаю.
В приведённом примере реализуется одна и та же задача двумя способами:
1. через свойство Column(х, х), 2. с помощью DFirst().
По событию 'после обновления' поля Цвет(1 или 2) вычисляется КодЦвета(1 или 2) и вставляется в соответствующее поле. Для контроля срабатывания события заполняется еще и поле Время(1 или 2).
Пока выбираем значения из выпадающего списка комбобокса всё работает хорошо в обоих случаях.
Если изменить значение текстового поля комбобоска (так чтоб получить не существующий вариант выпадающего списка), то должны получить пустое поле КодЦвета(1 или 2).
2-й способ очищает КодЦвета2 с первого раза, а 1-й способ очищает КодЦвета1 только со второго раза.
Вопрос почему 1-й способ очищает КодЦвета1 со второго раза.
...
Рейтинг: 0 / 0
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
    #39953837
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да лучше добавлю сразу , для тех кто торопится.
Если просто открыть форму Цвета и сразу изменить значение поля Цвет1 (на не существующее), то КодЦвета1 сотрётся.
Но если сначала выбрать существующее значение, а потом изменить значение поля Цвет1 (на не существующее), то то КодЦвета1 не изменится. Но если еще раз изменить значение поля Цвет1 (на не существующее), то КодЦвета1 сотрётся.
...
Рейтинг: 0 / 0
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
    #39954250
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изменил с
' записываем Код из источника строк комбобокса, в поле КодЦвета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
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
    #39954299
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
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
    #39954429
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Со списками,когда хотят добавить новое значение, работают как-то так:
...
Рейтинг: 0 / 0
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
    #39954485
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku, У меня задача не ограничить вводимую информацию пользователем, а записать в другое поле формы свойство этой введённой информации (КодЦвета1).
...
Рейтинг: 0 / 0
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
    #39954486
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий,
...
Рейтинг: 0 / 0
Выборка из Источника строка комбобокса через Column(х, х) не всегда срабатывает. Почему?
    #39954492
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий,
Мой комбобокс действительно так настроен, чтобы пользователь мог ввести любое значение, так и задумано.
1 применение Column(1) ситуацию не меняет
2 применение полного пути вместо Screen.ActiveControl ситуацию не меняет
3 применение Me.Dirty = False ситуацию не меняет
Пример с изменениями прилагается.

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

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


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