c
来自「VB开发的ERP系统」· 代码 · 共 1,044 行 · 第 1/3 页
TXT
1,044 行
Dim Sjhgd As Double '网格数据行高度
Dim Sfxshjwg As Boolean '是否显示合计网格
Dim GridBoolean() As Boolean '网格列信息(布尔型)
Dim GridStr() As String '网格列信息(字符型)
Dim GridInt() As Integer '网格列信息(整型)
Dim Szzls As Integer '数组总列数(网格列数-1)
Private Sub Form_Resize() '根据窗体大小来调整网格,标题栏大小(Fixed)
On Error Resume Next
With CxbbGrid
.Width = Me.Width - 160
.Height = Me.Height - .Top - 400
End With
With Pic_Title
.Width = Me.Width - 160
End With
GsToolbar.Left = Me.Width - GsToolbar.Width - 140
End Sub
Private Sub Form_Load() '窗体装入
'调入打印页面设置窗体
ReportTitle = "成品等级走势图"
XtReportCode = "QC_ProGraphZst"
Load Dyymctbl
'调整标题栏及网格、格式工具条位置(Fixed)
Pic_Title.Left = 40
Pic_Title.Top = SzToolbar.Top + SzToolbar.Height - 10
CxbbGrid.Left = Pic_Title.Left
CxbbGrid.Top = Pic_Title.Top + Pic_Title.Height + 20
'调 入 网 格(Fixed)
GridCode = "QC_ProGraphZst"
Call BzWgcsh(CxbbGrid, GridCode, GridInf(), GridBoolean(), GridInt(), GridStr())
Qslz = GridInf(1)
Sjhgd = GridInf(2)
Sfxshjwg = GridInf(7)
Szzls = CxbbGrid.Cols - 1
End Sub
Private Sub Form_Unload(Cancel As Integer) '窗体卸载
'卸载条件窗体
FrmProGraph_ZstQuery.UnloadCheck.Value = 1
Unload FrmProGraph_ZstQuery
'卸载打印页面设置窗体
Unload Dyymctbl
End Sub
Private Sub CxbbGrid_BeforeMoveColumn(ByVal Col As Long, Position As Long) '网格列发生移动时自动交换网格索引信息
Call FnBln_RefreshArray(Col, Position, GridStr(), GridInf())
End Sub
Private Sub GsToolbar_ButtonClick(ByVal Button As MSComctlLib.Button) '网格格式调整(Fixed)
Select Case Button.Key
Case "bcgs" '保存表格格式
Call Bcwggs(CxbbGrid, GridCode, GridStr())
Case "hfmrgs" '恢复默认格式
Call Hfmrgs(CxbbGrid, GridCode, GridStr())
Case "szxsxm" '设置显示项目
Call Szxsxm(CxbbGrid, GridCode)
Case "txfx" '图形分析报表
If CxbbGrid.Rows = CxbbGrid.FixedRows Then
Exit Sub
End If
XT_TxfxFrm.HelpContextID = 150400502
Call Txfxbb(CxbbGrid, "QC_ProGraphZst")
End Select
End Sub
Private Sub SzToolbar_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key
Case "ymsz" '页面设置
Dyymctbl.Show 1
Case "yl" '预 览
Call bbyl(True)
Case "dy" '打 印
Call bbyl(False)
Case "cx" '查 询
FrmProGraph_ZstQuery.Show 1
Case "bz" '帮 助
Call F1bz
Case "fh" '退 出
Unload Me
End Select
End Sub
Private Sub Timer1_Timer() '在窗体激活后调入查询程序
Timer1.Enabled = False
Xt_Wait.Show
Xt_Wait.Refresh
'加快显示速度
CxbbGrid.Redraw = False
'生成查询结果
Call Sub_Query
CxbbGrid.Redraw = True
Xt_Wait.Hide
End Sub
Public Sub Sub_Query() '生成查询结果(Define)
Dim Sqlstr, strSQL, strSQL1, strSQL2 As String
Dim rec As ADODB.Recordset
Dim rectemp1 As ADODB.Recordset
Dim rectemp2 As ADODB.Recordset
Dim ii As Integer
Dim i As Integer
Dim TiaoJian As String
With FrmProGraph_ZstQuery
If Trim(.LrText(0).Text & "") = "" Then
Lab_TitleMess(0).Caption = "物料大类编码:"
Lab_TitleMess(1).Caption = "物料大类名称:"
strwlbh = Trim(.LrText(5).Tag & "")
strName = Trim(.LrText(5).Text & "")
Else
Lab_TitleMess(0).Caption = "物料编码:"
Lab_TitleMess(1).Caption = "物料名称:"
strwlbh = Trim(.LrText(0).Text & "")
strName = Trim(.LrText(1).Text & "")
End If
label1(0).Caption = strwlbh
label1(1).Caption = strName
Daystart = Format(Trim(.LrText(2).Text), "yyyy-mm-dd")
Dayend = Format(Trim(.LrText(3).Text), "yyyy-mm-dd")
intcycle = Val(.LrText(4).Text)
strcycle = Trim(.Combo1.Text)
Label3.Caption = Format(Daystart, "yyyy-mm-dd") & "~" & Format(Dayend, "yyyy-mm-dd")
Label5.Caption = strcycle
Label7.Caption = intcycle
'查询连接串
If Trim(.LrText(0).Text & "") = "" Then
TiaoJian = " where msnumber = '" & strwlbh & "' "
Else
TiaoJian = " where mnumber = '" & strwlbh & "' "
End If
Sqlstr = "SELECT checksortcode FROM Qc_ProductMaterial " & TiaoJian
Set rec = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
If rec.RecordCount < 1 Then
If Trim(.LrText(0).Text & "") = "" Then
Tsxx = "请先设置该物料大类中物料的检验类别!"
Else
Tsxx = "请先设置该物料的检验类别!"
End If
Call Xtxxts(Tsxx, 0, 3)
Exit Sub
End If
End With
If Trim(FrmProGraph_ZstQuery.LrText(0).Text & "") = "" Then
TiaoJian = " where msnumber = '" & strwlbh & "' and Checker<>'' "
Else
TiaoJian = " where mnumber = '" & strwlbh & "' and Checker<>'' "
End If
Sqlstr = "SELECT gradecode,gradename FROM QC_grade where checksortcode ='" & Trim(rec.Fields("checksortcode") & "") & "' order by gradecode"
If rec.State Then rec.Close
Set rec = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
If rec.RecordCount < 1 Then
Tsxx = "请先设置该物料的质量等级!"
Call Xtxxts(Tsxx, 0, 3)
Exit Sub
End If
gradecount = rec.RecordCount
ReDim gradecode(gradecount) As String
ReDim gradename(gradecount) As String
ReDim result(gradecount, intcycle) As Single
For i = 0 To rec.RecordCount - 1
gradecode(i) = rec.Fields("gradecode")
gradename(i) = rec.Fields("gradename")
rec.MoveNext
Next i
ReDim resultY(intcycle) As Single
ReDim resultH(intcycle) As Single
ReDim Cycle(intcycle) As String
CxbbGrid.Rows = 1
'提取标题
If Format(Daystart, "yyyy-mm") <> Format(Dayend, "yyyy-mm") Then
reptitle = Format(Daystart, "yyyy-mm") + "-" + Format(Dayend, "yyyy-mm")
Else
reptitle = Format(Daystart, "yyyy-mm")
End If
reptitle = reptitle + Space(2) + label1(1).Caption
'查询连接串
'查询数据分布
Dim intd() As Date
ReDim intd(intcycle + 1) As Date
intd(0) = Daystart
For i = 1 To intcycle
If strcycle = "周" Then
intd(i) = DateAdd("ww", i, intd(0))
Else
intd(i) = DateAdd("m", i, intd(0))
End If
'总重
strSQL = "SELECT SUM(Quantity) AS eprweight FROM (SELECT a.*, b.MSNumber AS msnumber FROM Qc_ProductCheckMain a LEFT OUTER JOIN " & _
"Qc_ProductMaterial b ON a.MNumber = b.MNumber) c " & TiaoJian & " and PurReciptDate>='" & intd(i - 1) & "' and PurReciptDate<'" & intd(i) & "' "
Set rectemp1 = Cw_DataEnvi.DataConnect.Execute(strSQL)
rectemp1.MoveFirst
If IsNull(rectemp1.Fields(0)) Then
sind1 = 0
Else
sind1 = rectemp1.Fields(0)
End If
'********************************************************************************
For ii = 0 To gradecount - 2
If ii < gradecount - 2 Then
strSQL1 = "SELECT sum(Quantity) as eprweight1 FROM (SELECT a.*, b.MSNumber AS msnumber FROM Qc_ProductCheckMain a LEFT OUTER JOIN " & _
"Qc_ProductMaterial b ON a.MNumber = b.MNumber) c " & TiaoJian & " and gradecode='" & gradecode(ii) & "' and PurReciptDate>='" & intd(i - 1) & "' and PurReciptDate<'" & intd(i) & "' "
Else
strSQL1 = "SELECT sum(Quantity) as eprweight1 FROM (SELECT a.*, b.MSNumber AS msnumber FROM Qc_ProductCheckMain a LEFT OUTER JOIN " & _
"Qc_ProductMaterial b ON a.MNumber = b.MNumber) c " & TiaoJian & " and gradecode<>'" & gradecode(ii + 1) & "' and PurReciptDate>='" & intd(i - 1) & "' and PurReciptDate<'" & intd(i) & "' "
End If
Set rectemp1 = Cw_DataEnvi.DataConnect.Execute(strSQL1)
If IsNull(rectemp1.Fields(0)) Then
sind2 = 0
Else
sind2 = rectemp1.Fields(0)
End If
If sind1 = 0 Then
result(ii, i - 1) = 0
Else
result(ii, i - 1) = sind2 / sind1
End If
If ii <> 0 And ii <> gradecount - 2 Then
result(ii, i - 1) = result(ii, i - 1) + result(ii - 1, i - 1)
End If
Next ii
'*********************************************
'分段数据
Cycle(i - 1) = Format(Str(intd(i - 1)), "yyyy-mm-dd")
Next i
CxbbGrid.FixedRows = 1
CxbbGrid.Clear , flexClearData
CxbbGrid.Rows = intcycle + CxbbGrid.FixedRows
Jsqte = CxbbGrid.FixedRows
Call Jltcwg
For i = Jsqte To CxbbGrid.Rows - 1
CxbbGrid.RowHeight(Jsqte) = Sjhgd
Next i
End Sub
Private Sub Jltcwg() '记录内容填充网格
'填充表头
With CxbbGrid
.Cols = gradecount
.TextMatrix(0, 0) = "生产日期"
For Jsqte = 1 To .Cols - 1
.TextMatrix(0, Jsqte) = Trim(gradename(Jsqte - 1) & "") & "%"
.FixedAlignment(Jsqte) = 4
.ColFormat(Jsqte) = "#,##0." + String(Xtslxsws, "0")
.ColAlignment(Jsqte) = 6
.ColWidth(Jsqte) = 2000
Next Jsqte
End With
'填充时间数据
For i = 0 To intcycle - 1
CxbbGrid.TextMatrix(i + 1, 0) = Cycle(i)
Next
'填充品率数据
For ii = 0 To gradecount - 2
For i = 0 To intcycle - 1
CxbbGrid.TextMatrix(i + 1, ii + 1) = result(ii, i) * 100
Next i
Next ii
End Sub
Private Sub bbyl(bbylte As Boolean) '报表打印预览
Dim Bbzbt$, Bbxbt() As String, bbxbtzzxs() As Integer, Bbxbtgs As Integer
Dim Bbbwh() As String, Bbbwhzzxs() As Integer, Bbbwhgs As Integer
Bbxbtgs = 3 '报 表 小 标 题 行 数
Bbbwhgs = 0 '报 表 表 尾 行 数
ReDim Bbxbt(1 To Bbxbtgs)
ReDim bbxbtzzxs(1 To Bbxbtgs)
If Bbbwhgs <> 0 Then
ReDim Bbbwh(1 To Bbbwhgs)
ReDim Bbbwhzzxs(1 To Bbbwhgs)
End If
Bbzbt = "成品等级走势图"
Bbxbt(2) = Space(4) + Fun_FormatOutPut(Trim(Lab_TitleMess(0).Caption & "") + Trim(label1(0).Caption & ""), 20) + Fun_FormatOutPut(Trim(Lab_TitleMess(1).Caption & "") + Trim(label1(1).Caption & ""), 30)
Bbxbt(2) = Bbxbt(2) + Fun_FormatOutPut("生产日期: " + Trim(Label3.Caption & ""), 20)
bbxbtzzxs(1) = 0 '报表行组织形式(0-居左 1-居中 2-居右)
Call Scyxsjb(CxbbGrid) '生成报表数据
Call Scdybb(Dyymctbl, Bbzbt, Bbxbt(), bbxbtzzxs(), Bbxbtgs, Bbbwh(), Bbbwhzzxs(), Bbbwhgs, bbylte)
If Not bbylte Then
Unload DY_Tybbyldy
End If
End Sub
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?