机房收费系统(四)——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>


总结:

学习的过程中,我们学到了某一个阶段的时候,应该进行一个系统的总结,当然平时每天的总结也是必不可说的。




0 0
原创粉丝点击