以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 多个字段都是根据原始几个字段计算得出的结果 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=12152) |
||||
-- 作者:kgd815 -- 发布时间:2011/8/24 14:58:00 -- 多个字段都是根据原始几个字段计算得出的结果 当新增行时 在 DataRowAdding 事件中设置第一个字段默认值后就会产生 DataColChanged 事件,而不是等 初始化所有字段后才会产生 DataColChanged 事件: Dim MR As DataRow = e.DataRow If CStr(e.newvalue) <> CStr(e.oldvalue) Then \'If MR("工艺单号") <> "" Then If MR("下机长缩率手输") Then MR("下机长缩率") = iif(MR("下机长缩率") = 0 ,0.97,MR("下机长缩率")) Else MR("下机长缩率") = format (getxjcsl( getszcs( MR("毛纱纱支")),zzv(MR("毛经组织")),MR("筘号"),MR("变换牙")) ,"0.000") End If If MR("下机宽缩率手输") Then MR("下机宽缩率") = iif(MR("下机宽缩率") = 0 ,0.94,MR("下机宽缩率")) Else MR("下机宽缩率") = format (getxjksl( getszcs( MR("毛纱纱支")),zzv(MR("毛经组织")),MR("筘号"),MR("变换牙")) ,"0.000") End If If MR("下水长缩率手输") Then MR("下水长缩率") = iif(MR("下水长缩率") = 0 ,0.97,MR("下水长缩率")) Else MR("下水长缩率") = format (getxscsl( getszcs( MR("毛纱纱支")),zzv(MR("毛经组织")),MR("筘号"),MR("变换牙"),MR("下机长缩率"), MR("下机宽缩率") , MR("色织"), MR("下水"),True),"0.000") End If If MR("下水宽缩率手输") Then MR("下水宽缩率") = iif(MR("下水宽缩率") = 0 ,0.90,MR("下水宽缩率")) Else MR("下水宽缩率") = format (getxsksl( getszcs( MR("毛纱纱支")),zzv(MR("毛经组织")),MR("筘号"),MR("变换牙"), MR("下水")) ,"0.000") End If If MR("缎裆停卷手输") Then MR("缎裆停卷") = iif(MR("缎裆停卷") = 0 ,1,MR("缎裆停卷")) Else MR("缎裆停卷") = IIF(MR("缎纬纱支") = "21S/2",2,0 ) + IIF(MR("缎纬纱支") = "32S/2" ,3,0) End If If MR("开数手输") Then MR("开数") = iif(MR("开数") = 0 ,1,MR("开数")) Else MR("开数") = 1 End If MR("成品中毛长") = MR("成品全长") - MR("成品平布长") * 2 - MR("成品缎裆长") MR("下水中毛长") = MR("成品中毛长") MR("下水缎裆长") = MR("成品缎裆长") MR("下水平布长") = MR("成品平布长") * iif(MR("成品平布长") >=1.5,2.9,3) MR("下水全长") = MR("下水中毛长") + MR("下水平布长") * 2 + MR("下水缎裆长") MR("下机中毛长") = format(MR("下水中毛长") / MR("下水长缩率"),"0.0") MR("下机缎裆长") = format(MR("下水缎裆长") / MR("下水长缩率"),"0.0") MR("下机平布长") = format(MR("下水平布长") / MR("下水长缩率"),"0.0") MR("下机全长") = MR("下机中毛长") + MR("下机平布长") * 2 + MR("下机缎裆长") MR("在机中毛长") = format(MR("下机中毛长") / MR("下机长缩率"),"0.0") MR("在机缎裆长") = format(MR("下机缎裆长") / MR("下机长缩率"),"0.0") MR("在机平布长") = format(MR("下机平布长") / MR("下机长缩率"),"0.0") MR("在机全长") = MR("在机中毛长") + MR("在机平布长") * 2 + MR("在机缎裆长") MR("在机中毛宽") = format(MR("中毛齿") / MR("筘号") * 5.08,"0.0") MR("在机平布外宽") = format(MR("平布外齿") / MR("筘号") * 5.08,"0.0") MR("在机全宽") = MR("在机中毛宽") + MR("在机平布外宽") * 2 MR("下机中毛宽") = format(MR("在机中毛宽") * MR("下机宽缩率"),"0.0") MR("下机平布宽") = format((MR("在机平布外宽") - 0.3) * MR("下机宽缩率"),"0.0") MR("下机全宽") = MR("下机中毛宽") + MR("下机平布宽") * 2 MR("下水中毛宽") = format(MR("下机中毛宽") * MR("下水宽缩率"),"0.0") MR("下水平布宽") = format(MR("下机平布宽") * MR("下水宽缩率"),"0.0") MR("下水全宽") = Format(MR("下水中毛宽") + MR("下水平布宽") * 2,"0.0") MR("成品中毛宽") = format(MR("成品全宽") - MR("成品平布宽") * 2,"0.0") MR("中毛碰数") = format(MR("变换牙") / 7.92 * MR("在机中毛长"),"0") MR("平布碰数") = format(MR("变换牙") / 7.92 * MR("在机平布长"),"0") MR("缎裆碰数") = Format(MR("变换牙") / 7.92 * MR("在机缎裆长") * (MR("缎裆停卷") + 1),"0") MR("制成率") = iif(MR("割绒"),0.8457,1) * iif(MR("下水"),0.94,1) MR("下机克数") = Format(MR("成品克数") / MR("制成率"), iif(MR("成品克数")>=100,"0","0.0")) MR("经纱实际纱支") = getsysteminfo( "生产实用纱支",MR("经纱纱支"),MR("经纱纱支")) MR("经纱预加工") = iif( MR("色织") = True ,"染色", "无") MR("经纱千米重") = format(getszqmz( MR("经纱实际纱支"),MR("经纱预加工")),"0.000") MR("经纱米数") = format(MR("在机全长") * (MR("中毛齿") * zzv( MR("底经组织") ) + MR("平布外齿") * 4) / 100 ,"0.00") MR("经纱克数") = Format(MR("经纱米数") * MR("经纱千米重") / 1000 , "0.00") MR("纬纱实际纱支") = getsysteminfo( "生产实用纱支",MR("纬纱纱支"),MR("纬纱纱支")) MR("纬纱预加工") = iif( MR("色织") = True ,"染色", "无") MR("纬纱千米重") = format(getszqmz( MR("纬纱实际纱支"),MR("纬纱预加工")),"0.000") MR("纬纱米数") = Format(MR("在机全宽") *( MR("中毛碰数") + MR("平布碰数") * 2) * 3 / 100 ,"0.00") MR("纬纱克数") = Format(MR("纬纱米数") * MR("纬纱千米重") / 1000 , "0.00") MR("缎纬实际纱支") = getsysteminfo( "生产实用纱支",MR("缎纬纱支"),MR("缎纬纱支")) MR("缎纬预加工") = iif( MR("色织") = True ,"染色", "无") MR("缎纬千米重") = format(getszqmz( MR("缎纬实际纱支"),MR("缎纬预加工")),"0.000") MR("缎纬米数") = format(MR("在机全宽") * MR("缎裆碰数") * 3 / 100,"0.00") MR("缎纬克数") = Format(MR("缎纬米数") * MR("缎纬千米重") / 1000 , "0.00") MR("毛纱实际纱支") = getsysteminfo( "生产实用纱支",MR("毛纱纱支"),MR("毛纱纱支")) MR("毛纱预加工") = iif( MR("色织") = True ,"染色", iif( MR("毛纱纱支") = "16S" ,"上浆","无")) MR("毛纱千米重") = format(getszqmz( MR("毛纱实际纱支"),MR("毛纱预加工")),"0.000") MR("毛纱克数") = MR("下机克数") - MR("经纱克数") - MR("纬纱克数") - MR("缎纬克数") MR("毛纱米数") = Format(MR("毛纱克数") / MR("毛纱千米重") * 1000 , "0.00") \'End If End If DataRowAdding 事件: Dim DT As Row = Tables("订单货品").current Dim MR As DataRow = e.DataRow MR("工艺单号") = "" \'------------------------------------------------初始化订单信息,从订单录入基本数据 MR("订单编号") = DT("订单编号") MR("货号") = DT("货号") MR("风格") = DT("风格") MR("规格") = DT("规格") MR("名称") = DT("名称") MR("色织") = DT("色织") MR("缎裆") = DT("缎裆") MR("割绒") = DT("割绒") MR("螺旋") = DT("螺旋") Select Case DT("漂染") Case "漂白","染色" MR("下水") = True Case Else MR("下水") = False End Select MR("毛纱纱支") = DT("纱支") MR("成品全宽") = DT("宽度") MR("成品全长") = DT("长度") MR("成品克数") = DT("克数") \'----------------------------------------------------初始化工艺设计参数 MR("机型") ="75梭机" MR("织向") ="竖织" MR("开数") = 1 MR("条间") = 4 MR("缎裆停卷手输") = False MR("下机长缩率手输") = False MR("下机宽缩率手输") = False MR("下水长缩率手输") = False MR("下水宽缩率手输") = False MR("开数手输") = False MR("毛经组织") = "单单" MR("底经组织") ="单单" MR("经纱纱支") = "21S/2" MR("纬纱纱支") = "17S" MR("缎纬纱支") = "21S/2" MR("成品平布长") = 2 MR("成品缎裆长") = 0 MR("成品平布宽") = 0.7 MR("筘号") = 54 MR("标准牙") = 37 MR("变换牙") = 45 \'----------------------------------------------------- Dim xjk As Single = format (getxjksl( getszcs( MR("毛纱纱支")),zzv(MR("毛经组织")),MR("筘号"),MR("变换牙")) ,"0.000") Dim xsk As Single = format (getxsksl( getszcs( MR("毛纱纱支")),zzv(MR("毛经组织")),MR("筘号"),MR("变换牙"), MR("下水")) ,"0.000") MR("中毛齿") = ( MR("成品全宽") - MR("成品平布宽") * 2 ) / xsk / xjk * MR("筘号") / 5.08 MR("平布外齿") = 32 \'----------------------------------------------------- MR("工艺单号") = getsystembm("工艺设计","工艺单号") 如果要在DataColChanged设置代码,判断是否这些字段全部已经输入,输入了就执行代码,否则返回。代码如何设置 我先是判断 MR("工艺单号") <>""才会执行,可是一旦新增行程序就很出,如果不加这个条件还可以,但有些数据计算的不正确,请问有没更好的方法 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/8/24 15:08:00 -- 例如这个在DatarowAdding初始化四列数据,只有全部初始化完毕,才会有提示:
|
||||
-- 作者:kgd815 -- 发布时间:2011/8/24 15:12:00 -- 我打不开呀,我是用的开发版 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/8/24 15:14:00 --
|