Foxtable(狐表)用户栏目专家坐堂 → [求助]同步更新遇到困难了


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

主题:[求助]同步更新遇到困难了

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
[求助]同步更新遇到困难了  发帖心情 Post By:2015/7/18 19:20:00 [只看该作者]

   Dim r As Row = Tables("BUG录入表").Current

 If r.DataRow.GetChildRows("BUG研发表").Count = 0 Then
            Dim dr As DataRow = DataTables("BUG研发表").AddNew()
            dr("BUG_ID") = r("BUG_ID")
            MessageBox.show("BUG编号:" & r("BUG_ID") & "此BUG故障已通知研发,请静静的耐心等待研发解决!","博达BUG综合管理系统")
        ElseIf r.DataRow.GetChildRows("BUG研发表").Count > 0  Then
            Dim rr As Row = Tables("BUG录入表").Current
            Dim fl As String = "BUG_ID = '"  & r("BUG_ID") & "'"
            rr.Load() '加载父行
            LockBaseMainForm() '锁定主窗口
            DataTables("BUG研发表").StopRedraw '停止绘制订单明细
            DataTables("BUG研发表").RemoveFor(fl) '移除当前订单的订单明细
            DataTables("BUG研发表").Appendload(fl) '追载当前订单的订单明细
            DataTables("BUG研发表").ResumeRedraw '恢复绘制订单明细
            UnLockBaseMainForm() '解锁主窗口
            MessageBox.show("BUG编号:" & r("BUG_ID") & "此BUG故障信息已修改,并通知研发,请静静的耐心等待研发解决!","博达BUG综合管理系统")
        End If

 

我是按照帮助来做的。可是效果不对。

比如BUG_ID 为201507018的数据。提交后。然后再次在BUG录入表修改BUG_ID201507018的数据,又再次提交。

问题来了,怎么在BUG研发表又增加了一行同样是是BUG_ID为201507018的数据(修改后的),也就是说在BUG研发表存在2个BUG_ID201507018的数据。

本意是希望是同步更新,而不是新增加行。


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


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

 

[此贴子已经被作者于2015/7/19 10:36:31编辑过]

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


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

先load数据,再判断 If r.DataRow.GetChildRows("BUG研发表").Count = 0 Then

 

或者,用sqlFind先查找 http://www.foxtable.com/help/topics/2911.htm

 


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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2015/7/19 12:56:00 [只看该作者]


        If r.DataRow.GetChildRows("BUG研发表").Count = 0 Then
            Dim dr As DataRow = DataTables("BUG研发表").AddNew()
            dr("BUG_ID") = r("BUG_ID")
            MessageBox.show("BUG编号:" & r("BUG_ID") & "此BUG故障已通知研发,请静静的耐心等待研发解决!","博达BUG综合管理系统")
        End If
        Dim rr As Row = Tables("BUG录入表").Current
        Dim s As String = "BUG_ID = '" & rr("BUG_ID") & "'"
        Dim fr As DataRow = DataTables("BUG研发表").SQLFind(s)
        If fr IsNot Nothing Then
            rr.Load() '加载父行
            LockBaseMainForm() '锁定主窗口
            DataTables("BUG研发表").StopRedraw '停止绘制订单明细
            DataTables("BUG研发表").RemoveFor(s) '移除当前订单的订单明细
            DataTables("BUG研发表").Appendload(s) '追载当前订单的订单明细
            DataTables("BUG研发表").ResumeRedraw '恢复绘制订单明细
            UnLockBaseMainForm() '解锁主窗口
            MessageBox.show("BUG编号:" & r("BUG_ID") & "此BUG故障信息已修改,并通知研发,请静静的耐心等待研发解决!","博达BUG综合管理系统")
        End If
    End If

红色的代码应该还是有问题。BUG研发表还是增加了新的行,并不是把原来的数据更新。

请大师再帮我瞅瞅。


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40608 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2015/7/19 13:56:00 [只看该作者]

不绕这些弯路,效果一样:

 

 

If Tables("BUG录入表").Current IsNot Nothing    
    Dim r As Row = Tables("BUG录入表").Current  
    Dim dr As DataRow = DataTables("BUG研发表").find("BUG_ID = '" & r("BUG_ID") & "'")
    If dr Is Nothing
        dr = DataTables("BUG研发表").AddNew()
    End If
    dr("BUG_ID") = r("BUG_ID")

    dr.save()

    r.save() '加载父行
    MessageBox.show("BUG编号:" & r("BUG_ID") & "此BUG故障已通知研发,请静静的耐心等待研发解决!","博达BUG综合管理系统")
 End If

[此贴子已经被作者于2015/7/19 13:59:43编辑过]

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40608 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2015/7/19 13:57:00 [只看该作者]

刚刚少了个右括号,已修改!


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


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

Dim dr As DataRow = DataTables("BUG研发表").AddNew()
dr("BUG_ID") = r("BUG_ID")

 

写到sqlfind判断里面啊。


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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2015/7/19 16:53:00 [只看该作者]

以下是引用程兴刚在2015/7/19 13:56:00的发言:

不绕这些弯路,效果一样:

 

 

If Tables("BUG录入表").Current IsNot Nothing    
    Dim r As Row = Tables("BUG录入表").Current  
    Dim dr As DataRow = DataTables("BUG研发表").find("BUG_ID = '" & r("BUG_ID") & "'")
    If dr Is Nothing
        dr = DataTables("BUG研发表").AddNew()
    End If
    dr("BUG_ID") = r("BUG_ID")

    dr.save()

    r.save() '加载父行
    MessageBox.show("BUG编号:" & r("BUG_ID") & "此BUG故障已通知研发,请静静的耐心等待研发解决!","博达BUG综合管理系统")
 End If

[此贴子已经被作者于2015/7/19 13:59:43编辑过]

程老师,你这个好像只能对BUG录入表的数据生效。但是BUG研发表的数据并没有修改,还是之前的。


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


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

Dim rr As Row = Tables("BUG录入表").Current
Dim s As String = "BUG_ID = '" & rr("BUG_ID") & "'"
Dim fr As DataRow = DataTables("BUG研发表").SQLFind(s)
If fr Is Nothing Then
    Dim dr As DataRow = DataTables("BUG研发表").AddNew()
    dr("BUG_ID") = rr("BUG_ID")
    dr.save
    MessageBox.show("BUG编号:" & rr("BUG_ID") & "此BUG故障已通知研发,请静静的耐心等待研发解决!","博达BUG综合管理系统")
Else
   
    rr.Load() '加载父行
    LockBaseMainForm() '锁定主窗口
    DataTables("BUG研发表").StopRedraw '停止绘制订单明细
    DataTables("BUG研发表").RemoveFor(s) '移除当前订单的订单明细
    DataTables("BUG研发表").Appendload(s) '追载当前订单的订单明细
    DataTables("BUG研发表").ResumeRedraw '恢复绘制订单明细
    UnLockBaseMainForm() '解锁主窗口
    MessageBox.show("BUG编号:" & rr("BUG_ID") & "此BUG故障信息已修改,并通知研发,请静静的耐心等待研发解决!","博达BUG综合管理系统")
   
End If

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2015/7/19 17:16:00 [只看该作者]

.NET Framework 版本:2.0.50727.8009
Foxtable 版本:2014.11.11.1
错误所在事件:
详细错误信息:
列“_Identify”被约束为是唯一的。值“28”已存在。

报上面的错。


 回到顶部
总数 19 1 2 下一页