📄 frmroomstate.vb
字号:
InitDataTalbe()
SetDataGrid()
End Sub
Private Sub LoadData()
dtData.Rows.Clear()
Dim db As DataBase = New DataBase
Dim dvFloor As DataView = _
db.RunSelectSQL("select 楼层编号 from 楼层信息")
Dim strSQL As String
For i As Int16 = 0 To dvFloor.Count - 1
strSQL = "select 楼层编号,状态 from 客房信息 "
Dim strTmp As String = ""
If strFilter.Trim <> "" Then
strTmp = " and " + strFilter
End If
strSQL += " where 楼层编号 = "
strSQL += dvFloor(i)(0).ToString.Trim + strTmp
'查询出每个楼层的房间信息
Dim tmpdv As DataView = db.RunSelectSQL(strSQL)
'新建数据行
Dim dr As DataRow = dtData.NewRow()
'将楼层房间信息添加到数据行中
dr(0) = dvFloor(i)(0).ToString.Trim + "/F"
For j As Int16 = 0 To iMaxRoomNumber - 1
'设置房间的状态信息
If j < tmpdv.Count Then
dr(j + 1) = GetStateNumber(tmpdv(j)("状态"))
Else
dr(j + 1) = "6"
End If
Next
dtData.Rows.Add(dr)
Next
End Sub
Private Function GetStateNumber(ByVal state As String) As String
Select Case state.Trim
Case "将到"
Return "0"
Case "将离"
Return "1"
Case "空房"
Return "2"
Case "维修"
Return "3"
Case "住房"
Return "4"
Case "自用"
Return "5"
End Select
End Function
Private Function GetStateText(ByVal state As String) As String
Select Case state.Trim
Case "0"
Return "将到"
Case "1"
Return "将离"
Case "2"
Return "空房"
Case "3"
Return "维修"
Case "4"
Return "住房"
Case "5"
Return "自用"
End Select
End Function
'初始化位图列表
Private Sub InitMaps()
'将bitmaps保存在arraylist中
bitMaps = New ArrayList
'读取位图
Dim strm As System.IO.Stream = [GetType]().Assembly. _
GetManifestResourceStream("酒店管理系统.房态之将到.bmp")
'创建位图对象并将其加入位图列表
bitMaps.Add(New Bitmap(strm))
strm = [GetType]().Assembly. _
GetManifestResourceStream("酒店管理系统.房态之将离.bmp")
bitMaps.Add(New Bitmap(strm))
strm = [GetType]().Assembly. _
GetManifestResourceStream("酒店管理系统.房态之空房.bmp")
bitMaps.Add(New Bitmap(strm))
strm = [GetType]().Assembly. _
GetManifestResourceStream("酒店管理系统.房态之维修房.bmp")
bitMaps.Add(New Bitmap(strm))
strm = [GetType]().Assembly. _
GetManifestResourceStream("酒店管理系统.房态之住房.bmp")
bitMaps.Add(New Bitmap(strm))
strm = [GetType]().Assembly. _
GetManifestResourceStream("酒店管理系统.房态之自用房.bmp")
bitMaps.Add(New Bitmap(strm))
strm = [GetType]().Assembly. _
GetManifestResourceStream("酒店管理系统.房态之空.bmp")
bitMaps.Add(New Bitmap(strm))
End Sub
'初始表数据表的结构
Private Sub InitDataTalbe()
If dtData Is Nothing = False Then
Return
End If
Dim strTmp As String = ""
If strFilter.Trim <> "" Then
strTmp = " where " + strFilter
End If
'查询各楼层的房间数
Dim db As DataBase = New DataBase
Dim strSQL As String = "select count(*) as total from 客房信息 "
strSQL += strTmp + " group by 楼层编号"
Dim dv As DataView = db.RunSelectSQL(strSQL)
If dv.Count <> 0 Then
'获得房间最多的那一层的房间数
For i As Int16 = 0 To dv.Count - 1
If iMaxRoomNumber < CInt(dv(i)(0)) Then
iMaxRoomNumber = CInt(dv(i)(0))
End If
Next
End If
strSQL = "select 客房编号,楼层编号 from 客房信息 " + strTmp
dtRoom = db.RunSelectSQL(strSQL).Table
db.Dispose()
dtData = New DataTable
dtData.Columns.Add("楼层")
For j As Int16 = 1 To iMaxRoomNumber
dtData.Columns.Add(j.ToString)
Next
End Sub
Private Sub SetDataGrid()
LoadData()
'定义一个DataGrid表样式
Dim ts As New DataGridTableStyle
Dim aColumnTextColumn As DataGridTextBoxColumn
Dim numCols As Integer = dtData.Columns.Count
Dim i As Integer
For i = 0 To numCols - 1
If i = 0 Then
aColumnTextColumn = New DataGridTextBoxColumn
aColumnTextColumn.MappingName = _
dtData.Columns(i).ColumnName
aColumnTextColumn.HeaderText = _
dtData.Columns(i).ColumnName
aColumnTextColumn.NullText = ""
aColumnTextColumn.ReadOnly = True
aColumnTextColumn.Width = 32
ts.GridColumnStyles.Add(aColumnTextColumn)
Else
'添加DataGridImageCell列显示位图
Dim tbc As New DataGridImageCell
tbc.MappingName = dtData.Columns(i).ColumnName
tbc.HeaderText = dtData.Columns(i).ColumnName
tbc.theImages = bitMaps
tbc.Width = 32
ts.GridColumnStyles.Add(tbc)
End If
Next
ts.AlternatingBackColor = Color.LightGray
ts.AllowSorting = False
ts.MappingName = dtData.TableName
ts.PreferredRowHeight = 32
dgdList.TableStyles.Clear()
dgdList.TableStyles.Add(ts)
Dim dv As DataView = dtData.DefaultView
dv.AllowNew = False
dv.AllowDelete = False
dv.AllowEdit = False
'设置数据源
dgdList.DataSource = dtData.DefaultView
End Sub
Private Sub dgdList_CurrentCellChanged(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles dgdList.CurrentCellChanged
Dim iRow, iCol As Integer
iRow = dgdList.CurrentCell.RowNumber
iCol = dgdList.CurrentCell.ColumnNumber
If iCol <> 0 Then
Dim dv As DataView = dtRoom.Copy.DefaultView
dv.RowFilter = "楼层编号=" _
+ dgdList.Item(iRow, 0).ToString.Split("/")(0)
Try
strRoomCode = dv(iCol - 1)(0).ToString.Trim
Catch ex As Exception
Me.lblRoom.Text = ""
Exit Sub
End Try
Me.lblRoom.Text = strRoomCode
'根据选择的房间设置RadioButton
Select Case dgdList.Item(iRow, iCol)
Case "0"
Me.rbnArrive.Checked = True
Case "1"
Me.rbnLeave.Checked = True
Case "2"
Me.rbnEmpty.Checked = True
Case "3"
Me.rbnRepair.Checked = True
Case "4"
Me.rbnFull.Checked = True
Case "5"
Me.rbnSelf.Checked = True
Case "6"
Me.lblRoom.Text = ""
End Select
End If
If dgdList.CurrentCell.ColumnNumber = 0 Then
Return
End If
Dim cs As DataGridImageCell = _
CType(Me.dgdList.TableStyles(0).GridColumnStyles _
(dgdList.CurrentCell.ColumnNumber), DataGridImageCell)
'DataGridImageCell的属性
cs.bRect = True
cs.RowNumber = Me.dgdList.CurrentCell.RowNumber
cs.PaintRect()
End Sub
Private Sub btnUpate_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnUpate.Click
LoadData()
Dim dv As DataView = dtData.DefaultView
dv.AllowNew = False
dv.AllowDelete = False
dv.AllowEdit = False
'设置数据源
dgdList.DataSource = dtData.DefaultView
End Sub
Private Sub btnSet_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnSet.Click
Dim iRow, iCol As Integer
iRow = dgdList.CurrentCell.RowNumber
iCol = dgdList.CurrentCell.ColumnNumber
Dim strState As String = dgdList.Item(iRow, iCol)
Dim strTmpState As String
If iCol <> 0 Then
If Me.rbnArrive.Checked = True Then
strTmpState = "0"
ElseIf Me.rbnEmpty.Checked = True Then
strTmpState = "2"
ElseIf Me.rbnFull.Checked = True Then
strTmpState = "4"
ElseIf Me.rbnLeave.Checked = True Then
strTmpState = "1"
ElseIf Me.rbnRepair.Checked = True Then
strTmpState = "3"
ElseIf Me.rbnSelf.Checked = True Then
strTmpState = "5"
End If
Else
Return
End If
'如果状态已经更新
If strTmpState <> strState Then
Dim db As DataBase = New DataBase
Dim dv As DataView = dtRoom.Copy.DefaultView
dv.RowFilter = "楼层编号=" + _
dgdList.Item(iRow, 0).ToString.Split("/")(0)
Dim strSQL As String = "update 客房信息 set 状态='"
strSQL += GetStateText(strTmpState) + "'"
strSQL += " where 客房编号='"
strSQL += dv(iCol - 1)(0).ToString.Trim + "'"
db.RunDelOrInsSQL(strSQL)
db.Dispose()
End If
LoadData()
Dim dvTmp As DataView = dtData.DefaultView
dvTmp.AllowNew = False
dvTmp.AllowDelete = False
dvTmp.AllowEdit = False
'设置数据源
dgdList.DataSource = dtData.DefaultView
End Sub
Private Sub dgdList_MouseDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles dgdList.MouseDown
Dim tm As Date = DateTime.Now
If bClose = False Then
'bClose=False则不处理双击事件
Return
End If
If dgdList.CurrentCell.ColumnNumber = 0 Then
'双击第0列不处理
Return
End If
'判断两次单击时间是否小于双击的时间间隔
If (tm < gridMouseDownTime.AddMilliseconds _
(SystemInformation.DoubleClickTime)) Then
DoReserve()
Me.Close()
End If
gridMouseDownTime = tm
End Sub
Private Sub DoReserve()
Dim iRow, iCol As Integer
iRow = dgdList.CurrentCell.RowNumber
iCol = dgdList.CurrentCell.ColumnNumber
If dgdList.Item(iRow, iCol).ToString = "2" Then
'空房则可以预订
Dim db As DataBase = New DataBase
Dim dv As DataView = dtRoom.Copy.DefaultView
dv.RowFilter = "楼层编号=" + _
dgdList.Item(iRow, 0).ToString.Split("/")(0)
strRoomCode = dv(iCol - 1)(0).ToString.Trim
Else
MessageBox.Show("选择的房间不是空房间!")
End If
End Sub
Private Sub dgdList_DoubleClick(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles dgdList.DoubleClick
If bClose = False Then
'bClose=False则不处理双击事件
Return
End If
If dgdList.CurrentCell.ColumnNumber = 0 Then
'双击第0列不处理
Return
End If
DoReserve()
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -