Foxtable(狐表)用户栏目专家坐堂 → [求助]数据写入问题


  共有2751人关注过本帖树形打印复制链接

主题:[求助]数据写入问题

帅哥哟,离线,有人找我吗?
alangoon
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:175 积分:2118 威望:0 精华:0 注册:2013/3/9 23:21:00
[求助]数据写入问题  发帖心情 Post By: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

 

请各位专家帮忙指点一下是不是写入代码出了什么问题?


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/6/4 9:35:00 [只看该作者]

请上例子.

 回到顶部
帅哥哟,离线,有人找我吗?
alangoon
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:175 积分:2118 威望:0 精华:0 注册:2013/3/9 23:21:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/4 10:01:00 [只看该作者]

 看代码不好看出问题。

 

 你自己调试一下吧 http://www.foxtable.com/help/topics/1485.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
alangoon
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:175 积分:2118 威望:0 精华:0 注册:2013/3/9 23:21:00
  发帖心情 Post By:2014/6/4 10:15:00 [只看该作者]

已经有用Msgbox调试了,有输出的。运行上也没有任何错误。

不知道用SQL语句操作会不会好点。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/4 10:18:00 [只看该作者]

你用msgbox弹出对应的值看看,看是否进入了某个判断,看看值是否正确,从而排除错误。

 回到顶部