您的位置:首页 > 其它

机房收费(二)之MSFlexGrid控件

2016-06-26 19:53 169 查看

前言

       在学习学生信息系统中的查询成绩和学籍信息窗体的时候,我们已经接触过这一控件。而到机房的时候,这一控件的应用更加广泛,为了更好的学习,我们需要对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控件的学习和总结,我发现了自己学习过程中的很多问题,也更加认识到总结的重要性。同时,我们应该寻求更简单的方法实现功能,提高能力!
    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: