Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Не отображаются уникальные значения в комбобоксе - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вопросы по VB, VBS, VB.net » Не отображаются уникальные значения в комбобоксе
Не отображаются уникальные значения в комбобоксе
parovoznik Дата: Воскресенье, 02.04.2017, 11:06 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
Добрый день .
На форме vb net есть комбобокс. В комбобоксе отображаются данные с БД Access.
В списке есть повторяющиеся данные.
Как заполнить комбобокс уникальными значениями(неповторяющимися).
Прилагаю файл :проект на vb Express 2010
К сообщению приложен файл: ComboUniq.7z (57.3 Kb)
 
Ответить
СообщениеДобрый день .
На форме vb net есть комбобокс. В комбобоксе отображаются данные с БД Access.
В списке есть повторяющиеся данные.
Как заполнить комбобокс уникальными значениями(неповторяющимися).
Прилагаю файл :проект на vb Express 2010

Автор - parovoznik
Дата добавления - 02.04.2017 в 11:06
RAN Дата: Воскресенье, 02.04.2017, 12:30 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
1. Найти любой из макровов Excel для создания списка уникальных (на словаре, или коллекции)
2. Получить данные из БД запросом на уникальные
vb Express 2010 не имею


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение1. Найти любой из макровов Excel для создания списка уникальных (на словаре, или коллекции)
2. Получить данные из БД запросом на уникальные
vb Express 2010 не имею

Автор - RAN
Дата добавления - 02.04.2017 в 12:30
parovoznik Дата: Воскресенье, 02.04.2017, 13:52 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
Вот сам код.
[vba]
Код
Public Class Form1
    Public Property ToolTipIcon As ToolTipIcon
   

    Sub connect()
        acsconn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\DB\База данных8.accdb;Persist Security Info=False;"
        acsconn.Open()
    End Sub

    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 Таблица1.Исполнители FROM Таблица1"

        '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
        ToolTip1.ToolTipIcon = Windows.Forms.ToolTipIcon.Info
        ToolTip1.ToolTipTitle = "Подсказка"
        ToolTip1.SetToolTip(ComboBox1, "Выбор исполнителя.Должны Отображаться уникальные значения")
        Module1.connect()
        Me.fillcombo()
    End Sub

End Class
[/vba]
 
Ответить
СообщениеВот сам код.
[vba]
Код
Public Class Form1
    Public Property ToolTipIcon As ToolTipIcon
   

    Sub connect()
        acsconn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\DB\База данных8.accdb;Persist Security Info=False;"
        acsconn.Open()
    End Sub

    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 Таблица1.Исполнители FROM Таблица1"

        '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
        ToolTip1.ToolTipIcon = Windows.Forms.ToolTipIcon.Info
        ToolTip1.ToolTipTitle = "Подсказка"
        ToolTip1.SetToolTip(ComboBox1, "Выбор исполнителя.Должны Отображаться уникальные значения")
        Module1.connect()
        Me.fillcombo()
    End Sub

End Class
[/vba]

Автор - parovoznik
Дата добавления - 02.04.2017 в 13:52
nilem Дата: Воскресенье, 02.04.2017, 20:11 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
а если так
[vba]
Код
strsql = "SELECT DISTINCT [Исполнители] FROM Таблица1"
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеа если так
[vba]
Код
strsql = "SELECT DISTINCT [Исполнители] FROM Таблица1"
[/vba]

Автор - nilem
Дата добавления - 02.04.2017 в 20:11
parovoznik Дата: Воскресенье, 02.04.2017, 21:24 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
nilem, запустил проект с Вашим кодом ,но уникальные значения в комбе не отображаются!!!!
Добавлено :
Использовал запрос в функції fillcombo такой же как и в ComboBox1_SelectedIndexChanged:
[vba]
Код
strsql = "SELECT DISTINCT Таблица1.Исполнители FROM Таблица1"
[/vba]
Вроде бы работает.


Сообщение отредактировал parovoznik - Воскресенье, 02.04.2017, 23:09
 
Ответить
Сообщениеnilem, запустил проект с Вашим кодом ,но уникальные значения в комбе не отображаются!!!!
Добавлено :
Использовал запрос в функції fillcombo такой же как и в ComboBox1_SelectedIndexChanged:
[vba]
Код
strsql = "SELECT DISTINCT Таблица1.Исполнители FROM Таблица1"
[/vba]
Вроде бы работает.

Автор - parovoznik
Дата добавления - 02.04.2017 в 21:24
RAN Дата: Понедельник, 03.04.2017, 08:56 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Acсess кушает так
[vba]
Код
Private Sub Form_Open(Cancel As Integer)
    [ПолеСоСписком0].RowSource = "SELECT First(Таблица1.[id]) AS [id поле] FROM Таблица1 GROUP BY Таблица1.[id];"
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Понедельник, 03.04.2017, 08:58
 
Ответить
СообщениеAcсess кушает так
[vba]
Код
Private Sub Form_Open(Cancel As Integer)
    [ПолеСоСписком0].RowSource = "SELECT First(Таблица1.[id]) AS [id поле] FROM Таблица1 GROUP BY Таблица1.[id];"
End Sub
[/vba]

Автор - RAN
Дата добавления - 03.04.2017 в 08:56
doober Дата: Вторник, 04.04.2017, 02:08 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010

Нет такого свойства.Есть другое.[vba]
Код
        Using conn = New System.Data.OleDb.OleDbConnection()
            conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\DB\База данных8.accdb;Persist Security Info=False;"
            conn.Open()
            Using cmd = conn.CreateCommand
                cmd.CommandText = "SELECT DISTINCT Таблица1.Исполнители FROM Таблица1 "
                Dim dt As New DataTable
                dt.Load(cmd.ExecuteReader)
                ComboBox1.DataSource = Nothing
                ComboBox1.ValueMember = ""
                ComboBox1.DisplayMember = ""
                ComboBox1.DataSource = dt
                ComboBox1.ValueMember = "Исполнители"
                ComboBox1.DisplayMember = "Исполнители"
            End Using
        End Using
[/vba]




Сообщение отредактировал doober - Вторник, 04.04.2017, 02:08
 
Ответить
Сообщение
Нет такого свойства.Есть другое.[vba]
Код
        Using conn = New System.Data.OleDb.OleDbConnection()
            conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\DB\База данных8.accdb;Persist Security Info=False;"
            conn.Open()
            Using cmd = conn.CreateCommand
                cmd.CommandText = "SELECT DISTINCT Таблица1.Исполнители FROM Таблица1 "
                Dim dt As New DataTable
                dt.Load(cmd.ExecuteReader)
                ComboBox1.DataSource = Nothing
                ComboBox1.ValueMember = ""
                ComboBox1.DisplayMember = ""
                ComboBox1.DataSource = dt
                ComboBox1.ValueMember = "Исполнители"
                ComboBox1.DisplayMember = "Исполнители"
            End Using
        End Using
[/vba]

Автор - doober
Дата добавления - 04.04.2017 в 02:08
parovoznik Дата: Вторник, 04.04.2017, 13:48 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
doober, все наивысшем уровне.
Этот код записать при загрузке формы? Правильно я понял.
Спасибо Вам. hands


Сообщение отредактировал parovoznik - Вторник, 04.04.2017, 13:49
 
Ответить
Сообщениеdoober, все наивысшем уровне.
Этот код записать при загрузке формы? Правильно я понял.
Спасибо Вам. hands

Автор - parovoznik
Дата добавления - 04.04.2017 в 13:48
doober Дата: Вторник, 04.04.2017, 17:24 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Можно в отдельной процедуре, можно и при загрузке формы
если загружаете один раз, то строки[vba]
Код
ComboBox1.DataSource = Nothing
                ComboBox1.ValueMember = ""
                ComboBox1.DisplayMember = ""
[/vba]
можно убрать


 
Ответить
СообщениеМожно в отдельной процедуре, можно и при загрузке формы
если загружаете один раз, то строки[vba]
Код
ComboBox1.DataSource = Nothing
                ComboBox1.ValueMember = ""
                ComboBox1.DisplayMember = ""
[/vba]
можно убрать

Автор - doober
Дата добавления - 04.04.2017 в 17:24
parovoznik Дата: Вторник, 04.04.2017, 19:40 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
Мне нужно ,что бы комбобокс при инициализации был пуст,а затем выбирать необходимые данные через комбобокс.
 
Ответить
СообщениеМне нужно ,что бы комбобокс при инициализации был пуст,а затем выбирать необходимые данные через комбобокс.

Автор - parovoznik
Дата добавления - 04.04.2017 в 19:40
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вопросы по VB, VBS, VB.net » Не отображаются уникальные значения в комбобоксе
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!