Foxtable(狐表)用户栏目专家坐堂 → 原来百试百灵的代码现在突然出现问题


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

主题:原来百试百灵的代码现在突然出现问题

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/11/6 20:54:00 [显示全部帖子]

以成品表为例,你的代码为:
 
If e.DataCol.Name ="增加" Then
    Dim dr,dr1 As DataRow
    dr = e.DataRow
    If dr.isnull("计划号") Then
        MessageBox.Show("计划号不能为空!")
    Else
        Dim s As String = "计划号 = '" & dr("计划号") & "'and 材质 = '" &  dr("材质") & "'and 砖号 = '" & dr("砖号") & "'and 型号 = '" & dr("型号") & "'"
        dr1= DataTables("完成情况").find(s)
        If dr1 IsNot Nothing Then
            Dim val1 As Double = dr("成品_数量")
            Dim val2 As Double = dr("成品_重量")
            Dim val3 As Double = dr("废品_数量")
            Dim val4 As Double = dr("废品_重量")
            If dr("增加") = False Then
                val1 = -val1
                val2 = -val2
                val2 = -val3
                val2 = -val4
            End If
            dr1("成品情况_成品_数量")+ = val1
            dr1("成品情况_成品_吨数")+ = val2
            dr1("成品情况_废品_数量")+ = val3
            dr1("成品情况_废品_吨数")+ = val4
            dr1.Save()
        Else
            Dim Ls As String() = {"计划号","成品情况_成品_数量","成品情况_成品_吨数","成品情况_废品_数量","成品情况_废品_吨数"}
            dr1 = DataTables("完成情况").AddNew()
            For Each s In Ls
                dr1(s) = dr(s)
            Next
            dr1.Save()
        End If
        dr.Save()
      End If
End If
 
留意我加粗的一行,你的成品表有名称为"成品情况_成品_数量","成品情况_成品_吨数","成品情况_废品_数量"这样的列吗?
明明就没有啊,错误提示也告诉你“列 成品情况_成品_数量 不属于成品表”

 

代码应该这么写:

 

If e.DataCol.Name ="增加" Then
    Dim dr,dr1 As DataRow
    dr = e.DataRow
    If dr.isnull("计划号") Then
        MessageBox.Show("计划号不能为空!")
    Else
        Dim s As String = "计划号 = '" & dr("计划号") & "'and 材质 = '" &  dr("材质") & "'and 砖号 = '" & dr("砖号") & "'and 型号 = '" & dr("型号") & "'"

        dr1= DataTables("完成情况").find(s)
        If dr1 IsNot Nothing Then
            Dim val1 As Double = dr("成品_数量")
            Dim val2 As Double = dr("成品_重量")
            Dim val3 As Double = dr("废品_数量")
            Dim val4 As Double = dr("废品_重量")
            If dr("增加") = False Then
                val1 = -val1
                val2 = -val2
                val2 = -val3
                val2 = -val4
            End If
            dr1("成品情况_成品_数量")+ = val1
            dr1("成品情况_成品_吨数")+ = val2
            dr1("成品情况_废品_数量")+ = val3
            dr1("成品情况_废品_吨数")+ = val4
            dr1.Save()
        Else
            Dim Ls1 As String() = {"计划号","成品_数量","成品_重量","废品_数量","废品_重量"}
            Dim Ls2 As String() = {"计划号","成品情况_成品_数量","成品情况_成品_吨数","成品情况_废品_数量","成品情况_废品_吨数"}
            dr1 = DataTables("完成情况").AddNew()
            For i As Integer = 0 To ls1.Length - 1
                dr1(ls2(i)) = dr(ls1(i))
            Next
            dr1.Save()
        End If
        dr.Save()
      End If
End If

[此贴子已经被作者于2011-11-6 21:52:42编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/11/8 16:51:00 [显示全部帖子]

你这样的设计很难维护的,采用关联表应该更加合适。

我建议你还是暂停开发,再系统看两三遍帮助文件,这样开发的效率更高,质量更好。

特别是使用指南中《关联表》和《表达式》两章,要重点看看。

 


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/11/10 11:45:00 [显示全部帖子]

用关联不知道多方便,以成品表为例:

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目36.rar

 

你目前不应该开发系统,而是踏踏实实看帮助,从使用指南开始看


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/11/10 15:22:00 [显示全部帖子]

根本不需要这么一个删除列的。

你看这个,在成品表当相同计划号、型号、材质、砖好的最后一行被删除时,父表的对应行也会被删除。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目38.rar


 回到顶部