Foxtable(狐表)用户栏目专家坐堂 → 数据偶尔会丢失


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

主题:数据偶尔会丢失

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
数据偶尔会丢失  发帖心情 Post By:2015/9/28 16:39:00 [只看该作者]

 很奇怪,有用户反应我的代码在保存时会有数据丢失.

保存代码是这样的:

 Dim Filter As String  '定义筛选
        For Each dc As Col In Tables("付款主表.付款录入").Cols '遍历表的所有列
            Select Case dc.Name
                Case "平台公司","报表编号","合同金额","合同编号","是否签署合同"
                Case Else
                    If Filter > "" Then
                        Filter  = Filter & "  And "
                    End If
                    Filter = Filter  & "[" & dc.Name & "] Is Null"
            End Select
        Next
        Tables("付款主表.付款录入").DataTable.DeleteFor(Filter)
        Functions.Execute("多选目录树","付款录入","付款主表","应付会计,当前状态,报表编号","当前状态|应付会计|报表编号")
        Dim r1 As Row = Tables("付款主表").Current
        If r1 IsNot Nothing
            If r1.IsNull("平台公司") Or r1.IsNull("成本类型") Then
                MessageBox.Show("平台公司和成本类型必须输入","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                Return Nothing
            End If
        End If
        If  Tables("付款主表.付款录入").Rows.Count = 0 Then
            MessageBox.Show("请输入明细数据","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
            Return Nothing
        End If
        For Each r As Row In Tables("付款主表.付款录入").Rows
            For Each cl As Col In Tables("付款主表.付款录入").Cols
                Select Case cl.Name
                    Case "平台公司","供应商","成本中心代码","付款金额","银行账号","流程类型","流程编号"
                        If r.IsNull(cl.Name) Then
                            MessageBox.Show(cl.Name & "请填写完整!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                            Return Nothing
                        End If
                End Select
            Next
        Next
        If Tables("付款录入").DataTable.HasChanges Or  Tables("付款主表").DataTable.HasChanges Then
            Tables("付款录入").DataTable.Save
            Tables("付款主表").DataTable.Save
            MessageBox.Show("数据保存成功","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        End If
        Functions.Execute("多选目录树","付款录入","付款主表","应付会计,当前状态,报表编号","当前状态|应付会计|报表编号")



多选目录树的函数代码是这样的:

Dim frmName As Object = Args(0) 'e事件
Dim TableName As String  = Args(1) '表名
Dim Cols As String = Args(2) '列名
Dim ColName As String = Args(3)
Dim cmd As New SQL  Command
Dim dt As DataTable
cmd.Conn ecti
cmd.Com mandText = "SEL  ECT DISTINCT " & Cols & " Fro  m {" & TableName & "}"
dt = cmd.ExecuteReader()
Dim Cmb_FilterCol As WinForm.CheckedComboBox = Forms(frmName).Controls("Cmb_FilterCol")
Dim Values() As String = Args(2).Split(",")
Cmb_FilterCol.Items.Clear
For i As Integer = 0 To Values.Length -1
    Cmb_FilterCol.Items.Add(Values(i))
Next
Cmb_FilterCol.Value = ""
Cmb_FilterCol.Value = ColName


生成目录树的代码是这样的:

'此函数用于更新主窗口左侧的Treeview控件
Dim TvwCtl As WinForm.TreeView = Args(0)   '要更新的Treeview控件
Dim TableName As String = Args(1)
Dim FrmName As String = Args(2)



Dim Val As Integer
Dim MyFilter As String
Dim dr As DataRow = DataTables("查询参数设置").SqlFind("单据名称='" & FrmName & "'")
If dr IsNot Nothing Then
    Val = dr("查询月数")
End If

Dim str As String
Dim lr As DataRow = DataTables("功能导航").SqlFind("模块名称='" & FrmName & "'")
If lr IsNot Nothing Then
    Dim nms As New List(of String)
    If lr IsNot Nothing AndAlso lr.IsNull("查询角色") = False
        nms.AddRange(lr("查询角色").Split(","))
    End If
    For Each nm As String  In nms
        str = str & ",'" & nm & "'"
    Next
    
    If str > "" Then
        str = str.Trim(",")
        Dim dx As DataRow
        If Val > = 0 Then
            MyFilter = "日期>='" & Functions.Execute("服务器时间").AddMonths(-Val) & "' And 日期 <='" & Functions.Execute("服务器时间") & "' And 单据名称='" & FrmName & "' And 应付会计 In (" & str & ")"
        End If
    End If
End If


Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.Conne cti
cmd.Comm andText = "SEL  ECT * F  rom {" & TableName & "} Where " & MyFilter.Replace("日期",Args(4))
dt = cmd.ExecuteReader()
If dt.DataRows.Count = 0 Then Return Nothing
Dim Columns As String = Args(3)            '要构建Treeview的字段
TvwCtl.StopRedraw
TvwCtl.Nodes.Clear
TvwCtl.BuildTree(dt,Columns,"当前状态<>'确认付款'","当前状态,应付会计")
For Each nd As WinForm.TreeNode In TvwCtl.AllNodes
    If nd.Text.IndexOf("待递交") >= 0 Then
        nd.ExpandAll
    End If
Next


TvwCtl.ResumeRedraw
'Tables("付款主表.付款录入").AutoSizeCols



今日反应丢了5条数据,而且是主表数据,按道理主表数据有了才能生成关联表数据

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/28 16:51:00 [只看该作者]

1、看是否多用户修改的原因导致;

 

2、如果是网络数据,看是否网络问题导致丢失数据


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2015/9/28 17:34:00 [只看该作者]

主表的编号是新增直接生成的,每一个人分不同的登陆账号登陆输入数据.新增保存是没有问题,但是输入完子表数据后 保存就丢失了 主表数据了


第一个是局域网不应该会是网络造成的. 第二个输入保存时丢了 不应该是修改造成的.




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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/28 17:40:00 [只看该作者]

偶尔,就只能是网络的问题了。

 

当无法连上数据库的时候,保存有时是不会报错。


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


加好友 发短信
等级:四尾狐 帖子:867 积分:6210 威望:0 精华:0 注册:2012/11/24 20:44:00
回复:(大红袍)1、看是否多用户修改的原因导致;&...  发帖心情 Post By:2015/9/28 17:46:00 [只看该作者]

1、同一办公室内,估计不会是网络问题。但时好时坏,有时一天也不会出现一个,有时频繁出现10个为丢单的问题。

2、经测试,有时发现同一单子录入过程,明细表被插入另一个主表的明细时,会出现丢失(即前台不显示)的情况,但也全部,偶尔是这种现象。

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


加好友 发短信
等级:三尾狐 帖子:623 积分:3897 威望:0 精华:0 注册:2011/8/3 22:13:00
  发帖心情 Post By:2015/9/28 18:53:00 [只看该作者]

这个完全不搭界,我想了半天只有退出的那段代码起作用,就是在你输入平台数据的时候 有人做了退出的动作删除了后台空平台数据可能性

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/28 19:16:00 [只看该作者]

汗,贴一段无关的代码问人家什么问题。

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2015/9/29 8:05:00 [只看该作者]

想看看这段代码有无问题

 回到顶部