机房收费系统(四)——MSFlexGrid用法总结
来源:互联网 发布:淘宝上宠物狗300能买吗 编辑:程序博客网 时间:2024/05/06 23:31
机房收费系统中我们经常会遇到有关MSFlexGrid的一些用法上的操作,下面就对他做一下总结。
属性
Row:当前表格所在行
Col:当前表格所在列
Rows:表格总行数
Cols:表格总列数
RowSel:为一定范围的单元格返回或设置起止行,终止行
ColSel:为一定范围的单元格返回或设置起止列,终止列
TextMatrix:设置单元格文本内容
CellAlignment:设置单元格格式属性
方法
removeitem:删除选中项
additem:添加信息
应用
一:显示信息
我们以金额返还信息窗体为例,查询两个日期之间的记录,显示在MSFlexGrid控件中。
比较两个日期得大小,用到了datediff函数。
<strong><span style="font-size:18px;">date1 = DTPicker1.Value date2 = DTPicker2.Value '比较两个日期得大小 If DateDiff("d", CDate(date1), CDate(date2)) < 0 Then MsgBox "起始日期大于终止日期", vbOKOnly + vbExclamation, "警告" Exit Sub End If</span></strong>
查询两个日期之间的记录
<strong><span style="font-size:18px;">'查找符合条件的信息,位于两个日期之间的信息 txtsql = "select * from cancelcard_info where date between '" & date1 & "'" & " and '" & date2 & "'" Set mrc = executesql(txtsql, msgtext) If mrc.EOF Then MsgBox "没有记录", vbOKOnly, "提示" Exit Sub End If</span></strong>
将记录显示在MSFlexGrid控件中
<strong><span style="font-size:18px;">With myflexgrid .Rows = 1 '设置总行数为1,用于添加标题,此时row=0 .CellAlignment = 4 .TextMatrix(0, 0) = "卡号" '往指定的表格中加载文本内容 .TextMatrix(0, 1) = "退还日期" .TextMatrix(0, 2) = "退还时间" .TextMatrix(0, 3) = "退还金额" .TextMatrix(0, 4) = "结账教师" .TextMatrix(0, 5) = "结账状态" Do While Not mrc.EOF .Rows = .Rows + 1 '一行一行地添加信息,首先添加一行,用于加载列信息,从第1列到第6列 .CellAlignment = 4 .TextMatrix(.Rows - 1, 0) = Trim(mrc.Fields(1)) .TextMatrix(.Rows - 1, 1) = Trim(mrc.Fields(3)) .TextMatrix(.Rows - 1, 2) = Trim(mrc.Fields(4)) .TextMatrix(.Rows - 1, 3) = Trim(mrc.Fields(2)) .TextMatrix(.Rows - 1, 4) = Trim(mrc.Fields(5)) .TextMatrix(.Rows - 1, 5) = Trim(mrc.Fields(6)) mrc.MoveNext Loop End With</span></strong>
二: 删除MSFlexGrid中信息
在机房收费系统中删除用户的时候,我们会删除msflexgrid中显示的信息,如何选中某条信息是关键,我们用到了控件的MouseDown事件,mouserow属性传给row,表示指定选中的行
<strong><span style="font-size:18px;">'用于选中整行Private Sub myflexgrid_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) With myflexgrid .Row = .MouseRow '把选中行的值给.row .Col = 0 '起始列值为0 .ColSel = .Cols - 1 '列的范围为全部列 End WithEnd Sub</span></strong>
在删除用户时,需要注意的是我们不能删除正在登陆的用户,否则都被删除之后,将无法登陆。
<strong><span style="font-size:18px;">'不能选择表头 If Not IsNumeric(Trim(myflexgrid.TextMatrix(myflexgrid.Row, 0))) Then MsgBox "该行为表头,请重新进行选择", vbOKOnly + vbExclamation, "警告" Exit Sub End If '不能删除正在使用登录的用户 If Trim(myflexgrid.TextMatrix(myflexgrid.Row, 0)) = Trim(username) Then MsgBox "不能删除正在使用的用户", vbOKOnly, "提示" Exit Sub End If '在数据库中删除选中的行 txtsql = "delete from user_info where userid= '" & Trim(myflexgrid.TextMatrix(myflexgrid.Row, 0)) & "'" Set mrc = executesql(txtsql, msgtext) myflexgrid.RemoveItem myflexgrid.Row '在表格控件中删除这一行</span></strong>
三:修改msflexgrid中信息
我们以维护学生基本信息窗体中修改学生信息为例,点击修改按钮会弹出修改学生信息窗体,这里的关键是怎么让修改学生信息窗体自动显示myflexgrid表中选中的学生的信息,在这里我们需要从student表中查询信息,通过学号注册日期,时间来判断选择的是哪一条记录,因为一个学号注册的日期,时间只有一个,用这两个属性可以确定唯一的一条记录。
保存学号对应的日期,时间,一个学号注册时日期时间都是只有一个
<strong><span style="font-size:18px;">Private Sub cmdmodify_Click() '提示不能选中表头 If Not IsNumeric(Trim(myflexgrid.TextMatrix(myflexgrid.Row, 0))) Then MsgBox "该行为表头,请选择数据", vbOKOnly, "提示" Exit Sub End If '保存学号对应的日期,时间(同一个卡注册的时间肯定不会一样) logindate = Trim(myflexgrid.TextMatrix(myflexgrid.Row, 11)) logintime = Trim(myflexgrid.TextMatrix(myflexgrid.Row, 12)) 'SetParent frmmodifysinfo.hWnd, Picture1.hWnd frmmodifysinfo.ShowEnd Sub</span></strong>
<strong><span style="font-size:18px;"> '更新数据库student_info中的数据,把以前的记录删了,添加新的记录 txtsql = "delete from student_info where date='" & logindate & "' And time='" & logintime & "'" Set mrc = executesql(txtsql, msgtext) txtsql = "select * from student_info" Set mrc = executesql(txtsql, msgtext) mrc.AddNew mrc.Fields(1) = Trim(txtsid.Text) mrc.Fields(2) = Trim(txtname.Text) mrc.Fields(3) = Trim(combosex.Text) mrc.Fields(4) = Trim(txtdept.Text) mrc.Fields(5) = Trim(txtgrade.Text) mrc.Fields(6) = Trim(Txtclass.Text) mrc.Fields(0) = Trim(txtcid.Text) mrc.Fields(7) = Trim(txtcash.Text) mrc.Fields(10) = Trim(txtstatus.Text) mrc.Fields(8) = Trim(txtnote.Text) mrc.Fields(14) = Trim(combotype.Text) mrc.Fields(9) = Trim(username) mrc.Fields(11) = "未结账" mrc.Fields(12) = Date mrc.Fields(13) = Time mrc.Update mrc.Close</span></strong>
四:导出成excel表
在机房收费系统中,我们经常遇到把myflexgrid表中的数据导出成excel,所以我们需要定义一个函数,可以用于多次调用。
<strong>Public Function exportflexdatatoexcel(myflexgrid As MSFlexGrid)Dim tempexcel As Excel.Application '声明一个excel应用程序对象Dim tempsheet As Excel.Worksheet '声明一个excel工作簿Dim inti As IntegerDim intj As Integer'先判断myflexgrid表中有没有数据If myflexgrid.Rows > 1 Then '实例化excel应用程序,并使其可见 Set tempexcel = New Excel.Application tempexcel.Application.Visible = True '在excel应用程序中增加一个工作簿 tempexcel.Workbooks.Add (1) '实例化一个表单,并使其成为excel程序中活动工作簿下的活动表单 Set tempsheet = tempexcel.ActiveWorkbook.ActiveSheet '将msflexgrid表格中的数据导入到活动单元表中 For inti = 0 To myflexgrid.Rows - 1 For intj = 0 To myflexgrid.Cols - 1 tempsheet.Cells(inti + 1, intj + 1) = myflexgrid.TextMatrix(inti, intj) Next intj Next intiElse '表中没有数据 MsgBox "没有可导出的数据", vbOKOnly + vbExclamation, "警告" Exit FunctionEnd If</strong>
学习的过程中,我们学到了某一个阶段的时候,应该进行一个系统的总结,当然平时每天的总结也是必不可说的。
- 机房收费系统(四)——MSFlexGrid用法总结
- 机房收费系统 Part Six——MSFlexGrid控件总结
- 机房收费系统(一)——MSFlexGrid控件
- 机房收费系统总结(四)
- 机房收费系统—总结
- 机房收费系统总结四
- vb.net机房收费系统重构——总结(四)软件工程文档3
- 机房收费系统———如何将MSFlexGrid中的数据导入到Excel中
- 机房收费系统-MSFlexGrid控件的使用
- 机房收费系统总结(二) — 总结再分析
- 机房收费系统———总结
- 机房收费系统———总结
- 寒假总结——机房收费系统
- 机房收费系统——总结
- 机房收费系统——技术总结
- 机房收费系统——思想总结
- 机房收费系统——技术总结
- 【机房收费系统】——总结
- 方法的绑定
- Intent实现有返回结果与无返回结果的页面跳转
- 【杭电2007】平方和与立方和
- Java成长之路02
- javax.crypto.BadPaddingException: Given final block not
- 机房收费系统(四)——MSFlexGrid用法总结
- 十分钟搞定pandas
- ubuntu16.04美化
- PAT乙级.1002. 写出这个数 (20)
- 【DRP】EL表达式的应用
- 面试:Java语言的优势:
- 百练4123:马走日
- Android 处理软键盘弹出问题
- NLU自然语言理解