Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / После обновления пустое поле комбобокса / 16 сообщений из 16, страница 1 из 1
22.11.2018, 21:27
    #39737186
Lekks
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
Привет. на событие Change комбобокса стоит код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Private Sub FActor_Change()
    On Error GoTo FActor_Change_Error
    Dim f
    f = Me.FActor.Text
    Me.FActor.RowSource = "SELECT OffID,(People.FName &" & "' '" & "& Left(People.LName,1) &" & "'.'" & "& Left(People.PName,1) &" & "'.')" _
        & "AS FIO FROM People INNER JOIN Officers ON People.PeopleID = Officers.PeID WHERE People.FName like '*" & f & "*' ORDER BY People.FName"
    Me.FActor.SelStart = Len(f)
    Me.FActor.SelLength = 0
    Me.FActor.Dropdown
  
    On Error GoTo 0
    Exit Sub

FActor_Change_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure FActor_Change, line " & Erl & "."

End Sub



Код работает (фильтрует), но при выборе значения из списка в поле комбо значение пропадает. Переход форма-конструктор-форма - значение появляется. Других процедур для комбо не прописано, кроме начального задания значения комбо.RowSource на событии Form.Load.
В чем может быть причина и как от этого избавиться?

П.С. на других комбо формы такой же код работает как надо.
...
Рейтинг: 0 / 0
22.11.2018, 23:10
    #39737224
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
Lekks,
Поясните,пожалуйста,чего Вы хотите добиться(какой результат ожидается после выполнения этого кода)?
...
Рейтинг: 0 / 0
23.11.2018, 04:05
    #39737266
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
Lekksпри выборе значения из списка в поле комбо значение пропадает.По видимому, значение отсутствует в назначенном источнике строк ( RowSource ), а ширина колонки со значением у тебя скорее всего равна 0. Вот его становится и не видно.
...
Рейтинг: 0 / 0
23.11.2018, 04:52
    #39737268
Lekks
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
sdkuLekks,
Поясните,пожалуйста,чего Вы хотите добиться(какой результат ожидается после выполнения этого кода)?

Содержимое списка фильтруется в зависимости от введенного в поле комбо текста - поиск в списке по любой части слова, совпадающей с введенным текстом (это работает).
Далее должен быть выбор из отфильтрованного списка необходимого значения (ФИО сотрудника) и сохранение этого значения в поле комбо, но при выборе сотрудника в поле комбо пусто. При переходе из режима формы в режим конструктора и обратно значение появляется.
...
Рейтинг: 0 / 0
23.11.2018, 04:56
    #39737269
Lekks
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
Я так то понял причину. Выбираем то из списка "Иванов И.И." а like по фамилии. Фамилии Иванов И.И. не существует. Но что поменять все равно не пойму.
...
Рейтинг: 0 / 0
23.11.2018, 05:40
    #39737273
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
Lekks, на событие "после обновления" источником строк ( RowSource ) установи строку запроса без фильтра.
как-то так
Код: vbnet
1.
2.
3.
4.
...
Me.FActor.RowSource = "SELECT OffID, (People.FName & ' ' & Left(People.LName,1) & '.' & Left(People.PName,1) & '.')" & _
                      " AS FIO FROM People INNER JOIN Officers ON People.PeopleID = Officers.PeID;"
...
...
Рейтинг: 0 / 0
23.11.2018, 05:48
    #39737276
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
Поправил...
ПанургLekks, на событие комбобокса "после обновления" источником строк ( RowSource ) установи строку запроса без фильтра.

Да. И строку для источника строк (вообще строки запросов в коде VBA) формируй правильно. В представленной в примере пропущен пробел при разбивке на две подстроки. Так-то не должно работать.

..."'.')" _<-тут нет пробела
тут тоже нет -> & "AS ...
В результате будет -> ....)AS ...
...
Рейтинг: 0 / 0
23.11.2018, 11:43
    #39737412
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
LekksСодержимое списка фильтруется в зависимости от введенного в поле комбо текста - поиск в списке по любой части слова, совпадающей с введенным текстом (это работает).
Довольно странный алгоритм поиска:ввести символ"а", который содержится во многих фамилиях,и получить список который будет незначительно сокращен в сравнении с полным перечнем всех ФИО.Если же учесть что поле содержит 3 слова-фамилия,имя,отчество(хотя это должны быть 3 поля)такой поиск приводит в недоумение.
может поиск организовать так?
...
Рейтинг: 0 / 0
23.11.2018, 11:47
    #39737413
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
Панургстроку для источника строк (вообще строки запросов в коде VBA) формируй правильно.
В представленной в примере пропущен пробел при разбивке на две подстроки.
Так-то не должно работать.

..."'.')" _<-тут нет пробела
тут тоже нет -> & "AS ...
В результате будет -> ....)AS ...Это нормально, работать будет.
Скобка является разделителем.
...
Рейтинг: 0 / 0
23.11.2018, 12:07
    #39737430
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
__Michelle, предпочитаю не экспериментировать. Должен быть пробел, будьте добры поставить. А то потом разные неожиданные ошибки.
...
Рейтинг: 0 / 0
23.11.2018, 18:29
    #39737683
Lekks
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
Всем спасибо. Перебил строку запроса, работает.
Код: vbnet
1.
2.
3.
4.
Me.FActor.RowSource = "SELECT OffID,(People.FName &" & "' '" & "& Left(People.LName,1) &" & "'.'" & "& Left(People.PName,1) &" & "'.')" _
        & "AS FIO FROM People INNER JOIN Officers ON People.PeopleID = Officers.PeID " _
        & "WHERE (People.FName &" & "' '" & "&   Left(People.LName,1) &" & "'.'" & "& Left(People.PName,1) &" & "'.') like '*" & f & "*' " _
        & "ORDER BY People.FName
...
Рейтинг: 0 / 0
23.11.2018, 18:58
    #39737704
DarkMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
LekksВсем спасибо. Перебил строку запроса, работает.
А как насчет отладки кода? :)) 21735653
...
Рейтинг: 0 / 0
23.11.2018, 20:40
    #39737742
Lekks
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
DarkManLekksВсем спасибо. Перебил строку запроса, работает.
А как насчет отладки кода? :)) 21735653

В дебагере проверил. Все как хотелось. И переменная и роусурс.
...
Рейтинг: 0 / 0
23.11.2018, 20:41
    #39737743
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
Lekks, зачем столько амперсандов? половина не нужна, я же написал строку
...
Рейтинг: 0 / 0
23.11.2018, 20:44
    #39737744
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
Lekks, в твоей строке, все что не в начале строк чёрные, выкинь. Ну и кавычки тоже.
...
Рейтинг: 0 / 0
23.11.2018, 21:25
    #39737756
Lekks
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После обновления пустое поле комбобокса
ПанургLekks, в твоей строке, все что не в начале строк чёрные, выкинь. Ну и кавычки тоже.

Понял))) Пасиб. Я еще с кавычками путаюсь, лучше перебдеть))
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / После обновления пустое поле комбобокса / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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