Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Yaffy
0 / 0 / 0
Регистрация: 09.03.2013
Сообщений: 7
1

Заполнить ListBox выборкой по значениям из другого столбца таблицы

10.03.2013, 00:28. Просмотров 2133. Ответов 11
Метки нет (Все метки)

Доброе время суток, уважаемые форумчане!
Не могу никак сообразить, как сделать выборку из таблицы перебором строк и заполнить листбокс значениями из соответствующего столбца нужных строк?
Конкретнее и наглядно на картинке -> http://imghost.in/img/2013-03/10/fu9gje3xz2xejrbns8tjehdvd.png

Есть таблица с именами и датами. Есть ЮзерФорма, суть в том что при открытии этой самой ЮзерФормы заполняется КомбоБокс неповторяющимися фамилиями из таблицы.
Требуется заполнить ЛистБокс на этой же форме датами, которые соответствуют выбранной фамилии.
Например если в КомбоБоксе выбрать 1111 то в ЛистБоксе должны появиться даты 01.01.2001, 13.03.2013,22.03.2013,18.03.2013,24.03.2013 ну и т.п. соответственно выбрав другую фамилию будут заполнятся другие даты.

Но вот как это реализовать в коде - я затрудняюсь. Понятно что нужно циклом пройтись по ячейкам и занести их в ЛистБокс, но как сделать именно выборку с нескольких разных строк при совпадении фамилий?

Фамилии и даты в столбцах могут повторяться, но одинаковых записей не будет.

Буду очень признателен Вам за помощь!
0
Миниатюры
Заполнить ListBox выборкой по значениям из другого столбца таблицы  
Вложения
Тип файла: 7z tabl.7z (26.7 Кб, 16 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2013, 00:28
Ответы с готовыми решениями:

Копирование ячеек таблицы 2, соответствующих искомым значениям таблицы 1
Перечитал форум, но похожего не нашел. В общем: Имеется таблица 1, в ней 2...

Вывод значений столбца, которые не равны значениям другого столбца
Необходимо вывести строки табл.1 со столбцами "А","Б","В" с условием, что...

Обновление столбца одной таблицы из другого столбца другой таблицы (база одна)
Доброго времени суток! Очень нуждаюсь в помощи. Значит: 2 таблицы 1 -...

Подбор по значениям столбца другой таблицы
Добрый день форумчане. На работе дали задание, а я честно говоря не очень...

Выборка строк таблицы по значениям столбца через начения в DBComboBox
Задача в следующем(возможно банальна(не судите строго)): 1) Есть таблица DBGrid...

11
ikki
призрак
2823 / 879 / 118
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
10.03.2013, 01:14 2
в модуль формы who_frm
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub ComboBox1_Change()
  Dim d As Object, i%, s$
  Set d = CreateObject("scripting.dictionary")
  Me.ListBox1.Clear: s = Me.ComboBox1.Text
  If s > "" Then
    For i = 4 To Лист1.Cells(Лист1.Rows.Count, 2).End(xlUp).Row
      If Лист1.Cells(i, 2).Text = s Then d.Item(Лист1.Cells(i, 5).Text) = 0&
    Next
    If d.Count Then Me.ListBox1.List = d.keys
  End If
End Sub
1
Yaffy
0 / 0 / 0
Регистрация: 09.03.2013
Сообщений: 7
10.03.2013, 20:11  [ТС] 3
Ох, признаться даже удивлен столь скорым ответом...
Огромное спасибо! Надеюсь, что однажды и я смогу Вам в чем-то помочь... :3

Благодаря Ikki вопрос решен, тему можно закрыть.
0
Скрипт
5445 / 1126 / 49
Регистрация: 15.09.2012
Сообщений: 3,416
10.03.2013, 20:24 4
Такую команду:
Visual Basic
1
Лист1.Cells(i, 5).Text
можно использовать, только если вы на 100% уверены, что у вас нет таких данных в ячейках: #####.
Такие данные могут появиться в некоторых случаях, когда, например, дата не умещается в ячейке.
Лист1.Cells(i, 5).Text как раз и даст вот такой текст: #####.

Альтернативный способ получить из ячейки данные в виде типа данных "String":
Visual Basic
1
CStr(Лист1.Cells(i, 5).Value)
1
ikki
призрак
2823 / 879 / 118
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
10.03.2013, 20:59 5
показан просто принцип решения вопроса.
менять и добавлять никто ж не запрещает
для данного примера вполне работоспособен Text.
для других случаев может понадобиться что-то другое.
например, если в столбце будут и даты, и целые числа вперемешку - CStr() не подойдёт.
можно использовать Value или функцию Format(), можно добавить сортировку.
принципа это не меняет.
0
Скрипт
5445 / 1126 / 49
Регистрация: 15.09.2012
Сообщений: 3,416
10.03.2013, 21:03 6
Цитата Сообщение от ikki Посмотреть сообщение
например, если в столбце будут и даты, и целые числа вперемешку - CStr() не подойдёт.
приведите пример, когда не подойдёт.
0
ikki
призрак
2823 / 879 / 118
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
10.03.2013, 21:11 7
введите в ячейку A1 дату 01.01.2013, примените формат ДД.ММ (предположим, нам не нужно видеть год - он один и тот же)
а затем посмотрите, что выдаст CStr([A1])

введите в ячейку A1 дату 01.01.2013, примените формат ДД.ММ (предположим, нам не нужно видеть год - он один и тот же)
а затем посмотрите, что выдаст CStr([A1]), а что - [A1].Text

Скрипт, это я к тому, что единый рецепт "вот так лучше" не всегда возможен.
хотя Ваше замечание, безусловно, полезно.
0
Скрипт
5445 / 1126 / 49
Регистрация: 15.09.2012
Сообщений: 3,416
10.03.2013, 21:16 8
ikki, да, соглашусь. В моём сообщении #4 нужно было добавить, что я предложил один из вариантов, а не единственный возможный вариант.
0
Yaffy
0 / 0 / 0
Регистрация: 09.03.2013
Сообщений: 7
10.03.2013, 21:20  [ТС] 9
Уважаемый Ikki, позволю себе задать еще 1 вопросик в продолжение на основе Вашего кода для ComboBox1_Change

Дело в том, что после того как мы выбрали фамилию и заполнили датами ListBox1, то после клика по дате на основе выбранных фамилии и даты нам надо получить количество часов работника опять же из таблицы.
Но если в таблице есть несколько строк с этой фамилией и датой, то количество часов надо сложить, ну и вывести хотя бы в Label на этой же форме...

Может быть Вы или кто-то из форумчан сможет помочь мне еще чуток, с этими выборками :3
0
Вложения
Тип файла: 7z tabl2.7z (29.8 Кб, 10 просмотров)
ikki
призрак
2823 / 879 / 118
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
10.03.2013, 21:56 10
можно так
1
Вложения
Тип файла: rar tabl2.rar (25.8 Кб, 31 просмотров)
Yaffy
0 / 0 / 0
Регистрация: 09.03.2013
Сообщений: 7
10.03.2013, 22:41  [ТС] 11
И вновь огромнейшая благодарность Вам!

Интересный этот объект Scripting.Dictionary... Честно говоря даже никогда раньше не встречал его и не понимаю как он работает... 0.о Сейчас погуглю, да почитаю о нем...
0
ikki
призрак
2823 / 879 / 118
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
10.03.2013, 23:06 12
можно установить в референсах ссылку на Microsoft Scripting Runtime - и поизучать свойства-методы через Object Browser.
кстати, тогда возможно и раннее связывание при создании объекта:
Visual Basic
1
dim d as new dictionary
0
10.03.2013, 23:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2013, 23:06

Запрос на обновление, отняв один столбец из одной таблицы от другого столбца из другой таблицы
здравствуйте, как мне сделать запрос на обновление отняв один столбец из одной...

Заполнить столбец в таблице исходя из данных другого столбца
Есть таблица где есть столбец с артикулами товара и столбец наименование этих...

Вычитание одного столбца таблицы из другого
Здравствуйте. Есть БД, написанная в InterBase. Подключена к Delphi. Нужно,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru