Foxtable(狐表)用户栏目专家坐堂 → 按钮代码求助(C版请进,又出问题了)


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

主题:按钮代码求助(C版请进,又出问题了)

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


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

不上传数据源,没有办法。
[此贴子已经被作者于2009-12-25 16:17:01编辑过]

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


加好友 发短信
等级:三尾狐 帖子:790 积分:5677 威望:0 精华:0 注册:2009/4/17 18:42:00
  发帖心情 Post By:2009/12/25 16:59:00 [只看该作者]

文件-生产数据-到料排产,填数据,点到料准备生产,准备生产数据从计划目录、计划工序、计划工艺表填充到生产目录、生产工序、生产工艺表。
查询:文件=生产数据-生产工艺查询,可看到生产类3表有该计算的数据不齐。
另:文件-车间记录-生产记录窗口也有问题,我一提到论坛

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


加好友 发短信
等级:三尾狐 帖子:790 积分:5677 威望:0 精华:0 注册:2009/4/17 18:42:00
  发帖心情 Post By:2009/12/25 17:00:00 [只看该作者]

数据要怎么才能上传,是本机SQL

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


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

以下是引用wqc360在2009-12-25 13:16:00的发言:
我把出问题的填充按钮派工单号绑定在窗口控件,与第一个表一样,图号,派工单号,一起填充,就不提示出错了,但是生产工序表有一个数据没算出来,即:
计划日期_开始和计划日期_结束两列,因此列要提取生产目录表工艺工时_天数的数据,而工艺工时_天数是靠生产工序表得出,所以这里要靠点击重算让表在计算一次得出。不知有没有办法解决不需点重算而直接算出。
  Dim pr As DataRow = dr.GetParentrow("生产目录")
        if pr IsNot Nothing Then
            dr("计划日期_结束") = pr("到料日期").AddDays(Sum * (pr("生产周期")/pr("工艺工时_天数")))【pr("工艺工时_天数") = (生产工序表("Sum(工艺工时_天数)",str))】
            dr("计划日期_开始") = pr("完工日期").AddDays(-Sum1 * (pr("生产周期")/pr("工艺工时_天数"))+0.5)
        Else
            dr("计划日期_结束") = Nothing
            dr("计划日期_开始") = Nothing
        End If
    End If
End If


贴出生产工序表的DataColChanged事件代码。


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


加好友 发短信
等级:三尾狐 帖子:790 积分:5677 威望:0 精华:0 注册:2009/4/17 18:42:00
  发帖心情 Post By:2009/12/26 0:35:00 [只看该作者]

在22楼已有
刚才我看到一个示范,想借用思路。
在表B  DataColChanged事件代码
If e.DataCol.Name = "数量" Then '如果修改了数量
    Dim dr As DataRow
    '在表A中找出同一分类的行
    dr = DataTables("表A").Find("[分类] = '" & e.DataRow("分类") & "'")
    If dr IsNot Nothing Then '如果找到
        '针对该行的分类列,触发DataColChanged事件.
        DataTables("表A").DataCols("分类").RaiseDataColChanged(dr)
    End If
End If
我想我这个也能不能像他这样,生产工序表的DataColChanged加上某个数据(如工艺工时_天数)变化,触发生产目录表的关联行某列DataColChanged事件(得出生产目录表中的工艺工时_天数)。
生产目录表的DataColChanged加上某个数据(如工艺工时_天数)变化,触发生产工序表的关联行某列DataColChanged事件(得出生产工序表中的计划日期_结束和开始)。
明天我再看看具体要关系到那些列。这个逻辑应该不会是死循环吧。

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


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

先直接用RaiseDataColChanged重置一下吧。
如:
DataTables("生产工序").DataCols("数量").RaiseDataColChanged()

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


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

可以这样加

Dim pr As DataRow = dr.GetParentrow("生产目录")
if pr IsNot Nothing Then
    DataTables("生产工序").DataCols("数量").RaiseDataColChanged()
    dr("计划日期_结束") = pr("到料日期").AddDays(Sum * (pr("生产周期")/pr("工艺工时_天数")))【pr("工艺工时_天数") = (生产工序表("Sum(工艺工时_天数)",str))】
    dr("计划日期_开始") = pr("完工日期").AddDays(-Sum1 * (pr("生产周期")/pr("工艺工时_天数"))+0.5)
Else
[此贴子已经被作者于2009-12-26 0:42:59编辑过]

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


加好友 发短信
等级:三尾狐 帖子:790 积分:5677 威望:0 精华:0 注册:2009/4/17 18:42:00
  发帖心情 Post By:2009/12/26 9:22:00 [只看该作者]

 

C版,您看看如下行吗?

父表“生产工序”/"图号","名称","派工单号","工序_序号","工序_班组" 关联子表“生产工艺”/"图号","名称","派工单号","工序_序号","工序_班组"

生产工艺DataColChanged事件加入如下代码:

Dim dr As DataRow

Dim pr As DataRow = dr.GetParentrow("生产工序")

If e.DataCol.Name = "工艺工时_准结" OrElse e.DataCol.Name = "工艺工时_加工" OrElse e.DataCol.Name = "完成工时_准结" OrElse e.DataCol.Name = "完成工时_加工" OrElse e.DataCol.Name = "实用工时" OrElse e.DataCol.Name = "成本_工资元" OrElse e.DataCol.Name = "成本_加工费元" OrElse e.DataCol.Name = "工废损失" Then '如果修改了数量

    If pr IsNot Nothing Then '如果找到

        DataTables("生产工序").DataCols("图号").RaiseDataColChanged(pr) '针对该行的分类列,触发DataColChanged事件.

    End If

End If

生产工序DataColChanged事件被触发代码:

Dim str As String = "图号 = '" & dr("图号") & "' And 工序_序号 = '" & dr("工序_序号") & "' And 派工单号 = '" & dr("派工单号") & "'And 状态 = '执行'"

if e.DataCol.Name = "图号" OrElse e.DataCol.Name = "工序_序号" OrElse e.DataCol.Name = "派工单号"   Then

    Dim r As DataRow = dt.Find(str)

    if r IsNot Nothing Then

        dr("成本_加工") = (dt.Compute("Sum(成本_加工费元)",str))

        dr("成本_工资") = (dt.Compute("Sum(成本_工资元)",str))

        dr("工艺工时_准结") = (dt.Compute("Sum(工艺工时_准结)",str))

        dr("工艺工时_加工")=(dt.Compute("Sum(工艺工时_加工)",str))

        dr("完成工时_准结")=(dt.Compute("Sum(完成工时_准结)",str))

        dr("完成工时_加工")=(dt.Compute("Sum(完成工时_加工)",str))

        dr("工废损失")=(dt.Compute("Sum(工废损失)",str))

        dr("实用工时")=(dt.Compute("Sum(实用工时)",str))

    End If

End If


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


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

你自己测试一下,如果能达到要求就说明行了。

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


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

如果实在搞不定,化点时间将外部表改成内部表再传文件上来,因为你的问题牵涉面很多,别人一时很难理会的。

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