|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
добрый всем знатокам. прошу подсказать в чем может быть проблема есть форма, на ней есть 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. Заранее спасибо за помощь ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 06:12 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
http://www.sql.ru/forum/1297696/problema-so-spiskom Вроде как похоже? Мне по крайней мере помогло. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 07:30 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
Ганов Александр, я хоть и не работаю с такими вещами ( многозначные поля ), но думаю что нужно не выбранные Item , а работать с Field2 от Recordset2 новой DAO . Я бы получал объект из этого поля и проверял его содержимое. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 07:40 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
Подправлю... ПанургГанов Александр, я хоть и не работаю с такими вещами ( многозначные поля ), но думаю что нужно не выбранные Item считать , а работать с Field2 от Recordset2 новой DAO . Я бы получал объект из этого поля и проверял его содержимое. и дополню Объект представляет собой набор записей - Recordset ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 07:42 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
Панург, принял. покурю в сторону Recordset, тем более, что у объекта есть такое свойство, стало быть им можно воспользоваться. Вроде бы из cmb.Selected все должно работать, а вот почему не работает при событии form_current - загадка, ответ на которую не очевиден :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 08:36 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
Serg197311, спасибо за ссылочку. изучу детально, попробую потестить. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 08:37 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
Панург, спасибо за наводку. не обратил внимание на индекс "2", честно говоря, не пользовался новым DAO. изучу доки по этому поводу. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 08:40 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
Ганов Александрпочему не работает при событии form_current - загадка, ответ на которую не очевиденЯ точно не знаю (т.к. говорил выше, не работаю с такими полями), но могу предположить, что как такового списка не существует (для оптимизации), пока его намеренно не вызовут. Но это ИМХО, не основанное ни на чём. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 09:37 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
Ганов Александр Требуется чтобы при смене записей обновлялось поле "Кол-во языков", т.к. его значение нигде не хранится, а просто выводится для информации. А с какого перепугу это поле должно иметь какое-то значение,"которое нигде не хранится"(значение присваивается позже-в обработке AfterUpdate, да и то в новой записи) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 10:59 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
sdku, ну все верно. задумка простая при смене записи цикл опрашивает значение поля [сmbЯзыки], которое хранится в таблице и имеет реальное значение, то есть при загрузке следующей/предыдущей записи система опрашивает поле [сmbЯзыки] и присваивает кол-во отмеченных элементов полю [fldКолвоЯзыков]. Понятно, что если в [сmbЯзыки] данных нет, то и [fldКолвоЯзыков] будет НОЛЬ. но дело в том, что оно НОЛЬ и в том случае когда данные имеются Ради интереса перевесил на AfterUpdate формы, эффект тот же, кол-во НОЛЬ, хотя если я выберу я открою комбо и нажму ОК, т.к. записи там уже выбраны. То покажет кол-во записей, то события формы никак не обрабатывают свойство Selected, даже если данные имеются Private Sub Form_AfterUpdate() Call proсРасчетГрафКолво End Sub ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:10 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
вдогонку:посчитайте на событии current,если запись не новая,количество разделителей в поле[языки]+1 и присвойте это значение Вашему полю ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:11 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
еще вариант - расшифровка того топика что я присылал(оригинал от Панурга) - на клик мыши по полю вычисляем строку на которую кликнули(через координаты курсора), меняем в этой строке значение чекбокса, пересчитываем пол Количество языков. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:22 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
Ганов Александр 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-Возвращает массив логических значений для обрабатываемого списка, содержащий состояние его элементов (выбран/не выбран) Стесняюсь спросить:а что у Вас выбрано при переходе на новую запись? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:40 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
sdku, help я внимательно прочитал. в том то и дело. что выбран в данном случае означается отмечен галочками, при переходе на новую запись в списке также будут отмечены галочками те записи, которые были ранее отмечены и информация по которым сохранена в таблице. Получается что combobox трактует "выбран" только в том случае если элементом combo получен фокус, то есть даже если галочки по факту стоят, свойство SELECTED обозначает не отмеченные элементы, а выбранные по аналогии с объектом ListBox. То есть как бы те, на которых в данных момент стоит фокус (грубо говоря, которые с CTRL или SHIFT) выбраны мышью в списке. Получается, что банально данное свойство в такой интерпретации как я хотел использовать нельзя ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 13:15 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
sdku, логично, хороший вариант, без всяких проблем, найти все ";" и плюс +1 элемент ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 13:16 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
Serg197311, спасибо. интересный вариант. надо поэкспериментировать, не пробовал такой подход ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 13:18 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
Ганов Александр при переходе на новую запись в списке также будут отмечены галочками те записи, которые были ранее отмечены С какого перепугу? Мало того что не отмечены,а даже списка не увидите ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 13:46 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
sdku, будут отмечены 100% и список будет виден, т.к. прописаны в источнике combobox ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 14:10 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
вот таким "не очень" способом тоже работает :-) как только доходит до Value, которого нет, то выдает ошибку, на это цикл и заканчивается. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 14:16 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
но это какое-то неправильное решение. делать-то будет что надо :-), но как-то через "одно место" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 14:25 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
Ганов Александр, а можно пример базы с этим всем - таблица, форма и так далее? Мне, например, ни чего непонятно ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 14:45 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
sdku, оказалось все еще проще. Value возвращает массив с данными каждой выделенной строки, таким образом вот так все работает Код: vbnet 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 14:59 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
то есть все, что отмечено в combobox с множественными значениями (когда можно выбрать несколько значений как на скрине выше), сохраняется в таблице данных просто через точку с запятой язык1;язык2 и т.д. А при обращении к свойству Value выдает массив с несколькими строками, каждая из которых содержит значение, которые разделены в источнике данных (в таблице) точкой с запятой. Обратиться к каждой строке можно через ее индекс Value( index ) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 15:04 |
|
подсчет выбранных в ComboBox
|
|||
---|---|---|---|
#18+
Ганов Александр, не через "одно место": Код: vbnet 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 15:07 |
|
|
start [/forum/topic.php?fid=45&fpage=42&tid=1611074]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 292ms |
total: | 450ms |
0 / 0 |