我在Excel工作表中迭代某些行/单元格,而某些单元格是空白的。当我尝试执行插入时,如果单元格不包含任何数据,它会告诉我该特定参数没有默认值。在Access中,我将默认值设置为“= Null”但我仍然收到错误。我是否必须为每个参数执行如下所示的If语句以防止错误?如果可能的话,我想清理我的代码。
If worksheet1.GetValue(i, 14) Is Nothing Then
cmd.Parameters.Add("@Param1", OleDbType.Char).Value = DBNull.Value
Else
cmd.Parameters.Add("@Param1", OleDbType.Char).Value = worksheet1.GetValue(i, 14)
End If
答案 0 :(得分:1)
根据我的经验(尽管是C#),是的,你做到了。 Interop(这是我假设你正在使用的,虽然我不认识GetValue()
调用)通常会在你没有先检查时尝试从空单元格中获取数据时引发异常。我处理它的方法是将代码包装在一个方法中,每次都调用它(对不起,我的VB有点生锈):
Public Function GetCellContents(column As Integer, row As Integer) As String
If worksheet1.GetValue(column, row) Is Nothing Then
Return ""
Else
Return worksheet1.GetValue(column, row)
End If
End Function
然后你可以这样做:
cmd.Parameters.Add("@Param1", OleDbType.Char).Value = GetCellContents(i, 14);