-- 作者:alangoon
-- 发布时间:2014/6/4 9:33:00
-- [求助]数据写入问题
各位专家,
我发现我写的系统在数据写入时有时候会混乱,不知道是怎么回事?我是这样做的:
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
请各位专家帮忙指点一下是不是写入代码出了什么问题?
|
-- 作者:alangoon
-- 发布时间:2014/6/4 9:40:00
--
请问Bin版是看不懂代码?因为系统很大,而且有数据,不好上啊。简单的好说,但是因为涉及到好多表,也不好精简。请帮忙看看代码,好吗?
主要是如下代码: 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
|