各位专家,
我发现我写的系统在数据写入时有时候会混乱,不知道是怎么回事?我是这样做的:
1. 找到数据:
Dim dr as DataRow = DataTables(XX).Find("XX")
2. 判断数据是否存在:
IF dr IsNot Nothing then
写入;
End If
如果数据少,在10几行的情况下写入时没有问题。但是在40多行时就不行了。
发生写入错误的情况在循环写入时:
例如我的转仓单,因为转仓单在操作时有两部分要处理:
转入--入库累计要加;
转出--出库累计要加;
在数据多的时候发现转入是没有问题的。而转出就直接没有处理了。代码如下:
'转仓操作函数
Dim Rowscount As Integer = 0
If Tables("转仓单主文件").Rows.Count > 0 Then
Dim fm_stock As String
fm_stock = Tables("转仓单主文件").Current("由仓库编码")
Dim To_stock As String
To_stock = Tables("转仓单主文件").Current("到仓库编码")
With Tables("转仓单主文件")
If .Current("完成转仓") Then
MessageBox.Show("请不要重复转仓操作!")
Else
If .Current("审核标记") Then
'Functions.Execute("Show_OK",True)
For Each r As Row In Tables("转仓单主文件.转仓单明细表").Rows
' 根据仓库编号和物料编号查仓库是否存在,存在则更新,不存在则新增一条信息
Dim dr As DataRow = DataTables("库存清单主文件").Find("仓库编码 = '" & To_stock & "' And 物料编号 = '" & r("物料编号") & "'")
If dr IsNot Nothing Then
dr("入库累计") = dr("入库累计") + r("转仓数量") '更新to_stock 入库累计
dr("最近入库日期") = .Current("转仓日期")
Functions.Execute("WriteToStockLog",.Current("转仓单编号"),.Current("转仓日期"),.Current("转仓原因"),r("物料编号"),r("转仓数量"),0,r("备注"),To_stock)
' WriteToStockLog(单据号,单据日期,出入库原因,物料编号,入库数量,出库数量,备注,仓库编码)--写入出入库记录表
Dim dr1 As DataRow = DataTables("库存清单主文件").Find("仓库编码 = '" & fm_stock & "' And 物料编号 = '" & r("物料编号") & "'")
If dr1 IsNot Nothing Then '更新fm_stock 出库累计
dr1("出库累计") = dr1("出库累计") + r("转仓数量")
dr1("最近出库日期") = .Current("转仓日期")
'messageBox.Show(dr1("出库累计"))
Functions.Execute("WriteToStockLog",.Current("转仓单编号"),.Current("转仓日期"),.Current("转仓原因"),r("物料编号"),0,r("转仓数量"),r("备注"),fm_stock)
r("状态") = "已入帐"
Rowscount = Rowscount + 1 '每操作一次加1
End If
Else '不存在则新增一条信息
Dim dr0 As DataRow = DataTables("库存清单主文件").AddNew
dr0("仓库编码") = To_stock
dr0("仓库类别") = r("仓位")
dr0("库位号") = r("库位")
dr0("物料编号") = r("物料编号")
dr0("物料描述") = r("物料描述")
dr0("计量单位") = r("计量单位")
dr0("入库累计") = r("转仓数量")
dr0("最近入库日期") = .Current("转仓日期")
r("状态") = "已入帐"
Functions.Execute("WriteToStockLog",.Current("转仓单编号"),.Current("转仓日期"),.Current("转仓原因"),r("物料编号"),r("转仓数量"),0,r("备注"),To_stock)
Rowscount = Rowscount + 1 '每操作一次加1
End If
Next
Else
MessageBox.Show("审核后的单据才能进行其他操作!")
End If
End If
End With
Else
Messagebox.Show("没有数据可以转仓!","提示")
End If
If Rowscount = Tables("转仓单主文件.转仓单明细表").Rows.Count Then
Tables("转仓单主文件").Current("完成转仓") = True
DataTables("库存清单主文件").Save
'Functions.Execute("Show_OK",False)
Return 1
Else
Return 0
End If
请各位专家帮忙指点一下是不是写入代码出了什么问题?