こんにちは私は私のコンボボックスで「720」のようにクリックするとデータベースからデータを取得しようとしています彼は私のデータベースの「pp12」列からデータを取得してデータをテキストボックスに入れますそして私が「1440」をクリックするとコンボボックスは、DBの「pp24」列からデータを取得し、テキストボックスにデータを配置します。ここに私のコードがあります。ありがとうございます。
コード:
Private Sub cmbnot_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbnot.SelectedIndexChanged
Dim nsi As String = txtchange.Text
Select Case nsi
Case "720"
With cmd
.Connection = conn
.CommandText = "select * from tblCycle"
End With
dr = cmd.ExecuteReader
If dr.HasRows Then
While dr.Read
txtpd.Text = dr.Item("pp12")
End While
dr.Close()
End If
Case "1440"
With cmd
.Connection = conn
.CommandText = "Select * from tblCycle"
End With
dr = cmd.ExecuteReader
If dr.HasRows Then
While dr.Read
txtpd.Text = dr.Item("pp24")
End While
dr.Close()
End If
End Select
あなたは何がうまくいかないかを言わなかった。
同じコードを2回記述しないように、コードでリファクタリングを行うことができます。また、接続がぶら下がっていないようにする必要があります。接続を開き、クエリを実行し、接続を閉じます。コードをそのまま表示すると、結果セットの最後の結果のみが表示されます。txtpd
マルチラインに設定されていると思います。
Option Strict On
Imports System.Data.SqlClient
Imports System.Text
Private Sub cmbnot_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbnot.SelectedIndexChanged
' should the following be CStr(cmbnot.SelectedItem) ?
Dim nsi As String = txtchange.Text
' We are going to select only the column which is actually needed.
Dim dbColumn As String = ""
Select Case nsi
Case "720"
dbColumn = "[pp12]"
Case "1440"
dbColumn = "[pp24]"
End Select
If dbColumn <> "" Then
Dim sql As String = String.Format("SELECT {0} FROM [tblCycle]", dbColumn)
Dim result As New StringBuilder
' The "Using" construct takes care of calling .Dispose() for you.
Using conn As New SqlConnection("YOUR CONNECTION STRING")
Using cmd As New SqlCommand(sql, conn)
conn.Open()
Dim dr As SqlDataReader = cmd.ExecuteReader()
If dr.HasRows() Then
While dr.Read()
result.AppendLine(dr.GetString(0))
End While
End If
conn.Close()
End Using
End Using
txtpd.Text = result.ToString()
End If
End Sub
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加