0
我尝试了很多方法,但问题依然无法解决。VB.NET无法更新datagridview中的SQL数据
我的目的是点击搜索按钮后,datagridview会在一定条件下显示来自SQL数据库的数据。
当我第一次点击搜索按钮,它的作品。但后来我点击搜索按钮第二次datagridview显示空白(我改变了一些条件,如不同的行号等)。
请帮帮我!谢谢你这么多
这里是我的VB代码:
Private Sub search_btn_Click(sender As Object, e As EventArgs) Handles search_btn.Click
Dim connectionString As String = "Data Source=xxx.xx.xx.xxx;Initial Catalog=QCDB;User ID=sa;Password=xxxxx;"
'different content of FROMTIME AND TOTIME
If FROMTIME = " " And TOTIME = " " Then
sql = "SELECT * FROM PRODUCT WHERE (SAMPLE_SOURCE = @SOURCE OR @SOURCE = 'all') AND (PRO_TYPE = @TYPE OR @TYPE = 'all') AND (PRO_NAME = @NAME OR @NAME = 'all')" &
"AND (EMBOSS_TOP = @EMBOSS_TOP OR @EMBOSS_TOP = 'all') AND (EMBOSS_BOTTOM = @EMBOSS_BOTTOM OR @EMBOSS_BOTTOM = 'all') AND (LINE_NO = @LINE_NO OR @LINE_NO = 'all')" &
"AND (SHIFT = @SHIFT OR @SHIFT = 'all') AND (STD_THICK = @STAND_THICKNESS OR @STAND_THICKNESS = 'all') AND (COLOR = @COLOR OR @COLOR = 'all') "
ElseIf FROMTIME = " " And TOTIME <> " " Then
FROMTIME = DateTime.Now.AddYears(-15).ToString("yyyy-MM-dd")
sql = "SELECT * FROM PRODUCT WHERE (SAMPLE_SOURCE = @SOURCE OR @SOURCE = 'all') AND (PRO_TYPE = @TYPE OR @TYPE = 'all') AND (PRO_NAME = @NAME OR @NAME = 'all')" &
"AND (EMBOSS_TOP = @EMBOSS_TOP OR @EMBOSS_TOP = 'all') AND (EMBOSS_BOTTOM = @EMBOSS_BOTTOM OR @EMBOSS_BOTTOM = 'all') AND (LINE_NO = @LINE_NO OR @LINE_NO = 'all')" &
"AND (SHIFT = @SHIFT OR @SHIFT = 'all') AND (STD_THICK = @STAND_THICKNESS OR @STAND_THICKNESS = 'all') AND (COLOR = @COLOR OR @COLOR = 'all') AND PRO_DATE BETWEEN'" & FROMTIME & "' AND '" & TOTIME & "'"
ElseIf FROMTIME <> " " And TOTIME = " " Then
TOTIME = DateTime.Now.ToString("yyyy-MM-dd")
sql = "SELECT * FROM PRODUCT WHERE (SAMPLE_SOURCE = @SOURCE OR @SOURCE = 'all') AND (PRO_TYPE = @TYPE OR @TYPE = 'all') AND (PRO_NAME = @NAME OR @NAME = 'all')" &
"AND (EMBOSS_TOP = @EMBOSS_TOP OR @EMBOSS_TOP = 'all') AND (EMBOSS_BOTTOM = @EMBOSS_BOTTOM OR @EMBOSS_BOTTOM = 'all') AND (LINE_NO = @LINE_NO OR @LINE_NO = 'all')" &
"AND (SHIFT = @SHIFT OR @SHIFT = 'all') AND (STD_THICK = @STAND_THICKNESS OR @STAND_THICKNESS = 'all') AND (COLOR = @COLOR OR @COLOR = 'all') AND PRO_DATE BETWEEN'" & FROMTIME & "' AND '" & TOTIME & "'"
Else
sql = "SELECT * FROM PRODUCT WHERE (SAMPLE_SOURCE = @SOURCE OR @SOURCE = 'all') AND (PRO_TYPE = @TYPE OR @TYPE = 'all') AND (PRO_NAME = @NAME OR @NAME = 'all')" &
"AND (EMBOSS_TOP = @EMBOSS_TOP OR @EMBOSS_TOP = 'all') AND (EMBOSS_BOTTOM = @EMBOSS_BOTTOM OR @EMBOSS_BOTTOM = 'all') AND (LINE_NO = @LINE_NO OR @LINE_NO = 'all')" &
"AND (SHIFT = @SHIFT OR @SHIFT = 'all') AND (STD_THICK = @STAND_THICKNESS OR @STAND_THICKNESS = 'all') AND (COLOR = @COLOR OR @COLOR = 'all') AND PRO_DATE BETWEEN'" & FROMTIME & "' AND '" & TOTIME & "'"
End If
Dim connection As New SqlConnection(connectionString)
Dim cmd = New SqlCommand(sql, connection)
Dim dataadapter As New SqlDataAdapter(cmd)
Dim ds As New System.Data.DataSet()
cmd.Parameters.AddWithValue("@SOURCE", sample_source_combox.Text)
cmd.Parameters.AddWithValue("@TYPE", product_type_combox.Text)
cmd.Parameters.AddWithValue("@NAME", product_name_combox.Text)
cmd.Parameters.AddWithValue("@EMBOSS_TOP", embossing_top_combox.Text)
cmd.Parameters.AddWithValue("@EMBOSS_BOTTOM", embossing_bottom_combox.Text)
cmd.Parameters.AddWithValue("@LINE_NO", line_number_combox.Text)
cmd.Parameters.AddWithValue("@SHIFT", shift_serach_combox.Text)
cmd.Parameters.AddWithValue("@STAND_THICKNESS", std_thickness_combox.Text)
cmd.Parameters.AddWithValue("@COLOR", color_search_combox.Text)
Try
connection.Open()
dataadapter.Fill(ds, "PRODUCT")
DataGridView1.Columns.Clear()
DataGridView1.Refresh()
With Me.DataGridView1
.RowsDefaultCellStyle.BackColor = Color.AliceBlue
.AlternatingRowsDefaultCellStyle.BackColor = Color.White
End With
connection.Close()
DataGridView1.DataSource = ds.Tables(0)
DataGridView1.AutoGenerateColumns = False
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub