Foxtable(狐表)用户栏目专家坐堂 → 两个表的数据如何自动更新?


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

主题:两个表的数据如何自动更新?

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


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

你应该去写datarowDeleting事件吧?

 

Dim ary() As String={"新型纤维分类","差别化纤维分类","功能性纤维分类"}
For Each s As String In ary
    DataTables(s).DeleteFor("产品编号= '" & e.DataRow("产品编号") & "'")
Next


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


加好友 发短信
等级:婴狐 帖子:27 积分:235 威望:0 精华:0 注册:2015/8/13 9:57:00
  发帖心情 Post By:2015/11/12 13:09:00 [只看该作者]

我写的就是datarowDeleting,

删除产品编号,其他表的产品也随着删除,这个我能做到,

我想要的是,删除主表的产品边和、产品名称,其他表的产品编号和产品名称也能随着删除,所以我用了case事件

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


加好友 发短信
等级:婴狐 帖子:27 积分:235 威望:0 精华:0 注册:2015/8/13 9:57:00
  发帖心情 Post By:2015/11/12 13:11:00 [只看该作者]

Select Case e.DataCol.name
    Case "产品编号"
       Dim ary() As String={"新型纤维分类","差别化纤维分类","功能性纤维分类"}
        For Each s As String In ary
          Dim dr As DataRow = DataTables(s).Find("产品编号= '" & e.DataRow("产品编号") & "'")
        If dr IsNot Nothing Then
          dr.Delete()
        End If
       Next
    Case "产品名称"
       Dim ary() As String={"新型纤维分类","差别化纤维分类","功能性纤维分类"}
        For Each s As String In ary
          Dim dr As DataRow = DataTables(s).Find("产品名称= '" & e.DataRow("产品名称") & "'")
        If dr IsNot Nothing Then
          dr.Delete()
        End If
       Next
End Select


图片点击可在新窗口打开查看此主题相关图片如下:小q截图-20151112131118.png
图片点击可在新窗口打开查看


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


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

写到DataColChanged事件去。

 

Select Case e.DataCol.name
    Case "产品编号"
        Dim ary() As String={"新型纤维分类","差别化纤维分类","功能性纤维分类"}
        For Each s As String In ary
            DataTables(s).DeleteFor("产品编号= '" & e.oldvalue & "'")
        Next
End Select
 

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


加好友 发短信
等级:婴狐 帖子:27 积分:235 威望:0 精华:0 注册:2015/8/13 9:57:00
  发帖心情 Post By:2015/11/14 9:32:00 [只看该作者]

您好,DataChanged事件的代码和相对应的功能已经实现了。


图片点击可在新窗口打开查看
DataDeleting事件中,已经实现的是,当删除(纤维产品详情)的产品编号时,后面的表也会跟着删除相对应的产品编号,
但是,当删除(纤维产品详情)的产品名称时,后面的表里的相对应的 产品名称里的数据,没有跟着删除,这个还没有实现
[此贴子已经被作者于2015/11/14 9:36:24编辑过]

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


加好友 发短信
等级:婴狐 帖子:27 积分:235 威望:0 精华:0 注册:2015/8/13 9:57:00
  发帖心情 Post By:2015/11/14 9:35:00 [只看该作者]

以下是我之前写的DataDeleting事件的代码和相对应的提示,麻烦提示一下,谢谢。

Select Case e.DataCol.name
    Case "产品编号"
       Dim ary() As String={"新型纤维分类","差别化纤维分类","功能性纤维分类"}
        For Each s As String In ary
          Dim dr As DataRow = DataTables(s).Find("产品编号= '" & e.DataRow("产品编号") & "'")
        If dr IsNot Nothing Then
          dr.Delete()
        End If
       Next
    Case "产品名称"
       Dim ary() As String={"新型纤维分类","差别化纤维分类","功能性纤维分类"}
        For Each s As String In ary
          Dim dr As DataRow = DataTables(s).Find("产品名称= '" & e.DataRow("产品名称") & "'")
        If dr IsNot Nothing Then
          dr.Delete()
        End If
       Next
End Select


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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2015/11/14 9:48:00 [只看该作者]

代码仍然是放在DataChanged事件中,加个判断
 
Select Case e.DataCol.name
Case "产品编号"
 
If e.NewValue Is Nothing Then

        Dim ary() As String={"新型纤维分类","差别化纤维分类","功能性纤维分类"}
        For Each s As String In ary
            Dim dr As DataRow = DataTables(s).Find("产品编号= '" & e.DataRow("产品编号") & "'")
            If dr IsNot Nothing Then
                dr.Delete()
            End If
        Next
 
 End If
 
.........
 

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


加好友 发短信
等级:婴狐 帖子:27 积分:235 威望:0 精华:0 注册:2015/8/13 9:57:00
  发帖心情 Post By:2015/11/14 10:52:00 [只看该作者]

Select Case e.DataCol.name
    Case "产品编号"
     If e.NewValue Is Nothing Then
        Dim ary() As String={"新型纤维分类","差别化纤维分类","功能性纤维分类"}
        For Each s As String In ary
            Dim dr As DataRow = DataTables(s).Find("产品编号= '" & e.DataRow("产品编号") & "'")
            If dr IsNot Nothing Then
                dr.Delete()
            End If
        Next
     End If
       Dim ary() As String={"新型纤维分类","差别化纤维分类","功能性纤维分类"}
        For Each s As String In ary
          Dim dr As DataRow = DataTables(s).Find("产品编号 = '" & e.OldValue & "'")
           If dr Is Nothing Then 
             dr = DataTables(s).AddNew()
             dr("产品编号") = e.DataRow("产品编号")
             dr("产品名称") = e.DataRow("产品名称")
            
           Else
            dr("产品编号") = e.DataRow("产品编号")
           End If
         Next 
      
    Case "产品名称"
     
       Dim ary() As String={"新型纤维分类","差别化纤维分类","功能性纤维分类"}
        For Each s As String In ary
          Dim dr As DataRow = DataTables(s).Find("产品编号= '" & e.DataRow("产品编号") & "'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
        Next
      End Select

以上是我根据提示重新写的代码,以下是保存时的提示,

图片点击可在新窗口打开查看此主题相关图片如下:小q截图-20151114103337_副本.jpg
图片点击可在新窗口打开查看


另外,我想问一下,加这个判断,好像意思是,如果产品编号新的值是空(也就是删除),那么后面的表,也寻找相应的产品编号,把它删掉,

但我的意图是,当把产品编号和产品名称都删除时,后面的表也要删除掉,而我现在的情况是:


图片点击可在新窗口打开查看此主题相关图片如下:小q截图-20151114105232.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2015/11/14 10:54:26编辑过]

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2015/11/14 11:16:00 [只看该作者]

1. 一个代码段内尽量避免重复定义同一个名称,ary名称重复使用了

 

2. 判断几个名称就加几个判断

 

If e.NewValue Is Nothing AndAlso e.DataRow.IsNull("产品名称") Then

 

同样,在Case "产品名称"下面也要做类似的判断

 

--------------------------------------------------

初学者建议先看一下视频教程

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=67187

 

[此贴子已经被作者于2015/11/14 11:15:57编辑过]

 回到顶部
总数 29 上一页 1 2 3