我有个代码仅修改了IF的一部分就报错了

此主题相关图片如下:qq截图20181018171033.png

报错代码如下:修改为蓝色字体
Dim syms As List(of DataRow) = DataTables("溯源码").SQLSelect("当前所在部门 = '" & yh("所属部门") & "' And 是否可用 = 1") '找到本部门可用溯源码的行
For Each sym As DataRow In syms
fr = DataTables("盘点单据").Find("[溯源码] = '" & sym("子溯源码") & "'") '溯源码表中的溯源码是否存在与盘点单据
If fr IsNot Nothing Then
sym("是否可用") = 1
fr("审核人") = dr("姓名")
fr("审核日期") = Date.Now
Else
If fr("盘点类型") = "日盘" OrElse fr("盘点类型") = "抽盘" Then
If fr("商品编码") = sym("商品编码") Then
Dim wb As Row = Tables("外部出库").AddNew()
sym("是否可用") = 0
wb("溯源码" ) = sym("子溯源码")
wb("出库部门") = sym("当前所在部门")
wb("出库时间") = Date.Now
wb("单据类型") = "销售单"
wb("是否拆箱") = sym("是否拆箱")
wb("出库人") = yh("姓名")
wb("核销人") = dr("姓名")
End If
Else
Dim wb As Row = Tables("外部出库").AddNew()
sym("是否可用") = 0
wb("溯源码" ) = sym("子溯源码")
wb("出库部门") = sym("当前所在部门")
wb("出库时间") = Date.Now
wb("单据类型") = "销售单"
wb("是否拆箱") = sym("是否拆箱")
wb("出库人") = yh("姓名")
wb("核销人") = dr("姓名")
End If
End If
Next
DataTables("溯源码").SQLUpdate(syms) '更新数据库溯源码表中的是否可用状态
DataTables("外部出库").Save()
DataTables("盘点单据").Save()
MessageBox.Show("核销成功!", "提示")
Dim btn As WinForm.Button = Forms("盘点核销").Controls("Button1")
btn.PerformClick()
e.Form.Close
Else
Messagebox.show("密码错误!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If
End If
还有因为数据量较大,执行速度比较慢,请问有无办法优化上面代码