0

我的代码:

    Imports System.Data.OleDb
Public Class DBase

    Dim conn As New OleDbConnection
    Dim myqry As String = Nothing
    Dim mycmd As New OleDbCommand
    Dim mydr As OleDbDataReader
    Dim str As String = Nothing
    Dim objCmd As New OleDb.OleDbCommand

    Private Sub DBase_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call LVsettings()
        Call ConnToDB()
        Call FillListview()
        Call Set1()
    End Sub
#Region "FillListView"

    Sub FillListview()
        LV.Items.Clear()
        myqry = "SELECT * from Accounts ORDER BY YrandSec,FirstName Asc"
        mycmd = New OleDbCommand(myqry, conn)
        mydr = mycmd.ExecuteReader

        While mydr.Read
            With LV
                .Items.Add(mydr("Number"))
                With .Items(.Items.Count - 1).SubItems
                    .Add(mydr("StudNo"))
                    .Add(mydr("FirstName"))
                    .Add(mydr("LastName"))
                    .Add(mydr("YrandSec"))
                    .Add(mydr("Exer1")) - Error occurs here
                    .Add(mydr("Exer2"))
                    .Add(mydr("Exer3"))
                    .Add(mydr("Exer4"))
                    .Add(mydr("Exer5"))
                End With
            End With
        End While
    End Sub

#End Region

错误:

ERROR - (Overload resolution failed because no Public 'Add' can be called with these arguments:
    'Public Function Add(text As String) As System.Windows.Forms.ListViewItem.ListViewSubItem':
        Argument matching parameter 'text' cannot convert from 'DBNull' to 'String'.
    'Public Function Add(item As System.Windows.Forms.ListViewItem.ListViewSubItem) As System.Windows.Forms.ListViewItem.ListViewSubItem':
        Argument matching parameter 'item' cannot convert from 'DBNull' to 'ListViewSubItem'.)
4

1 回答 1

0

Add 方法需要一个字符串参数,但单元格值为 DBNull。VB.NET 无法在运行时将 DBNull 转换为字符串。您可以执行以下操作之一: 1. 更改您的 SQL 语句以明确列出要选择的列。可能为 NULL 的列应该被 ISNULL 语句包围,例如 ISNULL('Exer1', '')。2. 更改 While 循环中的代码以处理 NULL 值,例如:

.Add(mydr("Exer1"))

To(colIndex 是结果中列的索引,不幸的是您不能使用列的名称):

If Not mydr.IsDBNull(colIndex) Then .Add(mydr("Exer1"))

或类似的处理 NULL 值的东西。

于 2013-10-29T08:34:18.463 回答