Foxtable(狐表)用户栏目专家坐堂 → 跨表增减行


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

主题:跨表增减行

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


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

Dim Multi As String = Tables("货品资料").Current("规格")
Dim Values() As String
Values = Multi.split("\")
For Index As Integer = 0 To Values.Length - 1
    Dim dr As DataRow
    dr = DataTables("规格表").Find("[货品编号] = '" &  Tables("货品资料").Current("货品编号") & "'And [规格] In ('" & Values(Index) & "')")
    If dr IsNot Nothing Then
        MessageBox.Show(dr("规格"))
        dr.Delete
    End If
Next

老大我的代码是不是要简单些?

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/8/31 16:41:00 [只看该作者]

这个有点粗暴,等于先删除所有的了。

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


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/8/31 17:32:00 [只看该作者]

 

[此贴子已经被作者于2011-8-31 17:32:17编辑过]

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


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/8/31 17:38:00 [只看该作者]

以下是引用狐狸爸爸在2011-8-31 10:12:00的发言:
 下载信息  [文件大小:15.8 KB  下载次数:12]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3.rar

 

错误代码位置:表,货品资料,DataColChanged

System.NullReferenceException: 未设置对象变量或 With 块变量。
  
Microsoft.VisualBasic.CompilerServices.Symbols.Container..ctor(Object Instance)
  
Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)
  
UserCode.DataColChanged(DataColEventArgs e)

 

"规格"列输入值和清空值会出现以上提示.


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/8/31 17:54:00 [只看该作者]

这个问题我写的时候就留意到了,解决方法:

 

将:

 

    Dim Parts1() As String = e.OldValue.Split("\")
    Dim Parts2() As String = e.NewValue.Split("\")

改为:

 

Dim Parts1() As String
Dim Parts2() As String
If e.OldValue > "" Then
    Parts1 = e.OldValue.Split("\")
End If
If e.NewValue > "" Then
    Parts2  = e.NewValue.Split("\")
End If


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


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/8/31 18:05:00 [只看该作者]

测试还是没通过,如新增一行,在"规格"列输入"265",会有错误提示

 

下面这段代码就不会出现这种情况,只是不能删除"规格表"对应的行

 

'数据DataColChanged
If e.DataCol.Name = "规格" Then '
Dim d As String = e.DataRow("规格")
Dim Parts() As String = d.Split("\")
For Each dc As String In Parts
If e.DataRow("规格") > "" Then
        Dim dr As DataRow = DataTables("规格表").Find("货品编号 = '" & e.DataRow("货品编号") & "' And 规格 = '" & dc & "'")
        If dr IsNot Nothing
            Tables("规格表").Position = Tables("规格表").FindRow(dr)
                Else
            Dim r As Row = Tables("规格表").AddNew()
            r("货品编号") = e.DataRow("货品编号")
            r("货品名称") = e.DataRow("货品名称")
            r("规格") = dc
        End If
    End If
Next
End If

 

 


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/8/31 18:15:00 [只看该作者]

'数据DataColChanged
If e.DataCol.Name = "规格" Then '
    Dim Parts1() As String = {}
    Dim Parts2() As String = {}
    If e.OldValue > "" Then
        Parts1 = e.OldValue.Split("\")
    End If
    If e.NewValue > "" Then
        Parts2  = e.NewValue.Split("\")
    End If
    For Each part As String In Parts2
        Dim dr As DataRow = DataTables("规格表").Find("货品编号 = '" & e.DataRow("货品编号") & "' And 规格 = '" & part & "'")
        If dr IsNot Nothing
            Tables("规格表").Position = Tables("规格表").FindRow(dr)
        Else
            Dim r As Row = Tables("规格表").AddNew()
            r("货品编号") = e.DataRow("货品编号")
            r("货品名称") = e.DataRow("货品名称")
            r("规格") = part
        End If
    Next
    Dim lst As new List(of String)
    lst.AddRange(parts2)
    For Each part As String In Parts1
        If lst.contains(part) = False Then
            Dim dr As DataRow = DataTables("规格表").Find("货品编号 = '" & e.DataRow("货品编号") & "' And 规格 = '" & part & "'")
            If dr IsNot Nothing Then
                dr.Delete
            End If
        End If
    Next
End If

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


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/8/31 18:18:00 [只看该作者]

谢谢

 回到顶部
总数 18 上一页 1 2