Member 12741660 Ответов: 2

Как заполнить combobox VB.NET из msaccess


Я не могу понять, почему он не дает мне выход. В описанной таблице есть данные, и даже набор данных заполняется, я видел это в режиме отладчика. Но элемент value и элемент display не заполняются. Я не могу понять почему.

Что я уже пробовал:

Private Sub frmItemEntry_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim strSql As String
        strSql = "Select UID, UnitName from UnitofMeasurement"
        Try
            conn.Open()
            With com
                .CommandType = CommandType.Text
                .CommandText = strSql
                .Connection = conn
            End With
            adp.SelectCommand = com
            adp.Fill(ds)
            adp.Dispose()
            com.Dispose()
            conn.Close()
            With cmbUnitOfMeasure
                .DataSource = ds.Tables("UnitofMeasurement")
                .ValueMember = "UID"
                .DisplayMember = "UnitName"
            End With
            
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        conn.Close()
    End Sub

Richard MacCutchan

У вас два разных написания: UnitofMeasurement и UnitOfMeasurement.

Member 12741660

Сделал поправку бесполезной. имя таблицы-UnitofMeasurement.

2 Ответов

Рейтинг:
2

Richard MacCutchan

Вы не можете использовать DataTable в качестве DataSource для ComboBox, видеть комбинированный список.Свойство DataSource (System.Окна.Формы)[^].

Картик показал мне ошибку моего пути(ов). :(


Karthik_Mahalingam

5 за твое смирение.

Рейтинг:
12

Karthik_Mahalingam

попробовать это

cmbUnitOfMeasure.ValueMember = "UID"
cmbUnitOfMeasure.DisplayMember = "UnitName"
cmbUnitOfMeasure.DataSource = ds.Tables(0)


Richard MacCutchan

Это то же самое, что OP уже закодировал, но ComboBox не принимает DataTable в качестве источника данных.

Karthik_Mahalingam

Привет Ричард
это сработает, я делал это много раз.
обратитесь к этому : http://stackoverflow.com/a/12495086

разница в моем коде заключается в том, что сначала объявите свойство valuemember и displaymember, а затем назначьте ему источник данных..
а также ds. Tables(0), так как [ ds.Tables("UnitofMeasurement")] этот код неубедителен...

Richard MacCutchan

Если вы уже сделали это, то вам следует опубликовать полный код. Я попробовал очень простой пример, и он не сработал.

Karthik_Mahalingam

Проверить это.

Dim dt As DataTable = новый DataTable
ДТ.Столбцы.Добавить("идентификатор")
ДТ.Столбцы.Добавить ("UnitName")
ДТ.Строк.Добавить(1, "а")
ДТ.Строк.Добавить(2, "б")
ДТ.Строк.Добавить(3, "с")
ДТ.Строк.Добавить(4, "Д")

cmbUnitOfMeasure.Источник данных = dt
cmbUnitOfMeasure.ValueMember = "идентификатор"
cmbUnitOfMeasure.DisplayMember = " UnitName"

Richard MacCutchan

Спасибо за ответ, я просто попробовал следующее:

Dim table1 As DataTable = New DataTable("UnitOfMeasurement")
table1.Columns.Add("UID")
table1.Columns.Add("UnitName")
table1.Rows.Add(1, "Inch")
table1.Rows.Add(2, "Foot")
table1.Rows.Add(3, "Yard")
table1.Rows.Add(4, "Furlong")
' Create a DataSet. Put table in it.
Dim ds As DataSet = New DataSet("Length")
ds.Tables.Add(table1)
' Visualize DataSet.
With ComboBox1
.DataSource = ds.Tables("UnitOfMeasurement")
.ValueMember = "UID"
.DisplayMember = "UnitName"
End With

что сработало в первый раз. Я не могу понять, как это не работало раньше, когда мой код был (AFAIR) таким же.

Karthik_Mahalingam

так что теперь вы должны согласиться ComboBox принимает DataTable в качестве источника данных
:-)

Richard MacCutchan

Абсолютно. И я так зол на себя за то, что не смог заставить исходный код работать; плохая отладка с моей стороны.

Karthik_Mahalingam

Иногда такое случается..

Richard MacCutchan

В моем случае-слишком часто.

Karthik_Mahalingam

:)

Member 12741660

вы правы. Я тоже сделал это сам,но забыл обновить здесь. В любом случае спасибо. Вместо того, чтобы использовать набор данных, я использовал экземпляр объекта DataTable. До сих пор мне любопытно, почему dataset не сработал.

Karthik_Mahalingam

Хм хорошо

Member 12741660

Но почему экземпляр dataset не работал, я до сих пор не понимаю.

Richard MacCutchan

Смотрите мой пример выше, очень похожий на ваш код, который работает.

Karthik_Mahalingam

я подозреваю, что проблема с этим ds. Tables ("UnitofMeasurement")