机房收费(二)之MSFlexGrid控件

前言

       在学习学生信息系统中的 查询成绩和学籍信息窗体 的时候,我们已经接触过这一控件。而到机房的时候,这一控件的应用更加广泛,为了更好的学习,我们需要对MSFlexGrid控件有个大致的了解。

基本介绍

作用:显示和操作表格数据
属性: row (指表格的行)           rows(表格的总行数)
           col  (指表格的列)           cols (表格的总列数)
           CellAlignment (单元内容对齐方式)
           ColAlignment  (列内容对齐方式)
           TextMatrix(x,y)(某一单元格的坐标,x代表行,y代表列)
           ScrollBars(滚动条属性)
其他常用属性:
        右击MSFlexGrid控件——属性——通用等

基本应用

1.MSFlexGrid控件的加载,显示记录

Private Sub cmdUpdate_Click()
    Dim mrc As ADODB.Recordset   '保存执行查询后获得的记录集
    Dim Msgtext As String        '用来存放返回信息
    Dim txtSQL As String         '用来存放SQL语句
    
                                 '连接数据库的语句,错误91可能出现的位置
    txtSQL = "select * from User_Info where Level='" & comboLevel & "'"
    '在表User_Info中查找列Level中与VB该窗体comboLevel相对应的某整列数据
    Set mrc = ExecuteSQL(txtSQL, Msgtext)
    '执行SQL语句
    
    With myflexgrid       '填写表头
        .Rows = 1
        .CellAlignment = 4
        .TextMatrix(0, 0) = "用户名"
        .TextMatrix(0, 1) = "姓名"
        .TextMatrix(0, 2) = "开户人"
       
        Do While Not mrc.EOF       '遍历所有记录,填入控件
            .Rows = .Rows + 1      '循环添加记录
            .CellAlignment = 4
            .TextMatrix(.Rows - 1, 0) = Trim(mrc.Fields(0))
            ' .Rows - 1是横坐标,与上面.Rows = 1代表的有所不同
            ' .Rows = 1是指控件加载时总行数为1行(控件行数最小为1)
            ' 表示坐标时,我们都知道是从(0,0)开始,因此.Rows - 1只是代表坐标从头开始,与控件加载时设定的行数无关
            .TextMatrix(.Rows - 1, 1) = Trim(mrc.Fields(3))
            .TextMatrix(.Rows - 1, 2) = Trim(mrc.Fields(4))
            mrc.MoveNext
        Loop
    End With
    
    mrc.Close

End Sub

2.选中记录突出显示

   这个问题可以通过两种方法解决
(1)添加代码
    myflexgrid.SelectionMode = flexSelectionByRow   '选中某整行
    myflexgrid.FocusRect = flexFocusNone            '选中行显示焦点框
    myflexgrid.HighLight = flexHighlightWithFocus   '选中行突出显示
(2)设置属性
   右击MSFlexGrid控件——属性——通用——
   选定模式——1-By Row
   焦点区——0-None
   突出显示——2-With Focus

3.删除选中的记录

   要点:判断数据库中有无该记录——判断该用户是否正在登录——删除
   注意:如果表头设置为固定行,则不需考虑是否可以删除表头
              如果不是,则需在选中表头或者执行删除表头命令是给出提示
Private Sub cmdDele_Click()
    Dim txtSQL As String
    Dim Msgtext As String
    Dim mrc As ADODB.Recordset
                                             '找到选中的行在数据库中的记录
    txtSQL = "select * from User_Info where userID='" & Trim(myflexgrid.TextMatrix(myflexgrid.Row, 0)) & "'"
    Set mrc = ExecuteSQL(txtSQL, Msgtext)
    
    If mrc.EOF Then                          '判断是否有记录
       MsgBox "无记录", vbInformation, "温馨提示"
       Exit Sub
    Else
       If mrc.Fields(0) = Username Then      '判断该用户是否正在登录
          MsgBox "该用户正在登录,不能删除", vbOKOnly + vbExclamation, "警告"
       Else
          mrc.Delete
          myflexgrid.RemoveItem myflexgrid.Row   '删除表中选中的记录
          MsgBox "删除成功", vbInformation, "温馨提示"
          mrc.Close
        End If
    End If
End Sub

4.将MSFlexGrid控件内容导出到Excel表格中

  要点:确保安装excel——引用excel——添加代码
(1)引用excel
  工程——引用——浏览——找到office的安装位置——将文件类型修改为所有文件——选中“EXCEL.EXE”
(2)添加代码
Private Sub Cmdexport_Click()
    Dim xlApp As Excel.Application   
    Dim xlBook As Excel.Workbook      
    Dim xlSheet As Excel.Worksheet    
    Dim xlRange As Excel.Range       
      
    Dim i As Integer      
    Dim j As Integer       
      
    Set xlApp = CreateObject("Excel.application")    
    Set xlBook = xlApp.Workbooks.Add                
    Set xlSheet = xlBook.Worksheets(1)               
      
    DoEvents      '转让控制权,以便让操作系统处理其它的事件       
      
    With myflexgrid     
        For i = 0 To .Rows - 1         
            For j = 0 To .Cols - 1            
                DoEvents               
                xlApp.ActiveSheet.Cells(i + 1, j + 1) = .TextMatrix(i, j)           
            Next j
        Next i     
    End With
      
    xlApp.ActiveWorkbook.SaveAs App.Path & "\学生充值记录.xls"        
    xlApp.ActiveWorkbook.Saved = True                                                     
    MsgBox "导出成功!", vbOKOnly , "温馨提示"                       
End Sub

小结

      总结可以帮助我们发现更多的问题,帮助我们更快的成长。通过对MSFlexGrid控件的学习和总结,我发现了自己学习过程中的很多问题,也更加认识到总结的重要性。同时,我们应该寻求更简单的方法实现功能,提高能力!
    




评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值