📄 frmbilllist.vb
字号:
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 + -