该类窗体功能:查询一定时间范围内的表信息,并将查询信息导出为Excel表。
步骤:
1,该窗体用到的是DTPicker和MSFlexGrid控件,以及对Excel的调用。
2,难点一:查询条件的填写:
Do While Not (mrs.EOF)
If ((DateDiff("d", mrs.Fields(5), DTPstart.Value)) > 0) Then '若在开始时间之前则不显示
mrs.MoveNext
Exit Do
ElseIf ((DateDiff("d", mrs.Fields(5), DTPend.Value)) < 0) Then '若在结束时间之后也不显示
mrs.MoveNext
Exit Do
End If‘将表中满足日期范围内的表中信息添加到MSFlexGrid中
Loop
当然还有其他的方法来查询范围内的信息:
strSQL="select * from Recharge where Date>='" & Format(DTPstart.Value, "yyyy/mm/dd") & "' and Date <='" & Format(DTPend.Value, "yyyy/mm/dd") & "'"
3,难点二:导出Excel表。
实际上这个只要在网上搜一下就有好多,可是对于本程序来说,很多东西都是多余的,我筛选了一下:
'导出至Excel
Public Sub OutDataToExcel(Flex As MSFlexGrid)
Dim I As Integer, J As Integer '标识行列
Dim k As Integer '标识总函数
Dim ColTitle As Integer '标识列头
On Error GoTo sub_error ’出现错误则跳到错误处理(该错误处理也可以不填写,一般也不会有什么错误)
frmRechargeInfo.MousePointer = 11’设置窗体的鼠标指针为忙碌状态
Dim Excelapp As Excel.Application
Set Excelapp = New Excel.Application ‘实例化一个Excel应用程序
On Error Resume Next
DoEvents ‘查看是否有其他重要的事情要做(转移对CPU的控制权)
Excelapp.SheetsInNewWorkbook = 1 '新建一个工作簿
Excelapp.Workbooks.Add '新建一个工作表
Excelapp.ActiveSheet.Range("A:C").ColumnWidth = 10 '设置列宽(Range可一次设置多列,若只设置一列,也可用Columns属性)
With Flex
k = .Rows
For I = 1 To k
For J = 1 To Flex.Cols
DoEvents
Excelapp.ActiveSheet.Cells(I, J) = .TextMatrix(I - 1, J - 1) ’将MSFlexGrid中的信息导入到Excel表中
Next J
Next I
End With
frmRechargeInfo.MousePointer = 0 ’将鼠标指针设为正常值
Excelapp.WindowState = xlMaximized ‘最大化显示
Excelapp.Caption = "充值记录表" '设置Excel表头
Excelapp.Visible = True
Exit Sub
sub_error:
If Not (Excelapp Is Nothing) Then ’错误处理:若表中没有信息则退出
Excelapp.Quit
End If
End Sub