If Tables("订单计划一览表").Current IsNot Nothing Then
Dim ddr As Row = Tables("订单计划一览表").Current
Dim bomlx As WinForm.ComboBox = e.Form.Controls("BOM类型")
bomlx.ComboList = DataTables("tabDIYTable37").SQLGetComboListString("F3963","F252 = '" & ddr("品名规格") & "'")
Dim khdr As DataRow = DataTables("客户合同评审单").SQLFind("单号 = '" & ddr("合同评审单号") & "' and 序号 = " & ddr("原序号"))
If khdr IsNot Nothing Then
e.Form.Controls("客户料号").text = "客户料号:" & khdr("客户品名")
Else
e.Form.Controls("客户料号").text = "客户料号:"
End If
Tables("生产制令单_Table1").Filter = "销售单号 = '" & ddr("销售单号") & "'"
Dim dr As DataRow = DataTables("Ft生产制令单").SQLFind("销售单号 = '" & ddr("销售单号") & "'")
If dr IsNot Nothing Then
DataTables("Ft生产制令单").LoadFilter = "销售单号 = '" & ddr("销售单号") & "'"
DataTables("Ft生产制令单").Load(False)
Else
DataTables("Ft生产制令单").LoadFilter = "销售单号 = ''"
DataTables("Ft生产制令单").Load(False)
Dim bomzb As DataRow = DataTables("tabDIYTable37").SQLFind("[F252] = '" & ddr("品名规格") & "' and [F3963] = '常规'")
For Each bommx As DataRow In DataTables("tabDIYTable38").SQLSelect("ID = " & bomzb("ID"))
Dim xdr As DataRow = DataTables("Ft生产制令单").AddNew
xdr("销售单号") = ddr("销售单号")
xdr("料号") = bommx("F257")
xdr("材料品号规格") = bommx("F258")
xdr("用量") = IIF(bommx("F255") > 0 ,bommx("F259") / bommx("F255"),bommx("F259"))
xdr("需领量") = Math.Ceiling(xdr("用量") * (ddr("数量") + CInt(e.Form.Controls("备品数").Value)))
Next
End If
'************成品库存为0且只有一种bom时直接转成零件BOM****
For Each r As DataRow In DataTables("Ft生产制令单").DataRows
Dim cplxdr As DataRow = DataTables("tabDIYTable24").SQLFind("F124 = '" & r("料号") & "'")
If cplxdr IsNot Nothing Then
If cplxdr("F128") = "成品" Then
Dim cpkc As DataRow = DataTables("tabDIYTable29").SQLFind("ID = " & cplxdr("ID") & " and F160 = '成品仓库'")
If cpkc IsNot Nothing Then
If cpkc("F162") <= 0 Then
Dim zdrs As new List(Of DataRow)
zdrs = DataTables("tabDIYTable37").SQLSelect("[F252] = '" & r("料号") & "'")
If zdrs.Count = 1 Then
For Each zmx As DataRow In DataTables("tabDIYTable38").SQLSelect("ID = " & zdrs(0)("ID"))
Dim lhs As new List(of String)
lhs = DataTables("Ft生产制令单").GetValues("料号","销售单号 = '" & r("销售单号") & "'")
If lhs.Contains(zmx("F257")) Then
Dim xydr As DataRow = DataTables("Ft生产制令单").Find("销售单号 = '" & r("销售单号") & "' and 料号 = '" & zmx("F257") & "'")
xydr("用量") = xydr("用量") + r("用量") * IIF(zmx("F255") > 0 ,zmx("F259") / zmx("F255"),zmx("F259"))
xydr("需领量") = Math.Ceiling(xydr("用量") * (ddr("数量") + CInt(e.Form.Controls("备品数").Value)))
Else
Dim xdr As DataRow = DataTables("Ft生产制令单").AddNew
xdr("销售单号") = r("销售单号")
xdr("料号") = zmx("F257")
xdr("材料品号规格") = zmx("F258")
xdr("用量") = r("用量") * IIF(zmx("F255") > 0 ,zmx("F259") / zmx("F255"),zmx("F259"))
xdr("需领量") = Math.Ceiling(xdr("用量") * (ddr("数量") + CInt(e.Form.Controls("备品数").Value)))
End If
Next
r.Delete()
End If
Else
Dim wfsl As Decimal = DataTables("发料未完成制令单").SQLCompute("sum(未发量)","料号 = '" & r("料号") & "'")
If CDec(cpkc("F162")) >= wfsl - r("需领量") Then
If CDec(cpkc("F162")) - wfsl < r("需领量") Then
Dim xlh As Decimal = (r("需领量") - CDec(cpkc("F162")) - wfsl)/ r("用量")
Dim zdrs As new List(Of DataRow)
zdrs = DataTables("tabDIYTable37").SQLSelect("[F252] = '" & r("料号") & "'")
If zdrs.Count = 1 Then
r("需领量") = CDec(cpkc("F162")) - wfsl
For Each zmx As DataRow In DataTables("tabDIYTable38").SQLSelect("ID = " & zdrs(0)("ID"))
Dim lhs As new List(of String)
lhs = DataTables("Ft生产制令单").GetValues("料号","销售单号 = '" & r("销售单号") & "'")
If lhs.Contains(zmx("F257")) Then
Dim xydr As DataRow = DataTables("Ft生产制令单").Find("销售单号 = '" & r("销售单号") & "' and 料号 = '" & zmx("F257") & "'")
xydr("用量") = xydr("用量") + r("用量") * IIF(zmx("F255") > 0 ,zmx("F259") / zmx("F255"),zmx("F259"))
xydr("需领量") = xydr("需领量") + Math.Ceiling(xlh * IIF(zmx("F255") > 0 ,zmx("F259") / zmx("F255"),zmx("F259")) )
Else
Dim xdr As DataRow = DataTables("Ft生产制令单").AddNew
xdr("销售单号") = r("销售单号")
xdr("料号") = zmx("F257")
xdr("材料品号规格") = zmx("F258")
xdr("用量") = r("用量") * IIF(zmx("F255") > 0 ,zmx("F259") / zmx("F255"),zmx("F259"))
xdr("需领量") = Math.Ceiling(xdr("用量") * xlh)
End If
Next
End If
End If
End If
End If
‘Functions.Execute("zldbomdg",DataTables("Ft生产制令单").DataRows)
End If
End If
End If
Next
'***********更新到最新的品名***********************
For Each r As Row In Tables("Ft生产制令单").Rows
Dim cplxdr As DataRow = DataTables("tabDIYTable24").SQLFind("F124 = '" & r("料号") & "'")
r("材料品号规格") = cplxdr("F125")
Next
'**********************************************************
Tables("生产制令单_Table1").AutoSizeHeaderRow()
Tables("生产制令单_Table1").ExtendLastCol = True
Tables("Ft生产制令单").ExtendLastCol = True
Tables("生产制令单_Table3").ExtendLastCol = True
End If
'***依权限显示******
Dim qx As Boolean = False
For Each qxdr As DataRow In DataTables("FTtabQX").SQLSelect("表名 = '订单计划一览表'")
If _UserRGroups.Contains(qxdr("部门和角色")) Then
qx = True
End If
Next
If qx = False Then
e.Form.Controls("保存").Visible = False
e.Form.Controls("保存BOM").Visible = False
e.Form.Controls("删除特殊BOM").Visible = False
e.Form.Controls("直接打印").Visible = False
End If
红色部分递归函数怎么写?写了几次都是直接报错,甚至软件直接退出。