Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
 Аватар для yutrans
142 / 125 / 50
Регистрация: 10.11.2011
Сообщений: 622

Заполнить ComboBox уникальными значениями

31.01.2016, 18:22. Показов 3904. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день . На форме есть комбобокс. В комбобоксе отображаются данные с БД Access.
В списке есть повторяющиеся данные.
Как заполнить комбобокс уникальными значениями(неповторяющимися)&
Прилагаю файл :проект на vb Express 2010
Вложения
Тип файла: 7z пример.7z (47.4 Кб, 11 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.01.2016, 18:22
Ответы с готовыми решениями:

Автоматическое заполнение коллекции ComboBox из столбца БД уникальными значениями
Приветствую Вас Друзья подскажите пожалуйста. Этим кодом Dim com As New OleDbCommand("select Столбец from Название таблицы", conn)...

Заполнить массив недостающими значениями
Здравствуйте! Ситуация такая, имеется listview, со значениями типа 1,2,3,4,6,7,9 Задача такая: Нужно из всех имеющихся значений...

Заполнить ListView значениями из файлов
Всем привет. Помогите пожалуйста заполнить listviev значениями из файлов .txt в папке. Файлы лежат в папке, каждый из них имеет...

13
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
31.01.2016, 18:48
yutrans, используйте LINQ. Например, есть массив:
VB.NET
1
Dim _combo As String() = {"Саша", "Саня", "Александр", "Саша", "Саня", "Саня"}
Отбросить повторения:
VB.NET
1
_combo.Distinct
Ну и WinForm пример:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Imports System.Linq
Imports System.Drawing
Imports System.Windows.Forms
 
Namespace Uniq
  Friend NotInheritable Class frmMain
    Inherits Form
    Public Sub New()
      InitializeComponent()
    End Sub
 
    Private cbUniq As ComboBox
    
    Private _combo As String() = {"Саша", "Саня", "Александр", "Саша", "Саня", "Саня"}
 
    Private Sub InitializeComponent()
      Me.cbUniq = New ComboBox() With { _
        .Dock = DockStyle.Top _
      }
      Me.ClientSize = New Size(300, 70)
      Me.Controls.Add(Me.cbUniq)
      Me.FormBorderStyle = FormBorderStyle.FixedSingle
      Me.StartPosition = FormStartPosition.CenterScreen
      Me.Text = "Uniq"
      AddHandler Me.Load, AddressOf frmMain_Load
    End Sub
    
    Private Sub frmMain_Load(ByVal sender As Object, ByVal e As EventArgs)
      _combo.Distinct.ToList.ForEach(Function(i) cbUniq.Items.Add(i))
      cbUniq.SelectedIndex = 0
    End Sub
  End Class
 
  Friend NotInheritable Class Program
    <STAThread> _
    Shared Sub Main()
      Application.EnableVisualStyles()
      Application.Run(New frmMain())
    End Sub
  End Class
End Namespace
2
 Аватар для yutrans
142 / 125 / 50
Регистрация: 10.11.2011
Сообщений: 622
31.01.2016, 19:10  [ТС]
Спасибо, Но у меня данные подгружаются из базы данных.
0
70 / 60 / 16
Регистрация: 22.10.2012
Сообщений: 351
31.01.2016, 19:11
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

можно выполнить запрос к базе данных с выборкой уникальных значений
после SELECT дописать DISTINCT
SQL
1
SELECT DISTINCT column1 FROM table1
4
 Аватар для XIST
1960 / 1070 / 148
Регистрация: 01.10.2009
Сообщений: 3,593
Записей в блоге: 1
31.01.2016, 19:31
greg zakharov, зачем так человека сразу пугать страшными словами.

VB.NET
1
2
3
4
5
6
       Dim _combo As String() = {"Саша", "Саня", "Александр", "Саша", "Саня", "Саня"}
        Dim combo2 = _combo.ToArray
 
        For Each c In combo2
            ComboBox1.Items.Add(c)
        Next
Добавлено через 7 минут
ой не про то
VB.NET
1
2
3
4
5
Dim _combo As String() = {"Саша", "Саня", "Александр", "Саша", "Саня", "Саня"}
        Dim combo2 = _combo.Distinct
 
        For Each c In combo2
            ComboBox1.Items.Add(c)
1
 Аватар для yutrans
142 / 125 / 50
Регистрация: 10.11.2011
Сообщений: 622
31.01.2016, 20:13  [ТС]
SELECT DISTINCT column1 FROM table1 -это для SQL,а у меня база в Access
0
 Аватар для XIST
1960 / 1070 / 148
Регистрация: 01.10.2009
Сообщений: 3,593
Записей в блоге: 1
31.01.2016, 20:34
Тогда начните от сюда
WTF this is SQL?
1
 Аватар для yutrans
142 / 125 / 50
Регистрация: 10.11.2011
Сообщений: 622
31.01.2016, 22:23  [ТС]
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Public Class Form1
    Sub fillcombo()
 
        strsql = "select * from Таблица1"
        Dim acscmd As New OleDb.OleDbCommand
        acscmd.CommandText = strsql
        acscmd.Connection = acsconn
        acsdr = acscmd.ExecuteReader
        While (acsdr.Read())
            ComboBox1.Items.Add(acsdr("Исполнители"))
        End While
        acscmd.Dispose()
        acsdr.Close()
    End Sub
 
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        strsql = "select * from Таблица1 where Исполнители ='" & ComboBox1.Text & "'" & " SELECT DISTINCT Исполнители from Таблица1"
 
        Dim acscmd As New OleDb.OleDbCommand
        acscmd.CommandText = strsql
        acscmd.Connection = acsconn
        acsdr = acscmd.ExecuteReader
 
        acscmd.Dispose()
        acsdr.Close()
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        Module1.connect()
        Me.fillcombo()
    End Sub
 
End Class
Добавлено через 2 минуты
Подкоректировал код ,но в комбобоксе уникальные значения не отображаются.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Public Class Form1
    Sub fillcombo()
 
        strsql = "select * from Таблица1"
        Dim acscmd As New OleDb.OleDbCommand
        acscmd.CommandText = strsql
        acscmd.Connection = acsconn
        acsdr = acscmd.ExecuteReader
        While (acsdr.Read())
            ComboBox1.Items.Add(acsdr("Исполнители"))
        End While
        acscmd.Dispose()
        acsdr.Close()
    End Sub
 
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        strsql = "select * from Таблица1 where Исполнители ='" & ComboBox1.Text & "'" & " SELECT DISTINCT Исполнители from Таблица1"
 
        Dim acscmd As New OleDb.OleDbCommand
        acscmd.CommandText = strsql
        acscmd.Connection = acsconn
        acsdr = acscmd.ExecuteReader
 
        acscmd.Dispose()
        acsdr.Close()
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        Module1.connect()
        Me.fillcombo()
    End Sub
 
End Class
0
 Аватар для XIST
1960 / 1070 / 148
Регистрация: 01.10.2009
Сообщений: 3,593
Записей в блоге: 1
01.02.2016, 06:19
SQL
1
"select DISTINCT Исполнители from Таблица1 where....
Вы даже не посмотрели ресурс, что я Вам дал, там присутствует distinct.
И sql это отдельный язык требующий изучения
2
 Аватар для yutrans
142 / 125 / 50
Регистрация: 10.11.2011
Сообщений: 622
01.02.2016, 07:29  [ТС]
XIST, спасибо за подсказку. Исправил код ,но результата нет
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Public Class Form1
    Sub fillcombo()
 
        strsql = "select distinct * from Таблица1"
        Dim acscmd As New OleDb.OleDbCommand
        acscmd.CommandText = strsql
        acscmd.Connection = acsconn
        acsdr = acscmd.ExecuteReader
        While (acsdr.Read())
            ComboBox1.Items.Add(acsdr("Исполнители"))
        End While
        acscmd.Dispose()
        acsdr.Close()
    End Sub
 
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        'strsql = "select distinct* from Таблица1 where Исполнители ='" & ComboBox1.Text & "'"
 
        strsql = "select DISTINCT Исполнители from Таблица1 where Исполнители ='" & ComboBox1.Text & "'"
 
 
        Dim acscmd As New OleDb.OleDbCommand
        acscmd.CommandText = strsql
        acscmd.Connection = acsconn
        acsdr = acscmd.ExecuteReader
        acscmd.Dispose()
        acsdr.Close()
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        Module1.connect()
        Me.fillcombo()
    End Sub
 
End Class
0
70 / 60 / 16
Регистрация: 22.10.2012
Сообщений: 351
01.02.2016, 12:32
не, ну ты странный конечно
Access - это не sql конечно, а база данных естественно
а sql применяется к базам данных, к любой, в т.ч. и Access

чтоб ты понимал distinct удаляет из запроса одинаковые строки

вот представь таблицу City с данными: City и Street
херсон ул.Гагарина
херсон ул.Киевская
Запорожье ул.Гагарина
Запорожье ул.Калинина

запрос Select Distinct * FROM City вернет 4 строки
запрос Select Distinct City.City FROM City вернет 2 строки
запрос Select Distinct City.Street FROM City вернет 3 строки

учи sql, он не такой сложный и понадобится во многих случаях
0
 Аватар для yutrans
142 / 125 / 50
Регистрация: 10.11.2011
Сообщений: 622
01.02.2016, 14:21  [ТС]
kritjara,спасибо за пример. Я создал БД в SQL да все работает.А как на моем примере подкорректировать ,что б работало?
0
70 / 60 / 16
Регистрация: 22.10.2012
Сообщений: 351
02.02.2016, 18:25
Лучший ответ Сообщение было отмечено yutrans как решение

Решение

SQL
1
 strsql = "SELECT DISTINCT Таблица1.Название_столбца FROM Таблица1"
Добавлено через 2 минуты
и не обязательно создавать бд в mysql
это применимо и к access
1
 Аватар для yutrans
142 / 125 / 50
Регистрация: 10.11.2011
Сообщений: 622
02.02.2016, 22:30  [ТС]
kritjara, спасибо все работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.02.2016, 22:30
Помогаю со студенческими работами здесь

При выборе значения в ComboBox автозаполняются TextBox значениями из таблицы
Две таблицы &quot;Склад&quot; и &quot;Заказы&quot;. При заполнении формы &quot;Заказы&quot; через ComboBox выбирается ID товара(в таблице &quot;Склад&quot; это просто...

Заполнить массив определенного размера уникальными значениями
Помогите неумехе! Я только учусь :( Задача: в Excel 2007 есть определенное кол-во столбцов и строк (в моем случае 4 столбца и 950 строк),...

Заполнить массив уникальными значениями в определенном интервале
как сделать рандом без повтора? например заполнить массив значениями в определнном интервале. каждый раз проверять содержимое массива не...

Заполнение на листе2 ComboBox уникальными значениями из столбца листа1
Добрый вечер форумчанам! Прошу помощи в написании макроса: На листе &quot;Расчет&quot; располагается ComboBox, который должен при...

заполнить comboBox значениями из ini
На форме находится элемент comboBox (абсолютно пустой, без строк). Как поместить в него строки из ini файла (файл находится в папке с...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru