+
上传用户:zhpu1995
上传日期:2013-09-06
资源大小:61151k
文件大小:17k
源码类别:

企业管理

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{D76D7128-4A96-11D3-BD95-D296DC2DD072}#1.0#0"; "VSOCX7.OCX"
  3. Begin VB.Form MRP_DependentDemandBuild 
  4.    BorderStyle     =   3  'Fixed Dialog
  5.    Caption         =   "相关需求生成"
  6.    ClientHeight    =   4590
  7.    ClientLeft      =   45
  8.    ClientTop       =   330
  9.    ClientWidth     =   6015
  10.    Icon            =   "物料需求计划_相关需求生成.frx":0000
  11.    KeyPreview      =   -1  'True
  12.    LinkTopic       =   "Form1"
  13.    MaxButton       =   0   'False
  14.    MinButton       =   0   'False
  15.    ScaleHeight     =   4590
  16.    ScaleWidth      =   6015
  17.    ShowInTaskbar   =   0   'False
  18.    StartUpPosition =   2  '屏幕中心
  19.    Begin VB.CommandButton cmd_Ok 
  20.       Caption         =   "确定(&O)"
  21.       Height          =   300
  22.       Left            =   3630
  23.       MouseIcon       =   "物料需求计划_相关需求生成.frx":1042
  24.       MousePointer    =   99  'Custom
  25.       Picture         =   "物料需求计划_相关需求生成.frx":134C
  26.       TabIndex        =   0
  27.       Top             =   4185
  28.       Width           =   1120
  29.    End
  30.    Begin VB.CommandButton Cmd_Cancel 
  31.       Cancel          =   -1  'True
  32.       Caption         =   "退出(&E)"
  33.       Height          =   300
  34.       Left            =   4845
  35.       MouseIcon       =   "物料需求计划_相关需求生成.frx":1656
  36.       MousePointer    =   99  'Custom
  37.       Picture         =   "物料需求计划_相关需求生成.frx":1960
  38.       TabIndex        =   1
  39.       Top             =   4185
  40.       Width           =   1120
  41.    End
  42.    Begin VSFlex8Ctl.VSFlexGrid CxbbGrid 
  43.       Height          =   3465
  44.       Left            =   90
  45.       TabIndex        =   2
  46.       Top             =   540
  47.       Width           =   5850
  48.       _ExtentX        =   10319
  49.       _ExtentY        =   6112
  50.       Appearance      =   1
  51.       BorderStyle     =   1
  52.       Enabled         =   -1  'True
  53.       BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  54.          Name            =   "宋体"
  55.          Size            =   9
  56.          Charset         =   134
  57.          Weight          =   400
  58.          Underline       =   0   'False
  59.          Italic          =   0   'False
  60.          Strikethrough   =   0   'False
  61.       EndProperty
  62.       MousePointer    =   0
  63.       BackColor       =   16777215
  64.       ForeColor       =   -2147483640
  65.       BackColorFixed  =   -2147483648
  66.       ForeColorFixed  =   -2147483630
  67.       BackColorSel    =   -2147483635
  68.       ForeColorSel    =   -2147483634
  69.       BackColorBkg    =   -2147483636
  70.       BackColorAlternate=   16777215
  71.       GridColor       =   -2147483633
  72.       GridColorFixed  =   -2147483632
  73.       TreeColor       =   -2147483632
  74.       FloodColor      =   192
  75.       SheetBorder     =   -2147483642
  76.       FocusRect       =   1
  77.       HighLight       =   1
  78.       AllowSelection  =   -1  'True
  79.       AllowBigSelection=   -1  'True
  80.       AllowUserResizing=   0
  81.       SelectionMode   =   0
  82.       GridLines       =   1
  83.       GridLinesFixed  =   2
  84.       GridLineWidth   =   1
  85.       Rows            =   50
  86.       Cols            =   10
  87.       FixedRows       =   1
  88.       FixedCols       =   0
  89.       RowHeightMin    =   0
  90.       RowHeightMax    =   0
  91.       ColWidthMin     =   0
  92.       ColWidthMax     =   0
  93.       ExtendLastCol   =   0   'False
  94.       FormatString    =   ""
  95.       ScrollTrack     =   0   'False
  96.       ScrollBars      =   3
  97.       ScrollTips      =   0   'False
  98.       MergeCells      =   0
  99.       MergeCompare    =   0
  100.       AutoResize      =   -1  'True
  101.       AutoSizeMode    =   0
  102.       AutoSearch      =   0
  103.       MultiTotals     =   -1  'True
  104.       SubtotalPosition=   1
  105.       OutlineBar      =   0
  106.       OutlineCol      =   0
  107.       Ellipsis        =   0
  108.       ExplorerBar     =   0
  109.       PicturesOver    =   0   'False
  110.       FillStyle       =   0
  111.       RightToLeft     =   0   'False
  112.       PictureType     =   0
  113.       TabBehavior     =   0
  114.       OwnerDraw       =   0
  115.       Editable        =   0   'False
  116.       ShowComboButton =   -1  'True
  117.       WordWrap        =   0   'False
  118.       TextStyle       =   0
  119.       TextStyleFixed  =   0
  120.       OleDragMode     =   0
  121.       OleDropMode     =   0
  122.       DataMode        =   0
  123.       VirtualData     =   -1  'True
  124.    End
  125.    Begin VB.Label Label1 
  126.       AutoSize        =   -1  'True
  127.       Caption         =   "计划周期"
  128.       BeginProperty Font 
  129.          Name            =   "宋体"
  130.          Size            =   12
  131.          Charset         =   134
  132.          Weight          =   700
  133.          Underline       =   0   'False
  134.          Italic          =   0   'False
  135.          Strikethrough   =   0   'False
  136.       EndProperty
  137.       ForeColor       =   &H00404040&
  138.       Height          =   240
  139.       Left            =   2490
  140.       TabIndex        =   3
  141.       Top             =   150
  142.       Width           =   1020
  143.    End
  144. End
  145. Attribute VB_Name = "MRP_DependentDemandBuild"
  146. Attribute VB_GlobalNameSpace = False
  147. Attribute VB_Creatable = False
  148. Attribute VB_PredeclaredId = True
  149. Attribute VB_Exposed = False
  150. '*******************************************************
  151. '*    模 块 名 称 :物料需求计划-相关需求生成
  152. '*    功 能 描 述 :分解主生产计划
  153. '*    程序员姓名  : 乔进
  154. '*    最后修改人  : 乔进
  155. '*    最后修改时间:2001/12/04
  156. '*    备        注:经过自己测试
  157. '*******************************************************
  158. Option Explicit
  159.  
  160. Dim RecTemp As New ADODB.Recordset     '需求表
  161. Dim jdzygs As Integer                    '控件焦点转移个数
  162. Dim Lrzt As Integer                      '录入状态标志(0-非录入状态 1-增加 2-修改)
  163. Dim ReportTitle As String                '报表主标题
  164. Dim Sqlstr As String                     'Sql语句字符串
  165. Dim jsqte As Integer                     '计数器
  166.   
  167. '以下为固定使用变量(网格)
  168. Dim Cxnrrec As New ADODB.Recordset       '显示查询内容动态集
  169. Dim Dyymctbl As New DY_Dyymsz            '打印页面窗体变量
  170. Dim GridCode As String                   '显示网格网格代码
  171. Dim GridInf() As Variant                 '整个网格设置信息
  172. Dim Tsxx As String                       '系统提示信息
  173. Dim Qslz As Long                         '网格隐藏(非操作显示)列数
  174. Dim Sjhgd As Double                      '网格数据行高度
  175. Dim GridBoolean() As Boolean             '网格列信息(布尔型)
  176. Dim GridStr()  As String                 '网格列信息(字符型)
  177. Dim GridInt() As Integer                 '网格列信息(整型)
  178. Dim Szzls As Integer                     '数组总列数(网格列数-1)
  179. '******************************************************************************************************************************
  180. '*过程说明:事件
  181. '*过程名称:Form_KeyPress
  182. '*功能描述:控 制 焦 点 转 移
  183. '*参数说明:
  184. '******************************************************************************************************************************
  185. Private Sub Form_KeyPress(KeyAscii As Integer)
  186.    jdzygs = 6
  187.    Select Case KeyAscii
  188.       Case vbKeyReturn
  189.            If Kjjdzy(jdzygs) Then
  190.               KeyAscii = 0
  191.            End If
  192.       Case 39           '屏蔽"'"
  193.         KeyAscii = 0
  194.    End Select
  195. End Sub
  196. '******************************************************************************************************************************
  197. '*过程说明:事件
  198. '*过程名称:Form_Load
  199. '*功能描述:窗体载入
  200. '*参数说明:
  201. '******************************************************************************************************************************
  202. Private Sub Form_Load()
  203.    Screen.MousePointer = 11
  204.   '定义可变部分变量
  205.   '调入打印页面设置窗体
  206.   '调 入 网 格
  207.   GridCode = "MRP_BuildDepDemand"
  208.  
  209.   Call BzWgcsh(CxbbGrid, GridCode, GridInf(), GridBoolean(), GridInt(), GridStr())
  210.   
  211.   Qslz = GridInf(1)
  212.   Sjhgd = GridInf(2)
  213.   Szzls = CxbbGrid.Cols - 1
  214.   
  215.   '填 充 网 格
  216.    Call Cxnrtcwg
  217.    Screen.MousePointer = 0
  218.    
  219.    MRP_DependentDemandBuild.HelpContextID = 241400101
  220.  End Sub
  221. '******************************************************************************************************************************
  222. '*过程说明:自定义子程序
  223. '*过程名称:Cxnrtcwg
  224. '*功能描述:查 询 内 容 填 充 网 格
  225. '*参数说明:
  226. '******************************************************************************************************************************
  227. Private Sub Cxnrtcwg()
  228.     Dim Sqlstr As String
  229.     Dim jsqte As Long, sMonthCyc As String, i As Integer, iYear As Integer, iMonth As Integer
  230.     
  231.     On Error GoTo Errhand
  232.     
  233.     '列出所有的月计划
  234.     Me.CxbbGrid.Clear 1
  235.     Sqlstr = "Select * From Gy_kjrlb Where (kjYear>'" & Year(Xtrq) & "' ) or ( kjYear='" & Year(Xtrq) & "' And Period>='" & Month(Xtrq) & "' ) Order by kjYear ,Period"
  236.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  237.     If Not RecTemp.EOF Then
  238.         RecTemp.MoveLast: RecTemp.MoveFirst: jsqte = CxbbGrid.FixedRows
  239.         CxbbGrid.Rows = CxbbGrid.FixedRows + Val(RecTemp.RecordCount)
  240.         Do While Not RecTemp.EOF
  241.             CxbbGrid.TextMatrix(jsqte, Sydz("001", GridStr(), Szzls)) = Trim(Str(RecTemp!kjyear)) + "." + Format(Trim(Str(RecTemp!Period)), "00")
  242.             CxbbGrid.TextMatrix(jsqte, Sydz("002", GridStr(), Szzls)) = Format(RecTemp!Qsrq, "yyyy-mm-dd")
  243.             CxbbGrid.TextMatrix(jsqte, Sydz("003", GridStr(), Szzls)) = Format(RecTemp!Zzrq, "yyyy-mm-dd")
  244.             CxbbGrid.TextMatrix(jsqte, Sydz("004", GridStr(), Szzls)) = Fun_GetCycState(Val(RecTemp!kjyear), Val(RecTemp!Period))
  245.             RecTemp.MoveNext
  246.             jsqte = jsqte + 1
  247.         Loop
  248.     End If
  249.     Exit Sub
  250. Errhand:
  251.     If Err.Number = "-2147217871" Then
  252.         Tsxx = "连接超时 , 请稍后重新进入!"
  253.     Else
  254.         Tsxx = "初始化过程发生未知错误,请稍后重新进入!"
  255.     End If
  256.     Me.Show
  257.     Me.Refresh
  258.     DoEvents
  259.     Call Xtxxts(Tsxx, 0, 1)
  260. End Sub
  261. '返回某个周期状态,从而知道该周期是否需要汇总
  262. Function Fun_GetCycState(iYear As Integer, iMonth As Integer) As String
  263.     Dim RecState As New ADODB.Recordset, Sqls As String
  264.     
  265.     Sqlstr = "Select Count(*) From MRP_PlanMain Where kjYear='" & iYear & "' And Period='" & iMonth & "' And Checker<>'' And IfBuildDemand=0 And IfComplete=0 "
  266.     Set RecState = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  267.     If Not RecState.EOF Then
  268.         If RecState.Fields(0) = 0 Then
  269.             Fun_GetCycState = "不需汇总"
  270.         Else
  271.             Fun_GetCycState = "需要汇总"
  272.         End If
  273.     Else
  274.         Fun_GetCycState = "不需汇总"
  275.     End If
  276.     Set RecState = Nothing
  277. End Function
  278. Private Sub Form_Unload(Cancel As Integer)             '窗体卸载
  279.    Set Cxnrrec = Nothing
  280.    Set RecTemp = Nothing
  281.    Unload Dyymctbl
  282. End Sub
  283. Private Sub cmd_Ok_Click()
  284.     Dim sCycStr As String, iYear As Integer, iMonth As Integer, RecBOM As New ADODB.Recordset, BillID As String
  285.     Dim DemandNumber As Double
  286.     
  287.     If CxbbGrid.Row < CxbbGrid.FixedRows Then Exit Sub
  288.     
  289.     If Trim(CxbbGrid.TextMatrix(CxbbGrid.Row, Sydz("004", GridStr(), Szzls))) = "不需汇总" Then
  290.         Tsxx = "该周期不需要汇总!"
  291.         Call Xtxxts(Tsxx, 0, 1)
  292.         Exit Sub
  293.     End If
  294.     sCycStr = CxbbGrid.TextMatrix(CxbbGrid.Row, Sydz("001", GridStr(), Szzls))
  295.     Call Sub_DivMonth(sCycStr, iYear, iMonth)
  296.      
  297.     On Error GoTo Errhand
  298.     
  299.     Cw_DataEnvi.DataConnect.Errors.Clear
  300.     Cw_DataEnvi.DataConnect.BeginTrans
  301.     
  302.     Screen.MousePointer = 11
  303.     '取出所有可以要分解的月份计划物料
  304.     Sqlstr = "Select * From MRP_V_MPSList Where kjYear='" & iYear & "' And  Period='" & iMonth & "'   And  Checker<>'' And IfBuildDemand=0 And IfComplete=0 "
  305.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  306.     If RecTemp.EOF Then
  307.         Tsxx = "没有可以汇总计划!"
  308.         Call Xtxxts(Tsxx, 0, 1): Screen.MousePointer = 0
  309.         Exit Sub
  310.     End If
  311.     
  312.     RecTemp.MoveLast: RecTemp.MoveFirst
  313.     Do While Not RecTemp.EOF
  314.         '生成主表数据
  315.         BillID = CreatBillID("2403")
  316.         
  317.         Sqlstr = "Insert MRP_DependentDemandMain ( DepDemandMainID ,kjYear ,Period ,PlanSubID ,PlanMainID ,DeptCode ,MNumber,TotalOutput ,Maker,MakeDate ,Checker ,IfAdd ,IfTotal,IfComplete ) " & _
  318.                "  Values ( '" & BillID & "','" & Val(RecTemp!kjyear) & "','" & Val(RecTemp!Period) & "' ,'" & Val(RecTemp!PlanSubID) & "' ,'" & Val(RecTemp!MPSNumber) & "' ,'" & Trim(RecTemp!DeptCode) & "' ,'" & Trim(RecTemp!MNumber) & "' ,'" & Trim(RecTemp!TotalOutput) & "' ,'" & Xtczy & "' ,'" & Format(Xtrq, "yyyy-mm-dd") & "' ,'','" & IIf(RecTemp!IfAdd = True, 1, 0) & "' , 0 , 0 ) "
  319.         Cw_DataEnvi.DataConnect.Execute (Sqlstr)
  320.         
  321.         Sqlstr = "Select * From MRP_V_BOMList Where MNumber_Main='" & Trim(RecTemp!MNumber & "") & "' And State=1"
  322.         Set RecBOM = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  323.         
  324.         '判断该月份计划物料是否在配方表中存在,如果存在分解,不存在则直接生成相关需求
  325.         jsqte = 1
  326.         If RecTemp!TotalOutput > 0 And Not RecBOM.EOF Then
  327.             RecBOM.MoveLast: RecBOM.MoveFirst
  328.             
  329.             Do While Not RecBOM.EOF
  330.                 DemandNumber = (Val(RecTemp!TotalOutput & "") / (Val(RecBOM!ProPercent & "") / 100)) * Val(RecBOM!RationNum & "") * (1 + Val(RecBOM!WastePercent & ""))
  331.                 If Fun_NumericLen(DemandNumber) > 11 Then
  332.                     Err.Raise vbObjectError + 512
  333.                 End If
  334.                 DemandNumber = Fun_ConvDec(NumberType, DemandNumber)
  335.                 If DemandNumber <= 0 Then
  336.                     Err.Raise vbObjectError + 513
  337.                 End If
  338.                 Sqlstr = " Insert MRP_DependentDemandSub ( DepDemandSubID ,DepDemandMainID ,MNumber ,DemandNumber ,DemandDate  ) " & _
  339.                         " Values ( '" & jsqte & "' ,'" & BillID & "' ,'" & Trim(RecBOM!MNumber_Sub & "") & "' ,'" & DemandNumber & "' ,'" & Format(RecTemp!BeginDate, "yyyy-mm-dd") & "'      )  "
  340.                 Cw_DataEnvi.DataConnect.Execute (Sqlstr)
  341.                 RecBOM.MoveNext
  342.                 jsqte = jsqte + 1
  343.             Loop
  344.         Else
  345.             Sqlstr = " Insert MRP_DependentDemandSub ( DepDemandSubID ,DepDemandMainID ,MNumber ,DemandNumber ,DemandDate  ) " & _
  346.                     " Values ( '" & jsqte & "' ,'" & BillID & "' ,'" & Trim(RecTemp!MNumber & "") & "' ,'" & Fun_ConvDec(NumberType, Format(Val(RecTemp!TotalOutput), "#.000000")) & "' ,'" & Format(RecTemp!BeginDate, "yyyy-mm-dd") & "'      )  "
  347.             Cw_DataEnvi.DataConnect.Execute (Sqlstr)
  348.         End If
  349.         Sqlstr = " Update MRP_PlanMain Set IfBuildDemand=1  Where PlanMainID='" & RecTemp!PlanMainID & "' "
  350.         Cw_DataEnvi.DataConnect.Execute (Sqlstr)
  351.         RecTemp.MoveNext
  352.     Loop
  353.     Cw_DataEnvi.DataConnect.CommitTrans
  354.     Tsxx = "生成完成!"
  355.     Call Xtxxts(Tsxx, 0, 4)
  356.     
  357.     Screen.MousePointer = 0
  358.     CxbbGrid.TextMatrix(CxbbGrid.Row, Sydz("004", GridStr(), Szzls)) = "不需汇总"
  359.     Exit Sub
  360. Errhand:
  361.     Screen.MousePointer = 0
  362.     Cw_DataEnvi.DataConnect.RollbackTrans
  363.     If Err.Number = vbObjectError + 512 Then
  364.         Tsxx = "物料子项需求数量过大超出额定范围 ,请检查物料需求数量!"
  365.     ElseIf Err.Number = vbObjectError + 513 Then
  366.         Tsxx = "物料子项需求数量过小 ,请检查物料需求数量和配方数量!"
  367.     Else
  368.         Tsxx = "汇总过程出现未知错误,没有进行汇总,数据恢复!"
  369.     End If
  370.     Call Xtxxts(Tsxx, 0, 1)
  371.     Exit Sub
  372. End Sub
  373.  
  374. '******************************************************************************************************************************
  375. '*过程说明:自定义程序
  376. '*过程名称:Cmd_Cancel_Click
  377. '*功能描述:取消操作,退成汇总程序
  378. '*参数说明:
  379. '******************************************************************************************************************************
  380. Private Sub Cmd_Cancel_Click()
  381.     Unload Me
  382. End Sub
  383. '*********************通用程序****************************************
  384. Private Sub bbyl(bbylte As Boolean)                    '报表打印预览
  385.   Dim Bbzbt$, Bbxbt() As String, bbxbtzzxs() As Integer, Bbxbtgs As Integer
  386.   Dim Bbbwh() As String, Bbbwhzzxs() As Integer, Bbbwhgs As Integer
  387.   Bbxbtgs = 1                                          '报 表 小 标 题 行 数
  388.   Bbbwhgs = 0                                          '报 表 表 尾 行 数
  389.   ReDim Bbxbt(1 To Bbxbtgs)
  390.   ReDim bbxbtzzxs(1 To Bbxbtgs)
  391.   If Bbbwhgs <> 0 Then
  392.      ReDim Bbbwh(1 To Bbbwhgs)
  393.      ReDim Bbbwhzzxs(1 To Bbbwhgs)
  394.   End If
  395.   Bbzbt = ReportTitle
  396.   Bbxbt(1) = " "
  397.   bbxbtzzxs(1) = 0                                     '报表行组织形式(0-居左 1-居中 2-居右)
  398.   Call Scyxsjb(CxbbGrid)                               '生成报表数据
  399.   Call Scdybb(Dyymctbl, Bbzbt, Bbxbt(), bbxbtzzxs(), Bbxbtgs, Bbbwh(), Bbbwhzzxs(), Bbbwhgs, bbylte)
  400.   If Not bbylte Then
  401.      Unload DY_Tybbyldy
  402.   End If
  403. End Sub
  404. Private Sub SzToolbar_ButtonClick(ByVal Button As MSComctlLib.Button)
  405.     Select Case Button.Key
  406.         Case "bz"
  407.             Call F1bz
  408.         Case "tc"
  409.             Unload Me
  410.     End Select
  411. End Sub
  412. '拆分周期,从周期中提出年月
  413. Private Sub Sub_DivMonth(InPara As String, Out1 As Integer, Out2 As Integer)
  414.     Dim Pos1 As Integer
  415.     Pos1 = InStr(1, InPara, ".")
  416.     Out1 = Val(Left(InPara, Pos1 - 1))
  417.     Out2 = Right(InPara, Len(InPara) - Pos1)
  418. End Sub
  419. Function Fun_NumericLen(Num As Double) As Integer
  420.     Dim sNum As String
  421.     sNum = Str(Int(Num))
  422.     Fun_NumericLen = Len(Trim(sNum))
  423. End Function