2016-08-21 84 views
-1

当检查科学复选框。科学将显示在DataGridView中,但是当我检查阅读和科学时,两个主题不能显示在DataGridView上。解决这个问题的最佳方式(代码)是什么?提前致谢。无法解决此查询复选框 - VB.net MYSQL查询

`Public com As New MySql.Data.MySqlClient.MySqlCommand 
Public da As New MySql.Data.MySqlClient.MySqlDataAdapter 
Public dr As MySql.Data.MySqlClient.MySqlDataReader 
Public dt As New DataTable 
Public dt2 As New DataTable 
Public ds As DataSet 
Dim strSQL As String 
Dim strSQL2 As String 

Private Sub gbsubject_Enter(sender As Object, e As EventArgs) Handles gbsubject.Enter 

Dim SDA As New MySql.Data.MySqlClient.MySqlDataAdapter 
Dim dbDataSet As New DataTable 
Dim bSource As New BindingSource 

If cbxscience.Checked = True Then 

     con.Close() 
     con.Open() 

     strSQL2 = "SELECT subject_tbl.subject, lessonplan_tbl.lessontitle, kind_tbl.kind FROM kind_tbl INNER JOIN(lessonplan_tbl INNER JOIN(subject_tbl INNER JOIN skul_tbl ON subject_tbl.subjectID = skul_tbl.subjectID) ON lessonplan_tbl.lessonplanID = skul_tbl.lessonplanID) ON kind_tbl.kindID = skul_tbl.kindID WHERE subject_tbl.subject = '" & "SCIENCE" & "'" 

     dgvlessonplan.AutoSizeRowsMode = _ 
    DataGridViewAutoSizeRowsMode.None 


     com = New MySql.Data.MySqlClient.MySqlCommand(strSQL2, con) 
     SDA.SelectCommand = com 
     SDA.Fill(dbDataSet) 
     bSource.DataSource = dbDataSet 
     dgvlessonplan.DataSource = bSource 
     SDA.Update(dbDataSet) 
     con.Close() 

    End If 

    If cbxreading.Checked And cbxscience.Checked Then 

     con.Close() 
     con.Open() 

     strSQL2 = "SELECT subject_tbl.subject, lessonplan_tbl.lessontitle, kind_tbl.kind FROM kind_tbl INNER JOIN(lessonplan_tbl INNER JOIN(subject_tbl INNER JOIN skul_tbl ON subject_tbl.subjectID = skul_tbl.subjectID) ON lessonplan_tbl.lessonplanID = skul_tbl.lessonplanID) ON kind_tbl.kindID = skul_tbl.kindID WHERE subject_tbl.subject = '" & "READING" & "' and subject_tbl.subject = '" & "SCIENCE" & "'" 

     dgvlessonplan.AutoSizeRowsMode = _ 
    DataGridViewAutoSizeRowsMode.None 


     com = New MySql.Data.MySqlClient.MySqlCommand(strSQL2, con) 
     SDA.SelectCommand = com 
     SDA.Fill(dbDataSet) 
     bSource.DataSource = dbDataSet 
     dgvlessonplan.DataSource = bSource 
     SDA.Update(dbDataSet) 
     con.Close() 

    End If` 

回答

0

你需要在你的strSQL2变量使用OR不是AND

因此,改变这种:

strSQL2 = "SELECT subject_tbl.subject, lessonplan_tbl.lessontitle, kind_tbl.kind FROM kind_tbl INNER JOIN(lessonplan_tbl INNER JOIN(subject_tbl INNER JOIN skul_tbl ON subject_tbl.subjectID = skul_tbl.subjectID) ON lessonplan_tbl.lessonplanID = skul_tbl.lessonplanID) ON kind_tbl.kindID = skul_tbl.kindID WHERE subject_tbl.subject = '" & "READING" & "' and subject_tbl.subject = '" & "SCIENCE" & "'" 

这样:

strSQL2 = "SELECT subject_tbl.subject, lessonplan_tbl.lessontitle, kind_tbl.kind FROM kind_tbl INNER JOIN(lessonplan_tbl INNER JOIN(subject_tbl INNER JOIN skul_tbl ON subject_tbl.subjectID = skul_tbl.subjectID) ON lessonplan_tbl.lessonplanID = skul_tbl.lessonplanID) ON kind_tbl.kindID = skul_tbl.kindID WHERE subject_tbl.subject = 'READING' OR subject_tbl.subject = 'SCIENCE'"