powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / заполнение n ComboBox-ов
6 сообщений из 6, страница 1 из 1
заполнение n ComboBox-ов
    #35456171
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добрый день! при открытии формы надо заполнить 12 comboBox-ов я заполняю так :
Код: plaintext
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.
Using cn As New SqlClient.SqlConnection(bldr.ConnectionString)
            Try
                cn.Open()
                Dim ds As New DataSet()
                With ds.Tables.Add("if")
                    .Columns.Add("код_иф", GetType(Integer))
                    .Columns.Add("назв_иф", GetType(String))
                End With
                With ds.Tables.Add("vr")
                    .Columns.Add("код_вр", GetType(Integer))
                    .Columns.Add("назв_вр", GetType(String))
                End With
                With ds.Tables.Add("zak")
                    .Columns.Add("id_zak", GetType(Integer))
                    .Columns.Add("назв_зак", GetType(String))
                End With
                --if
                Dim cmd_if = cn.CreateCommand()
                cmd_if.CommandText = "general.usp_get_sp_if"
                cmd_if.CommandType = CommandType.StoredProcedure
                Dim da_if As New SqlClient.SqlDataAdapter(cmd_if)
                da_if.Fill(ds.Tables( 0 ))
                Me.ComboBox_if.DataSource = ds.Tables( 0 )
                Me.ComboBox_if.DisplayMember = "назв_иф"
                Me.ComboBox_if.ValueMember = "код_иф"
                --vr
                Dim cmd_vr = cn.CreateCommand()
                cmd_vr.CommandText = "general.usp_get_sp_vr"
                cmd_vr.CommandType = CommandType.StoredProcedure
                Dim da_vr As New SqlClient.SqlDataAdapter(cmd_vr)
                da_vr.Fill(ds.Tables( 1 ))
                Me.ComboBox_vr.DataSource = ds.Tables( 1 )
                Me.ComboBox_vr.DisplayMember = "назв_вр"
                Me.ComboBox_vr.ValueMember = "код_вр"
                ' zak
                и т.д.
внимание вопрос ! :)
я тут ничего лишнего не делаю?
...
Рейтинг: 0 / 0
заполнение n ComboBox-ов
    #35456318
pyroman69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот это :
Код: plaintext
1.
2.
3.
4.
               With ds.Tables.Add(table)
                    .Columns.Add(col1, GetType(Integer))
                    .Columns.Add(col2, GetType(String))
                End With
метод 1, в котором на входе три параметра:таблица и два столбца(table, col1, col2)

а вот это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
                Dim cmd_if = cn.CreateCommand()
                cmd_if.CommandText = text
                cmd_if.CommandType = CommandType.StoredProcedure
                Dim da_if As New SqlClient.SqlDataAdapter(cmd_if)
                da_if.Fill(ds.Tables(tableIndex))
                Me.ComboBox_if.DataSource = ds.Tables(tableIndex)
                Me.ComboBox_if.DisplayMember = displayMember
                Me.ComboBox_if.ValueMember = valMember
               
метод 2, где тоже будут входные параметры(text, tableIndex, displayMember, valMember).
...
Рейтинг: 0 / 0
заполнение n ComboBox-ов
    #35456329
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ничего непонял что Вы хотели сказать...
...
Рейтинг: 0 / 0
заполнение n ComboBox-ов
    #35456378
BoriX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все очень просто: разделяй и властвуй :) Зачем 12 раз копипастить один и тот же код? Сделайте методы!
...
Рейтинг: 0 / 0
заполнение n ComboBox-ов
    #35457105
pyroman69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koJIo6okничего непонял что Вы хотели сказать...

у вас полностью одинаковые блоки в коде, отличаюца только именами, т.е. имя таблицы, имя столбцов, имя процедур и тд. Так зачем по сто раз писать одинаковые блоки, меняя в них тока имена, когда мона дублирующийся код загнать в метод, а имена передавать как параметр.
Короче меняем
Код: plaintext
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.
Private Sub AddTables(Dim tableName As String, Dim col1 As String, Dim col2 As String)
     With ds.Tables.Add(tableName)
          .Columns.Add(col1, GetType(Integer))
          .Columns.Add(col2, GetType(String))
     End With   
End Sub

Private Sub FillCB(Dim commandText As String, Dim tabIndex As Int, Dim displMem As String, Dim valMem As String)
     Dim cmd_if = cn.CreateCommand()
     cmd_if.CommandText = commandText 
     cmd_if.CommandType = CommandType.StoredProcedure
     Dim da_if As New SqlClient.SqlDataAdapter(cmd_if)
     da_if.Fill(ds.Tables(tabIndex ))
     Me.ComboBox_if.DataSource = ds.Tables(tabIndex )
     Me.ComboBox_if.DisplayMember = displMem 
     Me.ComboBox_if.ValueMember = valMem 
End Sub

Using cn As New SqlClient.SqlConnection(bldr.ConnectionString)
    Try
       cn.Open()
       Dim ds As New DataSet()
       AddTables("if", "код_иф", "назв_иф")
       AddTables("vr", "код_вр", "назв_вр")
       AddTables("zak", "id_zak", "назв_зак")

       FillCB("general.usp_get_sp_if",  0 , "назв_иф", "код_иф")
       FillCB("general.usp_get_sp_vr",  1 , "назв_вр", "код_вр")  
       
       ' zak
       и т.д.

Вот и всё. Но! Первый метод я бы немного переделал, для общих случаем....можно создать класс из 3х полей:название таблицы, столбца и тип столбца; и передавать в метод коллекцию объектов этого класса....но для вашего случая и так норм....и со вторым методом...можно подумать как всё оптимизировать, 12 строк вызова одного метода не есть красиво. Подумайте, тут навыком программирования на vb не надо :)
...
Рейтинг: 0 / 0
заполнение n ComboBox-ов
    #35457220
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо за рекомендации, про классы да интересно, но я не умею пока, модули - могу :)
мне больше в фопросе было интересно я правильный способ заполнения comboBox-ох, точнее dataTable, выбрал или надо подругому (чтоб было - быстрее, выше, сильнее... :) )
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / заполнение n ComboBox-ов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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