以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  C版请进  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=5682)

--  作者:wqc360
--  发布时间:2009/12/28 21:20:00
--  C版请进
C版,您好,文件我已经做成内部表了,请帮我看看,文件-基础数据-下达计划-窗口控件下达生产计划,录入数据,点控件下达生产计划,可以执行,只有计划工序表中两个日期列没数据,需点配置栏重算表得到,还能接受。
文件-计划数据-到料排产-窗口控件到料排产录入数据,点控件到料准备生产,就出错,请帮我看看生产工艺表、生产工序表、生产目录表、日报表的表属性和填充按钮代码应该怎么改,其中计算数据都需要要,只能改代码用不同方法得出,不能少,关键问题是子父表之间相互提取数据进行计算,这又是必须的。谢谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目15.rar


--  作者:czy
--  发布时间:2009/12/28 21:52:00
--  
今天我还没有时间帮你处理。
--  作者:wqc360
--  发布时间:2009/12/28 21:59:00
--  
您空了再看,很乱的,可能会耽误你很多时间,先谢谢您了。
--  作者:czy
--  发布时间:2009/12/28 22:23:00
--  
以下是引用wqc360在2009-12-28 21:20:00的发言:
C版,您好,文件我已经做成内部表了,请帮我看看,文件-基础数据-下达计划-窗口控件下达生产计划,录入数据,点控件下达生产计划,可以执行,只有计划工序表中两个日期列没数据,需点配置栏重算表得到,还能接受。


将计划工序相关代码改成:

Dim T1 As Table = Tables("计划工序")
For n As integer = 0 to T1.count-1
    if T1.rows(n)("图号") = tables("产品目录").current("图号") And T1.rows(n).isnull("派工单号")
        T1.rows(n)("派工单号") = e.Form.Controls("(派工单号)").text
        T1.rows(n)("计划数量") = e.Form.Controls("(计划数量)").text
        T1.rows(n)("计划日期_开始") = e.Form.Controls("(计划转入日期)").Value
        T1.rows(n)("计划日期_结束") = e.Form.Controls("(计划完工日期)").Value
    End if
Next

[此贴子已经被作者于2009-12-28 22:23:48编辑过]

--  作者:czy
--  发布时间:2009/12/28 22:48:00
--  
以下是引用wqc360在2009-12-28 21:20:00的发言:

文件-计划数据-到料排产-窗口控件到料排产录入数据,点控件到料准备生产,就出错,请帮我看看生产工艺表、生产工序表、生产目录表、日报表的表属性和填充按钮代码应该怎么改,其中计算数据都需要要,只能改代码用不同方法得出,不能少,关键问题是子父表之间相互提取数据进行计算,这又是必须的。谢谢


只是解决出错问题吗?
结果是否正确?


--  作者:wqc360
--  发布时间:2009/12/28 22:53:00
--  
狗狗没拿回来,明天我试试
--  作者:czy
--  发布时间:2009/12/28 22:57:00
--  
出错问题我已经找到,数据正确率只能你自己测试。
我测试一下再发代码给你。
--  作者:czy
--  发布时间:2009/12/28 23:11:00
--  [求助]
到料排产窗口,到料排产按钮公式改成这样:

If CurrentTable.Focus Then
    Forms("到料准备生产").Open()
Else
    MessageBox.Show("没有当前表焦点,请先选择当前表后再执行此操作!","提示",MessageBoxButtons.Ok,MessageBoxIcon.Information)
End If

--  作者:czy
--  发布时间:2009/12/28 23:12:00
--  
到料准备生产窗口,到料准备生产按钮代码改成这样:

Dim Values As String() = {"(到料数量)","(到料日期)","(完工日期)","(派工单号)"}
Dim dd As WinForm.TextBox = e.Form.Controls("(派工单号)")
if IsNumeric(e.Form.Controls("(到料数量)").Value) = false
    MessageBox.Show("到料数据不是值型!","提示",MessageBoxButtons.Ok,MessageBoxIcon.Information)
    Return
End If
For Each Va as string In Values
    with e.form
        if .Controls(va).value Is Nothing then
            MessageBox.Show(va &" 资料不全,请录入!", "提示")
            Return
        end if
    end with
Next
Dim r As Row = CurrentTable.Current
Dim dr As DataRow
dr = DataTables("生产目录").Find("[图号] = \'" & r("图号") & "\' and [派工单号] =  \'" & dd.text & "\'")
If dr Is Nothing Then
    dim f As New Filler
    f.SourceTable = DataTables("计划目录") \'指定数据来源
    f.SourceCols = "客户,机型,所属部分,图号,名称,材料_材质,材料_重量Kg,材料_成品单价元,材料成本_单价元,材料成本_报废元,加工费_公司结算元,备注,照片,材料_废品单价元,批量,计划转入日期,计划完工日期,计划数量,计划周期" \'指定数据来源列
    f.DataTable = DataTables("生产目录") \'指定数据接收表
    f.DataCols = "客户,机型,所属部分,图号,名称,材料_材质,材料_重量Kg,材料_成品单价元,材料成本_单价元,材料成本_报废元,加工费_公司结算元,备注,照片,材料_废品单价元,批量,计划转入日期,计划完工日期,计划数量,计划周期" \'指定数据接收列
    f.Filter = "[图号] =  \'" & r("图号") & "\'"
    f.Fill() \'填充数据
end if
dr = DataTables("生产工艺").Find("[图号] = \'" & r("图号") & "\'and [派工单号] =  \'" & dd.text & "\'")
If dr Is Nothing Then
    dim f As New Filler
    f.SourceTable = DataTables("计划工序") \'指定数据来源
    f.SourceCols = "图号,名称,工序_序号,工序_简要提示,备注,照片,计划数量,工序_班组,状态" \'指定数据来源列
    f.DataTable = DataTables("生产工序") \'指定数据接收表
    f.DataCols = "图号,名称,工序_序号,工序_简要提示,备注,照片,计划数量,工序_班组,状态" \'指定数据接收列
    f.Filter = "[图号] =  \'" & r("图号") & "\'"
    f.Fill() \'填充数据
end if
dr = DataTables("生产工艺").Find("[图号] = \'" & r("图号") & "\'and [派工单号] =  \'" & dd.text & "\'")
If dr Is Nothing Then
    dim f As New Filler
    f.SourceTable = DataTables("计划工艺") \'指定数据来源
    f.SourceCols = "图号,名称,工艺_序号,工艺_加工提示,备注,准结工时_装校工装,准结工时_装刀,加工工时_机动,加工工时_装夹,加工工时_周期,标准_工时,准结工时_试切,准结工时_拆工装,标准_产量,标准_难度系数,难度情况_材质,难度情况_精度,难度情况_切削,难度情况_批量,难度情况_装夹,难度系数_精度,难度系数_材质,难度系数_切削,难度系数_批量,难度系数_疲劳,难度系数_装夹,工序_序号,准结工时_备刀,难度情况_钢性,难度情况_重量,难度系数_重量,难度系数_钢性,工艺_工作中心组,照片,工艺_加工费单价元,工艺_工资单价元,难度情况_疲劳,工序_班组,状态,计划数量" \'指定数据来源列
    f.DataTable = DataTables("生产工艺") \'指定数据接收表
    f.DataCols = "图号,名称,工艺_序号,工艺_加工提示,备注,准结工时_装校工装,准结工时_装刀,加工工时_机动,加工工时_装夹,加工工时_周期,标准_工时,准结工时_试切,准结工时_拆工装,标准_产量,标准_难度系数,难度情况_材质,难度情况_精度,难度情况_切削,难度情况_批量,难度情况_装夹,难度系数_精度,难度系数_材质,难度系数_切削,难度系数_批量,难度系数_疲劳,难度系数_装夹,工序_序号,准结工时_备刀,难度情况_钢性,难度情况_重量,难度系数_重量,难度系数_钢性,工艺_工作中心组,照片,工艺_加工费单价元,工艺_工资单价元,难度情况_疲劳,工序_班组,状态,计划数量" \'指定数据接收列
    f.Filter = "[图号] =  \'" & r("图号") & "\'"
    f.Fill() \'填充数据
end if
Dim T1 As Table = Tables("生产工艺")
Dim T2 As Table = Tables("生产工序")
Dim T3 As Table = Tables("生产目录")
for n as integer = 0 to T1.count-1
    if T1.rows(n)("图号") = tables("计划目录").current("图号")
        T1.rows(n)("派工单号") = e.Form.Controls("(派工单号)").text
    end if
next
for n as integer = 0 to T2.count-1
    if T2.rows(n)("图号") = tables("计划目录").current("图号")
        T2.rows(n)("派工单号") = e.Form.Controls("(派工单号)").text
    end if
next
for n as integer = 0 to T3.count-1
    if T3.rows(n)("图号") = tables("计划目录").current("图号")
        T3.rows(n)("订单号") = e.Form.Controls("(订单号)").text
        T3.rows(n)("首批数量") = e.Form.Controls("(到料数量)").text
        T3.rows(n)("派工单号") = e.Form.Controls("(派工单号)").text
        T3.rows(n)("到料日期") = e.Form.Controls("(到料日期)").text
        T3.rows(n)("完工日期") = e.Form.Controls("(完工日期)").text
    end if
next

--  作者:wqc360
--  发布时间:2009/12/28 23:24:00
--  
原来的计算结果都对,用手工录入数据进行的测试,逻辑也对。