powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / подсчет выбранных в ComboBox
25 сообщений из 34, страница 1 из 2
подсчет выбранных в ComboBox
    #39724228
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добрый всем знатокам.

прошу подсказать в чем может быть проблема
есть форма, на ней есть combobox . Заполнен 12-ю значениями. При этом выбраны галочками в разных записях разное кол-во значений. В данном случае - языков.
Прописал цикл на событие AfterUpdate

Private Sub proсРасчетГрафКолво()
Dim varКолвоЯзыков As Integer, I As Long

For I = 0 To [cmbЯзыки].ListCount - 1
If [cmbЯзыки].Selected(I) = True Then
varКолвоЯзыков = varКолвоЯзыков + 1
End If
Next I

[fldКолвоЯзыков].Value = varКолвоЯзыков

End Sub

Работает как надо, после выбора галочками нужных языков и нажатия ОК на combobox, в зеленой графе указывается подсчитанное кол-во языков.
Требуется чтобы при смене записей обновлялось поле "Кол-во языков", т.к. его значение нигде не хранится, а просто выводится для информации. Прикручиваю тот же код на Form_Current - не работает. Смотрю по отладчику, строка [cmbЯзыки].Selected(I) на каждой записи цикла дает значение НОЛЬ, соответственно, в ячейке отображается общее кол-во НОЛЬ. В чем может быть проблема? как подправить чтобы работало на событии Form_Current.

Заранее спасибо за помощь
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724239
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.sql.ru/forum/1297696/problema-so-spiskom
Вроде как похоже? Мне по крайней мере помогло.
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724241
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ганов Александр, я хоть и не работаю с такими вещами ( многозначные поля ), но думаю что нужно не выбранные Item , а работать с Field2 от Recordset2 новой DAO . Я бы получал объект из этого поля и проверял его содержимое.
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724242
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подправлю...
ПанургГанов Александр, я хоть и не работаю с такими вещами ( многозначные поля ), но думаю что нужно не выбранные Item считать , а работать с Field2 от Recordset2 новой DAO . Я бы получал объект из этого поля и проверял его содержимое.
и дополню

Объект представляет собой набор записей - Recordset
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724253
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург, принял. покурю в сторону Recordset, тем более, что у объекта есть такое свойство, стало быть им можно воспользоваться. Вроде бы из cmb.Selected все должно работать, а вот почему не работает при событии form_current - загадка, ответ на которую не очевиден :-)
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724254
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311, спасибо за ссылочку. изучу детально, попробую потестить.
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724255
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург, спасибо за наводку. не обратил внимание на индекс "2", честно говоря, не пользовался новым DAO. изучу доки по этому поводу.
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724278
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ганов Александрпочему не работает при событии form_current - загадка, ответ на которую не очевиденЯ точно не знаю (т.к. говорил выше, не работаю с такими полями), но могу предположить, что как такового списка не существует (для оптимизации), пока его намеренно не вызовут. Но это ИМХО, не основанное ни на чём.
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724331
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ганов Александр
Требуется чтобы при смене записей обновлялось поле "Кол-во языков", т.к. его значение нигде не хранится, а просто выводится для информации. А с какого перепугу это поле должно иметь какое-то значение,"которое нигде не хранится"(значение присваивается позже-в обработке AfterUpdate, да и то в новой записи)
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724340
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku, ну все верно. задумка простая при смене записи цикл опрашивает значение поля [сmbЯзыки], которое хранится в таблице и имеет реальное значение, то есть при загрузке следующей/предыдущей записи система опрашивает поле [сmbЯзыки] и присваивает кол-во отмеченных элементов полю [fldКолвоЯзыков]. Понятно, что если в [сmbЯзыки] данных нет, то и [fldКолвоЯзыков] будет НОЛЬ. но дело в том, что оно НОЛЬ и в том случае когда данные имеются
Ради интереса перевесил на AfterUpdate формы, эффект тот же, кол-во НОЛЬ, хотя если я выберу я открою комбо и нажму ОК, т.к. записи там уже выбраны. То покажет кол-во записей, то события формы никак не обрабатывают свойство Selected, даже если данные имеются

Private Sub Form_AfterUpdate()
Call proсРасчетГрафКолво
End Sub
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724343
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вдогонку:посчитайте на событии current,если запись не новая,количество разделителей в поле[языки]+1 и присвойте это значение Вашему полю
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724354
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще вариант - расшифровка того топика что я присылал(оригинал от Панурга) - на клик мыши по полю вычисляем строку на которую кликнули(через координаты курсора), меняем в этой строке значение чекбокса, пересчитываем пол Количество языков.
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724367
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ганов Александр
Private Sub proсРасчетГрафКолво()
Dim varКолвоЯзыков As Integer, I As Long

For I = 0 To [cmbЯзыки].ListCount - 1
If [cmbЯзыки].Selected(I) = True Then
varКолвоЯзыков = varКолвоЯзыков + 1
End If
Next I
[fldКолвоЯзыков].Value = varКолвоЯзыков
End Sub
Из HELP: Selected-Возвращает массив логических значений для обрабатываемого списка, содержащий состояние его элементов (выбран/не выбран)
Стесняюсь спросить:а что у Вас выбрано при переходе на новую запись?
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724454
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku, help я внимательно прочитал. в том то и дело. что выбран в данном случае означается отмечен галочками, при переходе на новую запись в списке также будут отмечены галочками те записи, которые были ранее отмечены и информация по которым сохранена в таблице. Получается что combobox трактует "выбран" только в том случае если элементом combo получен фокус, то есть даже если галочки по факту стоят, свойство SELECTED обозначает не отмеченные элементы, а выбранные по аналогии с объектом ListBox.
То есть как бы те, на которых в данных момент стоит фокус (грубо говоря, которые с CTRL или SHIFT) выбраны мышью в списке.
Получается, что банально данное свойство в такой интерпретации как я хотел использовать нельзя
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724455
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku, логично, хороший вариант, без всяких проблем, найти все ";" и плюс +1 элемент
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724456
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311, спасибо. интересный вариант. надо поэкспериментировать, не пробовал такой подход
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724471
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ганов Александр при переходе на новую запись в списке также будут отмечены галочками те записи, которые были ранее отмечены С какого перепугу? Мало того что не отмечены,а даже списка не увидите
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724487
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku, будут отмечены 100% и список будет виден, т.к. прописаны в источнике combobox
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724494
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub proсРасчетГрафКолво()
Dim varКолвоЯзыков As Integer, I As Long, varЯзык As String
     
For I = 0 To [cmbЯзыки].ListCount - 1
     On Error GoTo mark
     varЯзык = [cmbЯзыки].Value(I)
     varКолвоЯзыков = varКолвоЯзыков + 1
Next I

mark:
[fldКолвоЯзыков].Value = varКолвоЯзыков

End Sub



вот таким "не очень" способом тоже работает :-) как только доходит до Value, которого нет, то выдает ошибку, на это цикл и заканчивается.
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724510
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но это какое-то неправильное решение. делать-то будет что надо :-), но как-то через "одно место"
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724531
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ганов Александр, а можно пример базы с этим всем - таблица, форма и так далее? Мне, например, ни чего непонятно ;)
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724540
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku, оказалось все еще проще. Value возвращает массив с данными каждой выделенной строки, таким образом вот так все работает

Код: vbnet
1.
2.
3.
4.
5.
6.
Private Sub proсРасчетГрафКолво()

On Error Resume Next
If UBound([cmbЯзыки].Value) > 0 Then [fldКолвоЯзыков].Value = UBound([cmbЯзыки].Value) + 1

End Sub
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724545
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть все, что отмечено в combobox с множественными значениями (когда можно выбрать несколько значений как на скрине выше), сохраняется в таблице данных просто через точку с запятой язык1;язык2 и т.д. А при обращении к свойству Value выдает массив с несколькими строками, каждая из которых содержит значение, которые разделены в источнике данных (в таблице) точкой с запятой. Обратиться к каждой строке можно через ее индекс Value( index )
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724551
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ганов Александр,
не через "одно место":
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub Form_Current()
Dim retval
If Not Me.NewRecord and Not IsNull(Me.языки) Then
         retval= Split(Me.языки, ";")
              Me.Ваше поле= UBound(retval)+1
End If
End Sub
...
Рейтинг: 0 / 0
подсчет выбранных в ComboBox
    #39724553
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все правильно-опоздал-когда писал сообщение Ваше еще не видел (обновилось после публикации)
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / подсчет выбранных в ComboBox
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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