MES系统详解

MES系统详解

一、数据库语句

这里我们可以根据mes系统的特点,唯一主键functionkey查询对应的权限信息里面包含对应文件名称,首先进入的winform

二、使用步骤

1.权限表查询

select * from tblsysfunction where functionkey = ''

2.新增菜单,需要同时新增菜单表和权限表

​
1.向菜单表插入数据

--insert into TBLSYSMENUITEM(MODULENO,MENUNO,MENUNAME,MENUTYPE,MENUORDER,PARENTMENUNO,ACTIVEMODULE)
values
--('ENT','CUSTOMER DZ','客戶定制資料',0,10,'CUSTOMER CONFIG','WIP')


2.向权限表插入数据

Insert into tblsysfunction(FUNCTIONNO,FUNCTIONNAME,FUNCTIONORDER,MODULENO,EXECUTIONFILE,FUNCTIONKEY)
values('CUSTOMER DZ','客戶定制資料','21101.9','ENT','ET_CustomerDZ.dll','LC')

​

3.功能大全

功能图片保存路径

             **text文本默认显示当前登录用户
 '显示当前登录的用户昵称,gUserNo是框架中封装好的
  当前登录用户的昵称编号,也是登录名
  txtEmployeeNo.Text = gUserNo

4.将原来的只读lable默认显示改为可编辑

12

3

       '2012/03/28, Aaron, 新增自動編碼判斷
        If blnAutoGetSerialNo = True Then
            btnGetBaseLotNo.Enabled = True

        '这里将原来的taxtBaseLotNO.Enableed = False改为了True

            txtBaseLotNo.Enabled = True
        Else
            btnGetBaseLotNo.Enabled = False
            txtBaseLotNo.Enabled = True
        End If

5.提示弹窗,可以中英文切换

iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%LC%]"), MsgBoxStyle.Exclamation, Me.Text)

6.多选框,选择然后打印按钮

添加一个打印按钮

1.第一步
  这段代码的主要功能
是向数据集dsLotState中名为strLotState的DataTable添加一个名为"checkFlag"的列,
该列的数据类型为布尔型,默认值为False,
并且不允许为空,同时允许通过默认视图编辑该表。




Dim colCheckFlag As New DataColumn

  
 colCheckFlag.ColumnName = "checkFlag"
  
 colCheckFlag.DataType = System.Type.GetType("System.Boolean")
 
colCheckFlag.DefaultValue = False

 colCheckFlag.AllowDBNull = False
 
dsLotState.Tables(strLotState).Columns.Add(colCheckFlag)
  
dsLotState.Tables(strLotState).DefaultView.AllowEdit = True





中间代码解读
Dim colCheckFlag As New DataColumn
这一行声明了一个新的DataColumn对象,并命名为colCheckFlag。DataColumn是用于表示DataTable中一列的类。
colCheckFlag.ColumnName = "checkFlag"
这一行设置了DataColumn对象的ColumnName属性,即列的名称为"checkFlag"。
colCheckFlag.DataType = System.Type.GetType("System.Boolean")
这里设置了DataColumn的数据类型。通过System.Type.GetType方法获取了一个代表布尔型(Boolean)的Type对象,并将其赋值给colCheckFlag的DataType属性。
colCheckFlag.DefaultValue = False
这一行指定了当表中添加新行时,如果未明确设置该列的值,则默认值为False。
colCheckFlag.AllowDBNull = False
设置AllowDBNull属性为False,这意味着这一列不接受空值(DBNull)。
dsLotState.Tables(strLotState).Columns.Add(colCheckFlag)
这一行将新创建的colCheckFlag列添加到名为strLotState的DataTable的列集合中。
dsLotState.Tables(strLotState).DefaultView.AllowEdit = True
最后一行设置了对应DataTable的默认视图(DefaultView)的AllowEdit属性为True,这意味着允许通过这个视图编辑表中的数据。

2.第二步
 .CellActivation = Activation.AllowEdit

3.第三步
 '多选框加上
            iugLotState.iMESUltraGrid.DisplayLayout.Override.AllowUpdate = Infragistics.Win.DefaultableBoolean.True
            iugLotState.iMESUltraGrid.Rows.ExpandAll(True)



AllowUpdate属性确定用户是否可以在UltraGrid中直接编辑单元格。
设置为True后,用户将能够修改网格中的数据。

4.找到系统中打印按钮,根据系统中的来进行复刻 在pd107
5.打印按钮实现
   Private Sub btnPrint_Click(sender As Object, e As EventArgs) Handles btnPrint.Click

        Dim dt As DataTable = dsLotState.Tables(strLotState)
        Dim selectDt As DataRow() = dt.Select("checkFlag = True")

        For Each dr As DataRow In selectDt
            PrintByLotNo(dr("LotNo").ToString)
        Next

    End Sub

打印的按钮里面调用的两个方法

方法一

    Private Sub PrintByLotNo(ByVal lotNo As String)

        ' 变量
        Dim txtLabelNo As String = "ceshi"
        Dim txtLabelType As String = "SN"
        Dim txtMaterialNo As String = ""
        Dim txtPrinterName As String = ""
        Dim PrintMode As String = ""
        Dim strFormatFileName As String = "ceshi"
        Dim txtLotNo As String = lotNo
        Dim txtComponentNo As String = ""


        Dim strReturn As String = ""
        Dim dtPrint As New DataTable

        Dim printDoc As New PrintDocument
        txtPrinterName = printDoc.PrinterSettings.PrinterName

        If txtLabelNo = "" Then
            iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("ENXXX", "[%LabelNo%]!"), MsgBoxStyle.Exclamation, Me.Text)
            Exit Sub
        End If

        If txtLabelType = "MATERIAL" Then
            If txtMaterialNo = "" Then
                iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%MaterialNo%]!"), MsgBoxStyle.Exclamation, Me.Text)
                Exit Sub
            End If
        Else
            If txtLotNo = "" Then
                iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%LotNo%]!"), MsgBoxStyle.Exclamation, Me.Text)
                Exit Sub
            End If
        End If

        If txtPrinterName = "" Then
            iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%PrinterName%]"), MsgBoxStyle.Exclamation, Me.Text)
            Exit Sub
        End If

        funGetLabelValue(txtLabelNo.Trim, txtLotNo.Trim, txtComponentNo.Trim)

        If dsLabel.Tables(tblLabel) Is Nothing Then
            iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("ENXXX", "[%LabelValue%]!"), MsgBoxStyle.Exclamation, Me.Text)
            Exit Sub
        End If
        If dsLabel.Tables(tblLabel).DefaultView.Count = 0 Then
            iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("ENXXX", "[%LabelValue%]!"), MsgBoxStyle.Exclamation, Me.Text)
            Exit Sub
        End If
        '[Mantis:73208]2020/06/15,Boyi,Print move to PD_Kit
        'Load PrintMode
        PrintMode = objPDK.LoadPrintMode

        'Print
        If (PrintMode.ToUpper = "Bartender".ToUpper) Then
            'strReturn = objPDK.PrintLabel(PrintMode, strLabelPath, strLabelExe, strLabelPath_x86, strLabelDataPath, strDataFileName, txtPrinterName.Text, strFormatFileName, dsLabel.Tables(tblLabel))
            strReturn = objPDK.LabelPrint_ByNamedItem(dsLabel.Tables(tblLabel), strFormatFileName, txtPrinterName, True,, IIf(txtPrinterName = ChgTranslateName("PREVIEW", gLanguageMode), True, False))

        ElseIf (PrintMode.ToUpper = "Codesoft".ToUpper) Then

            'dtPrint = objPDK.GetCodeSoftItemNameDt(dsLabel.Tables(tblLabel))
            'strReturn = objPDK.PrintLabel(PrintMode, strLabelPath, strLabelExe, strLabelPath_x86, strLabelDataPath, strDataFileName, txtPrinterName.Text, strFormatFileName, dtPrint)
            strReturn = objPDK.LabelPrint_ByNamedItem(dsLabel.Tables(tblLabel), strFormatFileName, txtPrinterName, True,, IIf(txtPrinterName = ChgTranslateName("PREVIEW", gLanguageMode), True, False))

        End If

    End Sub

方法二

 Private Function funGetLabelValue(ByVal LabelNo As String, ByVal LotNo As String, ByVal ComponentNo As String, Optional ByVal InventoryNo As String = defString, Optional ByVal MaterialNo As String = defString, Optional ByVal MaterialLotNo As String = defString) As DataTable

        Cursor.Current = Cursors.WaitCursor

        If Not IsNothing(dsLabel.Tables(tblLabel)) Then
            dsLabel.Tables.Remove(tblLabel)
        End If

        '組InXml的字串
        strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow())
        strParameter = CombineXMLParameter("labelno", "LabelNo", "String", LabelNo, "")
        strParameter += CombineXMLParameter("lotno", "LotNo", "String", LotNo, "")
        strParameter += CombineXMLParameter("componentno", "ComponentNo", "String", CInput(ComponentNo), "")

        If InventoryNo <> defString AndAlso InventoryNo <> "" Then
            strParameter += CombineXMLParameter("inventoryno", "InventoryNo", "String", InventoryNo, "")
        End If
        If MaterialNo <> defString AndAlso MaterialNo <> "" Then
            strParameter += CombineXMLParameter("materialno", "MaterialNo", "String", MaterialNo, "")
        End If
        If MaterialLotNo <> defString Then
            strParameter += CombineXMLParameter("materiallotno", "MaterialLotNo", "String", MaterialLotNo, "")
        End If

        InXml = CombineXMLRequest(strIdentity, strParameter)

        Try
            ' 2016 YF, OutXml = wsPRD.GetLabelValue(InXml)
            OutXml = InvokeSrv("wsPRD.GetLabelValue", InXml)

            Dim XmlDoc As New XmlDocument
            XmlDoc.LoadXml(OutXml)
            If ChkExecutionSuccess(XmlDoc) Then
                tblLabel = XmlDoc.GetElementsByTagName("returnvalue").Item(0).SelectNodes("getlabelvalue").Item(0).SelectNodes("name").Item(0).InnerXml
                '取出Schema,dataset讀取Schema可防止Null Field及DateTime的問題
                XmlSchema = XmlDoc.DocumentElement.GetElementsByTagName("getlabelvalue").Item(0).SelectNodes("schema").Item(0).InnerXml
                If XmlSchema <> "" Then
                    '將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件
                    tmpStringReader = New System.IO.StringReader(XmlSchema)
                    dsLabel.ReadXmlSchema(tmpStringReader)
                    tmpStringReader.Close()
                End If
                '取出Data
                XmlData = XmlDoc.DocumentElement.GetElementsByTagName("getlabelvalue").Item(0).SelectNodes("value").Item(0).InnerXml
                If XmlData <> "" Then
                    tmpStringReader = New System.IO.StringReader(XmlData)
                    dsLabel.ReadXml(tmpStringReader)
                    tmpStringReader.Close()
                End If

                'Sort by Position
                dsLabel.Tables(tblLabel).DefaultView.Sort = "Position"


            Else
                ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc))
                Exit Function
            End If

            XmlDoc = Nothing

        Catch ex As Exception
            'MsgBox("Unexpected Error. Get Label Value failed," & e1.Message, MsgBoxStyle.Exclamation)
            ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace)
            Exit Function
        End Try


        Cursor.Current = Cursors.Default


    End Function

7.双击lot Record文本框,放大输入

    '20241021 add by chendi for 生产注记调整 ↓
    Private Sub txtLotRecord_DoubleClick(sender As Object, e As EventArgs) Handles txtLotRecord.DoubleClick
        Cursor.Current = Cursors.WaitCursor
        Dim txtLotRecordTextDT As DataTable
        txtLotRecordTextDT = New DataTable("txtLotRecordTextDT")

        Dim colCheckFlag As New DataColumn
        colCheckFlag.ColumnName = "txtLotRecordText"
        colCheckFlag.DataType = System.Type.GetType("System.String")
        colCheckFlag.DefaultValue = ""
        txtLotRecordTextDT.Columns.Add(colCheckFlag)

        Dim dr As DataRow = txtLotRecordTextDT.NewRow()
        dr("txtLotRecordText") = txtLotRecord.Text.ToString
        txtLotRecordTextDT.Rows.Add(dr)

        Dim parameters As New Dictionary(Of String, Object)
        parameters.Add("txtLotRecordTextDT", txtLotRecordTextDT)
        Me.ObjectFileHandler.Execute("BR_LotRecordMax", parameters)
        txtLotRecordTextDT = parameters("txtLotRecordTextDT")
        txtLotRecord.Text = txtLotRecordTextDT.Rows(0)("txtLotRecordText")
        txtLotRecord.Select(txtLotRecord.TextLength, 0)
        txtLotRecord.ScrollToCaret()
        Cursor.Current = Cursors.Default
    End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈续缘啊迪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值