以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  自动转换数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=99992)

--  作者:zhangning
--  发布时间:2017/5/2 14:48:00
--  自动转换数据
“加工排产”中,如各工序的“工程名”和“调度设备”均不为空,则,
就在“设备别任务”里追加一行,并将“设备别任务”里其他列的内容从“加工排产”中引入,
在追加时,希望按设备扎堆(按设备名升序排列,同种设备,按照开始日期升序排列)

请问老师,如何达到这种效果,谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:精益制造管理系统.rar

管理员  qdrA001

--  作者:有点蓝
--  发布时间:2017/5/2 14:56:00
--  
关联引用参考:http://www.foxtable.com/webhelp/scr/1451.htm


--  作者:zhangning
--  发布时间:2017/5/2 15:31:00
--  
老师,谢谢!
我写了第1序的转换,如下:
Select Case e.DataCol.Name
    Case "第1序_工程名","第1序_调度设备"
        If e.DataRow.IsNull("第1序_工程名") = False AndAlso e.DataRow.IsNull("第1序_调度设备") = False Then
            Dim dr6 As DataRow
            dr6 = DataTables("设备别任务").Find("设备 = \'" & e.DataRow("第1序_调度设备") & "\'")
            If dr6 Is Nothing Then
                dr6 = DataTables("设备别任务").AddNew()
                dr6("设备") = e.DataRow("第1序_调度设备")
                dr6("指令单") = e.DataRow("指令单")
                dr6("部品ID") = e.DataRow("部品ID")
                dr6("工序") = e.DataRow("第1序_工程名")
                dr6("开始日期") = e.DataRow("第1序_开始日")
                dr6("结束日期") = e.DataRow("第1序_结束日")
                dr6("加工数量") = e.DataRow("第1序_投入数量")
            End If            
        End If
End Select

最多设置了12个工序的位置,有些产品最多是6道工序,
笨办法是按照上述代码,一直写到12道工序,
请问老师,有没有简单点的办法,谢谢!

--  作者:有点色
--  发布时间:2017/5/2 16:19:00
--  

If e.DataCol.name Like "*序_工程名*" OrElse e.DataCol.name Like "*序_调度设备*" Then
    Dim idx As Integer = e.DataCol.name.replace("第", "").replace("序_工程名", "").replace("序_调度设备", "")
    msgbox(idx)
    If e.DataRow.IsNull("第" & idx & "序_工程名") = False AndAlso e.DataRow.IsNull("第" & idx & "序_调度设备") = False Then
        Dim dr6 As DataRow
        dr6 = DataTables("设备别任务").Find("设备 = \'" & e.DataRow("第" & idx & "序_调度设备") & "\'")
        If dr6 Is Nothing Then
            dr6 = DataTables("设备别任务").AddNew()
            dr6("设备") = e.DataRow("第" & idx & "序_调度设备")
            dr6("指令单") = e.DataRow("指令单")
            dr6("部品ID") = e.DataRow("部品ID")
            dr6("工序") = e.DataRow("第" & idx & "序_工程名")
            dr6("开始日期") = e.DataRow("第" & idx & "序_开始日")
            dr6("结束日期") = e.DataRow("第" & idx & "序_结束日")
            dr6("加工数量") = e.DataRow("第" & idx & "序_投入数量")
        End If
    End If
End If

[此贴子已经被作者于2017/5/2 16:37:25编辑过]

--  作者:zhangning
--  发布时间:2017/5/2 16:33:00
--  
谢谢老师
显示以下错误
.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2017.3.18.1
错误所在事件:表,加工排产, DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“AC”到类型“Integer”的转换无效。
输入字符串的格式不正确。

老师帮看看,需要改哪里呢?


--  作者:有点色
--  发布时间:2017/5/2 16:37:00
--  

改一下

 

If e.DataCol.name Like "*序_工程名*" OrElse e.DataCol.name Like "*序_调度设备*" Then
    Dim idx As Integer = e.DataCol.name.replace("第", "").replace("序_工程名", "").replace("序_调度设备", "")
    msgbox(idx)
    If e.DataRow.IsNull("第" & idx & "序_工程名") = False AndAlso e.DataRow.IsNull("第" & idx & "序_调度设备") = False Then
        Dim dr6 As DataRow
        dr6 = DataTables("设备别任务").Find("设备 = \'" & e.DataRow("第" & idx & "序_调度设备") & "\'")
        If dr6 Is Nothing Then
            dr6 = DataTables("设备别任务").AddNew()
            dr6("设备") = e.DataRow("第" & idx & "序_调度设备")
            dr6("指令单") = e.DataRow("指令单")
            dr6("部品ID") = e.DataRow("部品ID")
            dr6("工序") = e.DataRow("第" & idx & "序_工程名")
            dr6("开始日期") = e.DataRow("第" & idx & "序_开始日")
            dr6("结束日期") = e.DataRow("第" & idx & "序_结束日")
            dr6("加工数量") = e.DataRow("第" & idx & "序_投入数量")
        End If
    End If
End If


--  作者:zhangning
--  发布时间:2017/5/2 16:49:00
--  
老师,出现了很多窗口,内容是“1”
上传不了图片,不好意思。

--  作者:有点色
--  发布时间:2017/5/2 17:27:00
--  

你要学会看和理解代码。把提示代码 msgbox(idx) 删除掉


--  作者:zhangning
--  发布时间:2017/5/3 11:28:00
--  
按照老师说的,完美解决了,谢谢老师!
会加强学习代码知识,谢谢!