前言
在学习学生信息系统中的
查询成绩和学籍信息窗体
的时候,我们已经接触过这一控件。而到机房的时候,这一控件的应用更加广泛,为了更好的学习,我们需要对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控件的学习和总结,我发现了自己学习过程中的很多问题,也更加认识到总结的重要性。同时,我们应该寻求更简单的方法实现功能,提高能力!