⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmbilllist.vb

📁 visual Basic 数据库开发实例导航
💻 VB
📖 第 1 页 / 共 3 页
字号:
            Dim dataRows() As DataRow = _
            dvMasterList.Table.Select("父项编号 = '" + sParentIndex + "'")
            '循环添加TreeNode
            Dim iCode As Integer = CInt(sCode) + 1
            For Each dr As DataRow In dataRows
                '获得节点所需数据
                tmpNode = New TreeNode
                tmpNode.Text = dr("物料名称")
                tmpNode.Tag = New TreeNodeData(SetText(dr("物料编号")), _
                SetText(dr("父项编号")), SetText(dr("物料名称")), _
                SetText(dr("需要数量")), _
               iCode, SetText(dr("领料车间")), SetText(dr("领料库房")), _
                SetText(dr("损耗率")), SetText(dr("审核日期")))
                Id = dr("物料编号")
                nodes.Add(tmpNode)
                '递归调用
                InitTree(nodes(nodes.Count - 1).Nodes, Id, _
                iCode.ToString)
            Next
        Catch ex As Exception
            MessageBox.Show("初始化TreeView失败")
        End Try
    End Sub

    Private Sub btnOpen_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnOpen.Click
        Dim dlgSelect As frmSelect = New frmSelect
        dlgSelect.ShowDialog()
        Clear()
        '获取当前行的数据
        Dim sResult() As String = dlgSelect.GetInfo().Trim.Split("|")
        txbId.Text = sResult(0)
        txbName.Text = sResult(1)
        Dim tData As TreeNodeData = trvList.SelectedNode.Tag
        Me.txbPID.Text = tData.Id
        Me.txbCode.Text = (CInt(tData.Code) + 1).ToString()
        SetTextBoxState(False)
    End Sub
    Function SetText(ByVal obj As Object) As String
        If obj Is Nothing Then
            Return ""
        Else
            Return obj.ToString()
        End If
    End Function

    Private Sub trvList_AfterSelect(ByVal sender As Object, _
    ByVal e As TreeViewEventArgs) Handles trvList.AfterSelect
        SetTextBoxState(True)
        '获取当前节点的数据
        Dim treeNodeData As TreeNodeData = _
        CType(trvList.SelectedNode.Tag, TreeNodeData)
        '根据当前节点数据设置各个TextBox
        txbName.Text = treeNodeData.Name
        txbId.Text = treeNodeData.Id
        txbPID.Text = treeNodeData.PId
        txbCount.Text = treeNodeData.Count
        txbCode.Text = treeNodeData.Code
        txbRate.Text = treeNodeData.Rate
        txbWorkShop.Text = treeNodeData.WorkShop
        txbDepot.Text = treeNodeData.Depot
        txbCheckDate.Text = treeNodeData.CheckDate
        '根据当前节点获取其子节点的数据
        Dim bHasChild As Boolean = True
        Me.GroupBox2.Text = treeNodeData.Name.Trim
        Me.GroupBox2.Text += "   下属物料清单"
        Dim db As DataBase = New DataBase
        Dim strSQL As String
        strSQL = "select a.物料编号,物料名称,计量单位,"
        strSQL += "规格型号,计划类别,品牌,颜色,"
        strSQL += "进货提前期,a.低层码,生产车间,父项编号,"
        strSQL += "需要数量,领料车间,损耗率 from 物料清单 as a ,"
        strSQL += "物料主文件 as b where a.物料编号 = b.物料编号"
        strSQL += " and a.父项编号= '" + treeNodeData.Id + "'"
        dvDetailList = db.RunSelectSQL(strSQL)
        If dvDetailList.Count = 0 Then
            strSQL = "select a.物料编号,物料名称,计量单位,"
            strSQL += "规格型号,计划类别,品牌,颜色,"
            strSQL += "进货提前期,a.低层码,生产车间,父项编号,"
            strSQL += "需要数量,领料车间,损耗率 from 物料清单 as a ,"
            strSQL += "物料主文件 as b where a.物料编号 = "
            strSQL += "b.物料编号 and a.物料编号= '" + treeNodeData.Id + "'"
            dvDetailList = db.RunSelectSQL(strSQL)
            GroupBox2.Text = treeNodeData.Name.Trim + "   无下属零件"
        End If
        db.Dispose()
        '设置dgdDetail的样式和数据源
        Dim ts As New DataGridTableStyle
        Dim aColumnTextColumn As DataGridTextBoxColumn
        Dim numCols As Integer = dvDetailList.Table.Columns.Count
        Dim i As Integer
        For i = 0 To numCols - 1
            aColumnTextColumn = New DataGridTextBoxColumn
            aColumnTextColumn.MappingName = _
            dvDetailList.Table.Columns(i).ColumnName
            aColumnTextColumn.HeaderText = _
            dvDetailList.Table.Columns(i).ColumnName
            aColumnTextColumn.NullText = ""
            aColumnTextColumn.Width = 60
            ts.GridColumnStyles.Add(aColumnTextColumn)
        Next
        ts.AlternatingBackColor = Color.LightGray
        ts.AllowSorting = False
        ts.MappingName = dvDetailList.Table.TableName
        dgdDetail.TableStyles.Clear()
        dgdDetail.TableStyles.Add(ts)
        dvDetailList.AllowNew = False
        dvDetailList.AllowDelete = False
        dvDetailList.AllowEdit = False
        dgdDetail.DataSource = dvDetailList
    End Sub

    Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, _
    ByVal e As ToolBarButtonClickEventArgs) _
    Handles ToolBar1.ButtonClick
        Select Case e.Button.Text
            Case "增子项"
                bAdd = True
                bLevel = False
                Clear()
                SetToolBarState(False)
                Me.btnOpen.Enabled = True
            Case "增同级项"
                bAdd = True
                bLevel = True
                Clear()
                SetToolBarState(False)
                Me.btnOpen.Enabled = True
            Case "修改"
                bAdd = False
                SetTextBoxState(False)
                SetToolBarState(False)
                MessageBox. _
                Show("物料编号,物料名称等请在物料主文件中修改!", _
                "生成管理系统")
            Case "删除"
                DeleteData()
            Case "保存"
                If bAdd = False Then
                    SaveForUpdate()
                Else
                    SaveForAdd()
                End If
            Case "取消"
                SetToolBarState(True)
            Case "退出"
                Me.Close()
        End Select
    End Sub
    Private Sub Clear()
        Me.txbCheckDate.Text = ""
        Me.txbCode.Text = ""
        Me.txbCount.Text = ""
        Me.txbDepot.Text = ""
        Me.txbId.Text = ""
        Me.txbName.Text = ""
        Me.txbPID.Text = ""
        Me.txbRate.Text = ""
    End Sub
    Private Sub SetTextBoxState(ByVal bState As Boolean)
        txbCount.ReadOnly = bState
        txbDepot.ReadOnly = bState
        txbRate.ReadOnly = bState
        txbCheckDate.ReadOnly = bState
        txbWorkShop.ReadOnly = bState
    End Sub
    Private Sub SetToolBarState(ByVal bState As Boolean)
        ToolBar1.Buttons("0").Enabled = bState
        ToolBar1.Buttons("1").Enabled = bState
        ToolBar1.Buttons("2").Enabled = bState
        ToolBar1.Buttons("3").Enabled = bState
        ToolBar1.Buttons("4").Enabled = Not bState
        ToolBar1.Buttons("5").Enabled = Not bState
    End Sub
    Private Sub DeleteData()
        If trvList.SelectedNode Is Nothing = False Then
            '不能删除具有子节点的节点
            If trvList.SelectedNode.Nodes.Count <> 0 Then
                MessageBox.Show("请先删除该项的全部子项", "生成管理系统")
            Else
                Dim dlgResult As DialogResult = _
                MessageBox.Show("你确认删除此数据?", "删除")
                If dlgResult = DialogResult.OK Then
                    '生成SQL语句更新数据
                    Dim db As DataBase = New DataBase
                    Dim strSQL As String
                    strSQL = "delete from 物料清单 "
                    strSQL += " where 物料编号='" + txbId.Text.Trim + "'"
                    db.RunDelOrInsSQL(strSQL)
                    db.Dispose()
                    trvList.SelectedNode.Remove()
                End If
            End If
        End If
    End Sub
    Private Sub SaveForAdd()
        Dim sPID As String
        '获得单击的节点的数据
        If trvList.SelectedNode Is Nothing = False Then
            Dim tData As TreeNodeData = _
        CType(trvList.SelectedNode.Tag, TreeNodeData)
            If bLevel = False Then
                '如果是添加子项
                sPID = tData.Id.Trim
            Else
                '如果是添加同级项
                sPID = tData.PId.Trim
            End If
            Try
                '生成SQL语句插入新的数据
                Dim db As DataBase = New DataBase
                Dim strSQL As String
                strSQL = "insert into 物料清单(父项编号,物料编号,需要数量,"
                strSQL += "领料车间,领料库房,损耗率,"
                strSQL += "审核日期,低层码) values ('"
                strSQL += sPID + "','" + txbId.Text.Trim + "','"
                strSQL += txbCount.Text.Trim + "','"
                strSQL += txbWorkShop.Text.Trim + "','"
                strSQL += txbDepot.Text.Trim + "','"
                strSQL += txbRate.Text.Trim + "','"
                strSQL += txbCheckDate.Text.Trim + "','"
                strSQL += txbCode.Text.Trim + "')"
                Me.TextBox10.Text = strSQL
                db.RunDelOrInsSQL(strSQL)
                db.Dispose()
                Dim tmpNode As TreeNode = New TreeNode(txbName.Text.Trim)
                tmpNode.Tag = New TreeNodeData(txbId.Text.Trim, sPID, _
                txbName.Text.Trim, txbCount.Text.Trim, _
                 txbCode.Text.Trim, _
                txbWorkShop.Text.Trim, txbDepot.Text.Trim, _
                txbRate.Text.Trim, txbCheckDate.Text.Trim)
                If bLevel = False Then
                    '如果是添加子项
                    trvList.SelectedNode.Nodes.Add(tmpNode)
                Else
                    '如果是添加同级项
                    trvList.SelectedNode.Parent.Nodes.Add(tmpNode)
                End If
            Catch ex As Exception
                MessageBox.Show("数据格式出错!", "生成管理系统")
            End Try
            '重新设置节点的数据
            tData.Count = Me.txbCount.Text.Trim
            tData.Depot = Me.txbDepot.Text.Trim
            tData.WorkShop = Me.txbWorkShop.Text.Trim
            tData.CheckDate = Me.txbCheckDate.Text.Trim
            tData.Rate = Me.txbRate.Text.Trim
        End If
    End Sub
    Private Sub SaveForUpdate()
        '更新数据表
        '获得单击的节点的数据
        If trvList.SelectedNode Is Nothing = False Then
            Dim tData As TreeNodeData = _
        CType(trvList.SelectedNode.Tag, TreeNodeData)
            Try
                '生成SQL语句更新数据
                Dim db As DataBase = New DataBase
                Dim strSQL As String
                strSQL = "update 物料清单 set 需要数量='"
                strSQL += txbCount.Text.Trim + "',"
                strSQL += "领料车间='" + txbWorkShop.Text.Trim + "',"
                strSQL += "领料库房='" + Me.txbDepot.Text.Trim + "',"
                strSQL += "损耗率='" + Me.txbRate.Text.Trim + "',"
                strSQL += "审核日期='" + Me.txbCheckDate.Text.Trim + "'"
                strSQL += " where 物料编号='" + tData.Id.Trim + "'"
                db.RunDelOrInsSQL(strSQL)
                db.Dispose()
            Catch ex As Exception
                MessageBox.Show("数据格式出错!", "生成管理系统")
            End Try
            '重新设置节点的数据
            tData.Count = Me.txbCount.Text.Trim
            tData.Depot = Me.txbDepot.Text.Trim
            tData.WorkShop = Me.txbWorkShop.Text.Trim
            tData.CheckDate = Me.txbCheckDate.Text.Trim
            tData.Rate = Me.txbRate.Text.Trim
        End If
    End Sub

End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -