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

📄 frmroomstate.vb

📁 用.net写的,不知道怎么样,各位看看再说吧.
💻 VB
📖 第 1 页 / 共 2 页
字号:
        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 + -