美好的一天。我已经在我的列表视图上苦苦挣扎了好几天了。当我使用listview显示查询中的项目时,它开始正常并显示正确的信息但是当我开始在查询另一个表时使用它时,我得到一个Overload Resolution错误,其中它表示我无法转换DBNull到String。我在每个项目上添加了“.tostring”,所以我可以看到输出。
这是我的listview子
%
这些是第一个表查询的代码:
Public Sub ShowData()
DTable.Clear()
DSet.Tables.Add(New DataTable)
SQLAd.SelectCommand = SQLComm
SQLAd.Fill(DTable)
For Each Row In DTable.Rows
Search_List.ListView1.Items.Add(Row.Item(0).ToString)
Search_List.ListView1.Items(Search_List.ListView1.Items.Count-
1).SubItems.Add(Row.Item(1).ToString)
Search_List.ListView1.Items(Search_List.ListView1.Items.Count-
1).SubItems.Add(Row.Item(2).ToString)
Next
End Sub
和
SQL_Close()
SQL_Open
SQLComm = New SqlCommand("SELECT PatientID, LastName, GivenName FROM
tbPatient WHERE Disable !='Y'and (PatientID = @PatientID or LastName =
@LastName) ", SQLCon)
SQLComm.Parameters.AddWithValue("@PatientID", txtSearchPID.Text)
SQLComm.Parameters.AddWithValue("@LastName", txtSearchName.Text)
SQLComm.ExecuteNonQuery()
Search_List.ListView1.Columns(0).Text = "Patient ID"
Search_List.ListView1.Columns(1).Text = "Last Name"
Search_List.ListView1.Columns(2).Text = "Given Name"
ShowData()
SQL_Close()
如果我循环使用这些,它们会显示所有要求的数据,但是当我使用此
时SQL_Close()
SQL_Open()
SQLComm = New SqlCommand("SELECT PatientID, LastName, GivenName FROM
tbPatient WHERE Disable !='Y'and (PatientID = @PatientID or LastName =
@LastName)", SQLCon)
SQLComm.Parameters.AddWithValue("@PatientID", txtSearchPID.Text)
SQLComm.Parameters.AddWithValue("@LastName", txtSearchName.Text)
SQLComm.ExecuteNonQuery()
Search_List.ListView1.Columns(0).Text = "Patient ID"
Search_List.ListView1.Columns(1).Text = "Last Name"
Search_List.ListView1.Columns(2).Text = "Given Name"
ShowData()
SQL_Close()
列(0)和(2)为空。我不明白它是如何返回空值的,因为当我颠倒循环(在tbAccounts中搜索然后在tbPatient中)时,同样的事情发生了。