插入Access时如何处理空字段

phil652

我正在尝试将表单中的值插入到Access数据库中,但字段“值为”时出现错误Null即使使用,我仍然会收到错误消息= DBNull.Value

前8个值不能是Null因为这些是必填字段,但是如果该字段为空,则一旦到达Cost,就会出现此错误。

错误的屏幕截图

577行是 da.Update(ds, "EquipList")

这是我的代码:

 Try
        Dim con As New OleDb.OleDbConnection
        Dim ds As New DataSet
        Dim da As OleDb.OleDbDataAdapter
        Dim sql As String
        con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\equip_full.mdb;Jet OLEDB:Database Password=matt"
        con.Open()

        sql = "SELECT * FROM EquipList"
        da = New OleDb.OleDbDataAdapter(sql, con)

        da.Fill(ds, "EquipList")
        Dim cb As New OleDb.OleDbCommandBuilder(da)
        Dim dsNewRow As DataRow
        dsNewRow = ds.Tables("EquipList").NewRow()

        ' Equipment Information fields

        dsNewRow.Item(0) = UniqueID
        dsNewRow.Item(1) = InvNumber
        dsNewRow.Item(2) = Item

        dsNewRow.Item(3) = Type

        dsNewRow.Item(4) = Description

        dsNewRow.Item(5) = Manufacturer
        dsNewRow.Item(6) = Model_No
        dsNewRow.Item(7) = Serial_No
        If Cost = "" Then
            dsNewRow.Item(8) = DBNull.Value
        Else
            dsNewRow.Item(8) = Cost
        End If
        If Cost_Centre = "" Then
            dsNewRow.Item(9) = DBNull.Value
        Else
            dsNewRow.Item(9) = Cost_Centre
        End If

        'dsNewRow 10 to 39

        ds.Tables("EquipList").Rows.Add(dsNewRow)
        da.Update(ds, "EquipList")
        con.Close()

        MsgBox(Description & " has successfully been added to the system.")

 Catch ex As Exception
        MsgBox("Unable to connect to the database " & ex.ToString)
        Exit Sub
 End Try

更新:我的代码很好,这只是MsgBox的问题。MsgBox无法显示为空的值


删除MsgBox可以解决此问题。无论如何,它只是在那里进行测试。

贝丝

如果您未将其设置为其他任何值,则应将其保留为null。你有没有尝试过

   If Cost > "" Then
        dsNewRow.Item(8) = Cost
    End If


该字段可以为空吗?您也可以尝试将其设置为零(如果不能为null):

   If Cost > "" Then
        dsNewRow.Item(8) = Cost
   Else
        dsNewRow.Item(8) = 0
   End If

您不需要将日期或字符串值显式设置为null,如果未设置,则应将其默认设置为null(如果该值可以为null),而您的货币值则可能不为null。

例如,您的其他值应适用于:

If Cost_Centre > "" Then
    dsNewRow.Item(9) = Cost_Centre
End If

所有这些都假设您的值是可为空的,或者它们将接受null作为有效值。您是否已经通过Access界面确认了这一点?

如果字符串值将不接受null,则默认值为空字符串,该值与一个空文本框相同。然后,您应该能够像处理所需值一样无条件地存储值:

   If Cost > "" Then
        dsNewRow.Item(8) = Cost
   Else
        dsNewRow.Item(8) = 0
   End If
   dsNewRow.Item(9) = Cost_Centre

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用LIKE时如何处理空字段值

来自分类Dev

除法时如何处理空值

来自分类Dev

将MYSQL表导出到CSV时如何处理空字段

来自分类Dev

Access / VBA如何处理按空除?

来自分类Dev

使用NSCoding时如何处理字段类型更改

来自分类Dev

如何处理csv中的空日期以插入数据库

来自分类Dev

如何处理csv中的空日期以插入数据库

来自分类Dev

插入Javascript组件-如何处理“配置”

来自分类Dev

如何处理相互递归的插入

来自分类Dev

如何处理颤动的文本字段?

来自分类Dev

如何处理UiTableviewCell文本字段?

来自分类Dev

如何处理 elasticsearch 中包含“_”的字段?

来自分类Dev

在foreach循环中插入列表时如何处理事务

来自分类Dev

ReactiveMongo:插入新文档时如何处理数据库错误

来自分类Dev

使用ClosedXML插入数据表时如何处理合并的单元格?

来自分类Dev

在foreach循环中插入列表时如何处理事务

来自分类Dev

使用PHP将CSV数据插入MySQL时如何处理奇数

来自分类Dev

尝试插入或失败时如何处理select语句中的错误?

来自分类Dev

如何处理Kotlin中的空参数?

来自分类Dev

如何处理空的dict值

来自分类Dev

如何处理空参数包的情况

来自分类Dev

如何处理字节中的空值[]

来自分类Dev

如何处理Kotlin中的空参数?

来自分类Dev

如何处理与空矩阵的连接

来自分类Dev

折叠如何处理空列表?

来自分类Dev

如何处理必需但空的实现?

来自分类Dev

ModelMapper:如何处理枚举的空值

来自分类Dev

如何处理java空值

来自分类Dev

如果 ExecuteScalar 为空,如何处理