#sql #vb.net #datareader
#sql #vb.net #datareader
Вопрос:
У меня есть форма с одним выпадающим списком и текстовым полем.
Теперь у меня есть база данных SQL с таблицей с именем balance
. В нем есть два столбца, один из которых customername
, а другой obbalance
.
Теперь я привязал все имена клиентов к выпадающему списку.
Что мне нужно сделать, так это:
когда пользователь выбирает имя клиента из выпадающего списка, в текстовом поле должно отображаться obbalance
выбранное customername
. Здесь имя клиента не будет повторяться, только одно имя с клиентом.
Что я могу сделать? Пожалуйста, помогите мне.
Dim conectionstring As String
conectionstring = "Data Source=.SQLEXPRESS;AttachDbFilename=C:Documents and SettingsAdministratorMy DocumentsVisual Studio 2005ProjectsSHOPPROJECTSHOPPROJECTshop.mdf;Integrated Security=True;User Instance=True"
Dim ST As String = ComboBox1.SelectedText
Dim sqlcon As New SqlConnection(conectionstring)
Dim sqlcmd As New SqlCommand("SELECT OBBALANCE FROM BALANCE WHERE CUSTOMERNAME = " amp; " '" amp; ST amp; "'" amp; "", sqlcon)
MessageBox.Show(TextBox1.Text)
Dim result As Object
Try
sqlcon.Open()
' Dim sdr As SqlDataReader = sqlcmd.ExecuteReader()
result = sqlcmd.ExecuteScalar()
If result IsNot Nothing Then
TextBox1.Text = result.ToString()
MessageBox.Show(TextBox1.Text)
End If
Catch ex As SqlException
MessageBox.Show(ex.Message)
End Try
End Sub
я сделал это, но все еще не могу увидеть значение в текстовом поле, а obbalance — это последнее значение из базы данных sql
Ответ №1:
Private Sub doSomething()
Dim conectionstring As String
conectionstring = "Data Source=.SQLEXPRESS;AttachDbFilename=C:Documents and SettingsAdministratorMy DocumentsVisual Studio 2005ProjectsSHOPPROJECTSHOPPROJECTshop.mdf;Integrated Security=True;User Instance=True"
Dim ST As String = ComboBox1.SelectedText
Dim sqlcon As New SqlConnection(conectionstring)
Dim sqlcmd As New SqlCommand("SELECT OBBALANCE, CUSTOMERNAME FROM BALANCE" ,sqlcon)
sqlcmd.CommandType = CommandType.Text
Try
sqlcon.Open()
Dim sdr As SqlDataReader = sqlcmd.ExecuteReader()
If sdr IsNot Nothing Then
Dim dt As DataTable
dt.Load(sdr)
With yourCombobox
.DataSource = dt
.DisplayMember = "CUSTOMERNAME"
.ValueMember = "OBBALANCE"
End With
End If
Catch ex As SqlException
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub comboBoxChange(ByVal sender As Object, ByVal e As System.EventArgs) Handles yourCombobox.SelectedIndexChanged
textbox.text = yourCombobox.SelectedValue.ToString
End Sub
Комментарии:
1. Я поместил ваш
SqlDataReader
вDatatable
. Затем привязал этоDatatable
к вашему выпадающему списку. Затем вSelectedIndexChanged
событии для вашегоcombobox
я добавил код, чтобы захватить текст изcombobox
и поместить его вtextbox
.2. у меня есть таблица базы данных, в которой указаны имя клиента и баланс, теперь мне нужно, чтобы при выборе выпадающего списка в текстовом поле отображалось значение баланса для выбранного имени пользователя из этой таблицы, теперь вы можете понять
3. Это то, что устанавливает
With End With
инструкция. Он привязываетDatatable
столбец какDisplayMember
(CustomerName), а столбец какValueMember
(Obbalance) вашегоComboBox
. Я обновил,SelectedIndexChanged
чтобы захватитьvalue
изComboBox
, установив его в качествеTextBox
текстового значения.4. Затемнить dt как DataTable dt.Load(objDataReader) С ComboBox1.SelectedItem .DataSource = dt . DisplayMember = dt «ИМЯ_КЛИЕНТА» // ЗДЕСЬ ОТОБРАЖАЕТСЯ ОШИБКА, КОНЕЦ ИНСТРУКЦИИ НЕВЕРЕН, КАК И ТО, КАК ЗАПИСАТЬ ЗДЕСЬ .ValueMember = dt ЗАВЕРШАЕТ баланс с помощью TextBox1.Text = ComboBox1.SelectedValue. toString
5. ИЗВИНИТЕ, ЧТО СНОВА БЕСПОКОЮ вас, СЭР, не могли бы вы отредактировать мой вопрос и поместить этот код туда, куда я должен поместить ваш отредактированный код, это сбивает меня с толку, пожалуйста, помогите мне отредактировать мой вопрос и разместить свой код там, где он должен быть, сэр, пожалуйста, помогите мне………