Foxtable(狐表)用户栏目专家坐堂 → 跨表统计的代码


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

主题:跨表统计的代码

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


加好友 发短信
等级:小狐 帖子:369 积分:2911 威望:0 精华:0 注册:2009/4/1 12:51:00
跨表统计的代码  发帖心情 Post By:2009/8/31 22:05:00 [只看该作者]

这是跨表计算的代码:
Dim dr1 As DataRow = e.DataRow
Dim dr2 As DataRow
If e.DataCol.Name = "客户" Then
    Dim Sum As Double
    if e.datarow("生产进度")="已计划" then
        Sum = DataTables("生产清单").Compute("Sum(重量)","[客户]  = '" & dr1("客户") &  "'And [颜色编号]='" & dr1("颜色编号") & "'And [幅宽] = " & dr1("幅宽")  & "And [克重] = '" & dr1("克重") & "'")
        e.DataRow("生产数量") = Sum
    end if
End If

自动更新的代码

if e.datacol.name="重量" then
    dim dr as datarow=e.datarow
    dim dr1 as datarow
    dim dr2 as datarow
     Dim s1 As String = "[克重]  = " & dr("克重") & " And [颜色编号] = '" & dr("颜色编号") & "' And [客户] = '" & dr("客户") & "' And [幅宽] = " & dr("幅宽")
     
    dr1=datatables("订单管理").find(s1)
    dr2=datatables("订单管理").find("[生产进度]='" & "已计划'" & " or [生产进度]='" & "生产中'"  & " or [生产进度]='" & "发货中'"   )
    if dr1  isnot nothing and dr2 isnot nothing then
        datatables("订单管理").datacols("客户").RaiseDataColChanged(dr1)
    end if
end if

下午查了一下午,都要抓狂了,请版主看下哪里有问题,谢谢


[此贴子已经被作者于2009-8-31 22:43:32编辑过]

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/8/31 22:42:00 [只看该作者]

第一段我想是不是这样?



Dim dr1 As DataRow = e.DataRow
If e.DataCol.Name = "客户" Then
    if dr1("生产进度")="已计划" then
        dr1("生产数量") = DataTables("生产清单").Compute("Sum(重量)","[客户]  = '" & dr1("客户") &  "'And [颜色编号]='" & dr1("颜色编号") & "'And [幅宽] = " & dr1("幅宽")  & "And [克重] = '" & dr1("克重") & "'")
    end if
End If

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/8/31 22:50:00 [只看该作者]

这段是不是这样?

dr2=datatables("订单管理").find("[生产进度]= '已计划' or [生产进度]='生产中' or [生产进度]='发货中'")

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


加好友 发短信
等级:小狐 帖子:369 积分:2911 威望:0 精华:0 注册:2009/4/1 12:51:00
  发帖心情 Post By:2009/9/1 9:30:00 [只看该作者]

 现在都不知道哪里有问题,代进去还是无法解决问题,
if e.datacol.name="重量" then
    dim dr as datarow=e.datarow
    dim dr1 as datarow
    dim dr2 as datarow
  dr1=datatables("订单管理").find("[克重]  = '" & dr("克重") & "' And [颜色编号] = '" & dr("颜色编号")  & "' And [客户] = '" & dr("客户") & "' And [幅宽] = '" & dr("幅宽") & "'" )
    if dr1 isnot nothing  then
        datatables("订单管理").datacols("客户").RaiseDataColChanged(dr1)
    end if
end if

这样的代码也有错,哪里有错?

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


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

提示什么错啊?

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


加好友 发短信
等级:小狐 帖子:369 积分:2911 威望:0 精华:0 注册:2009/4/1 12:51:00
  发帖心情 Post By:2009/9/1 9:37:00 [只看该作者]

 未将对象引用设置到对象的实例




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


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

看清楚提示错误的位置.
说不定是订单管理表的DataColChanged有问题

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


加好友 发短信
等级:小狐 帖子:369 积分:2911 威望:0 精华:0 注册:2009/4/1 12:51:00
  发帖心情 Post By:2009/9/1 10:09:00 [只看该作者]

是订单管理表的

Dim dr1 As DataRow = e.DataRow
If e.DataCol.Name = "客户" Then
   
    if e.datarow("生产进度")="已计划" or e.datarow("生产进度")="生产中" or e.datarow("生产进度")="待发货" then
       e.DataRow("生产数量")=0
 e.DataRow("生产数量")= DataTables("生产清单").Compute("sum(重量)","[客户]  = '" & dr1("客户") &  "'And [颜色编号]='" & dr1("颜色编号") & "'And [幅宽] = " & dr1("幅宽")  & "And [克重] = '" & dr1("克重") & "'")
       end if
End If

这个是订单表管理的代码

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


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

没有看出问题了,用个简单的例子说明。

另外代码中既然定义了dr1引用e.Datarow,那么应改这样:

Dim dr1 As DataRow = e.DataRow
If e.DataCol.Name = "客户" Then
    if dr1("生产进度")="已计划" orelse dr1("生产进度")="生产中" orelse dr1("生产进度")="待发货" then
        dr1("生产数量")=0
        dr1("生产数量")= DataTables("生产清单").Compute("sum(重量)","[客户]  = '" & dr1("客户") &  "'And [颜色编号]='" & dr1("颜色编号") & "'And [幅宽] = " & dr1("幅宽")  & "And [克重] = '" & dr1("克重") & "'")
    end if
End If

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


加好友 发短信
等级:小狐 帖子:369 积分:2911 威望:0 精华:0 注册:2009/4/1 12:51:00
  发帖心情 Post By:2009/9/1 10:42:00 [只看该作者]

郁闷啊。。。。

该怎么办?生产清单里的重量改变 就会弹出错误窗口。。。。未将对象引用设置到对象的实例

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