首页 > 数据库 >SQL实现报表功能

SQL实现报表功能

时间:2024-12-31 11:19:11浏览次数:5  
标签:Dim 功能 Set 报表 oCom SQL CStr conn oRs1

查询

查询按钮点击事件脚本
//查询功能:

Sub OnClick(ByVal Item)

Dim conn '定义类对象
Dim SCon '定义数据库连接字符串
Dim oRs1 '定义获取到的数据集
Dim oCom
Dim strSQL1
Dim m,i,j,k

'---------------------打开数据库 --------------------'
sCon= "Provider=SQLOLEDB; Integrated Security =SSPI;Persist Security Info=False; Initial Catalog=Hong ; Data Source=DESKTOPDELL"
Set conn=CreateObject("ADODB.Connection")
conn.ConnectionString = sCon
conn.CursorLocation = 3
conn.Open
Set oRs1 = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")
oCom.CommandType = 1

' --------------------时间控件-----------------------'
Dim Obj1,dateStart,Obj2,dateEnd

Set Obj1=ScreenItems("StartData")
Set Obj2=ScreenItems("EndData")

dateStart=Obj1.Value
dateEnd=Obj2.Value
MsgBox ("开始时间: " & dateStart & vbCrLf & "结束时间: " & dateEnd)
'---------------------查询数据库 --------------------'
strSQL1= "SELECT * FROM [Hong].[dbo].[DataTableTest] WHERE [Datetime] BETWEEN '"& dateStart &"' AND '"& dateEnd &"' ORDER BY [Datetime] ASC"

Msgbox(strSQL1)

Set oCom.ActiveConnection = conn
oCom.CommandText = strSQL1
Set oRs1 = oCom.Execute

m = oRs1.RecordCount
MsgBox("查询到表格共有" & m &"行数据")

'---------------------设置MSHFlexGrid控件显示--------------------'
Dim olist
Set olist = ScreenItems("ReCon")
olist.clear
olist.Cols=5 '列数
olist.Rows = m+1 '行数量

For i = 0 To 4
olist.ColAlignment(i)=3'列内容居中显示
Next

'设置列宽    
olist.ColWidth(0) = 800                 
olist.ColWidth(1) = 1200
olist.ColWidth(2) = 2000
olist.ColWidth(3) = 1200
olist.ColWidth(4) = 1200

'设置表头
oList.TextMatrix(0, 0)= "序号"   

oList.TextMatrix(0, 1)= "ID"
oList.TextMatrix(0, 2) = "时间"
oList.TextMatrix(0, 3) = "测试1"
oList.TextMatrix(0, 4) = "测试2"

'---------------------将数据写入表格--------------------'
oRs1.movefirst
For i = 1 To m
oList.TextMatrix(i ,0) = i
oList.TextMatrix(i ,1) = oRs1.Fields(0).Value
oList.TextMatrix(i ,2) = oRs1.Fields(1).Value
oList.TextMatrix(i ,3) = oRs1.Fields(2).Value
oList.TextMatrix(i ,4) = oRs1.Fields(3).Value
oRs1.movenext
Next
MsgBox("查询结束" )
'----------------关闭数据库-----------'
Set oRs1 = Nothing
Set oCom = Nothing
conn.Close
Set conn = Nothing

End Sub

保存
保存按钮单击事件脚本
//指定日期文件保存功能:

Sub OnClick(ByVal Item)

Dim conn '定义类对象
Dim SCon '定义数据库连接字符串
Dim oRs1 '定义获取到的数据集
Dim oCom
Dim strSQL1
Dim m
Dim ReportSelect
'----------------------------------------------------------
Dim Obj1,dateStart,Obj2,dateEnd
Set Obj1=ScreenItems("StartData")
Set Obj2=ScreenItems("EndData")
dateStart=Obj1.Value
dateEnd=Obj2.Value
'---------------------打开并查询数据库 --------------------'
sCon= "Provider=SQLOLEDB.1; Integrated Security =SSPI;Persist Security Info=False; Initial Catalog=Hong ; Data Source=DESKTOPDELL"
strSQL1= "SELECT * FROM [Hong].[dbo].[DataTableTest] WHERE [Datetime] BETWEEN '"& dateStart &"' AND '"& dateEnd &"' ORDER BY [Datetime] ASC"
Set conn=CreateObject("ADODB.Connection")
conn.ConnectionString = sCon
conn.CursorLocation = 3
conn.Open
Set oRs1 = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")
oCom.CommandType = 1
Set oCom.ActiveConnection = conn
oCom.CommandText = strSQL1
Set oRs1 = oCom.Execute
m = oRs1.RecordCount
MsgBox("查询到表格共有" & m &"行数据")

'---------------------打开Excel模板 --------------------'
Dim objExcelApp,objExcelBook,objExcelSheet,a,b ,i
Set objExcelApp =CreateObject("Excel.Application")
objExcelApp.Visible=True
Set a =objExcelApp.Workbooks.Open("D:\DataTableTest.xlsx")
Set b =a.Worksheets("Sheet1")
b.Range("A2") = "日期: " & CStr(Year(Now)) & "年" & CStr(Month(Now)) &"月" & CStr(Day(Now)) &"日"
objExcelApp.Worksheets("Sheet1").Activate
'---------------------判断有无符合要求的数据 --------------------'
If (oRs1.EOF) Then
MsgBox("没有符合要求的记录")
Else
MsgBox("符合要求的记录")
oRs1.movefirst
For i = 4 To m+3

        With objExcelApp.Worksheets("Sheet1")
        .cells(i,1).value=CStr(oRs1.Fields(0).Value)
        .cells(i,2).value=CStr(oRs1.Fields(1).Value)
        .cells(i,3).value=CStr(oRs1.Fields(2).Value)
        .cells(i,4).value=CStr(oRs1.Fields(3).Value)
        End With
        oRs1.MoveNext
    Next

End If

'---------------------以日期命名,并保存到指定文件夹 --------------------'
Dim patch,filename
filename=CStr(Year(Now))&""&CStr(Month(Now))&""&CStr(Day(Now))&""&CStr(Hour(Now))&""&CStr(Minute(Now))&"_"&CStr(Second(Now))
patch= "D:\日报表"&filename&".xlsx"
objExcelApp.ActiveWorkbook.SaveAs patch
objExcelApp.Workbooks.Close
objExcelApp.Quit

     MsgBox "成功生成数据文件!"

'---------------------关闭数据库 --------------------'
Set objExcelApp= Nothing
Set oRs1 = Nothing
Set oCom = Nothing
conn.Close
Set conn = Nothing

End Sub

标签:Dim,功能,Set,报表,oCom,SQL,CStr,conn,oRs1
From: https://www.cnblogs.com/Jim768/p/18643614

相关文章

  • MySQL的事务
    MySQL的事务(Transaction)是一组操作的集合,这些操作作为一个单一的单元执行,要么全部成功,要么全部失败。事务在保证数据一致性和完整性方面发挥着重要作用,尤其在并发环境下确保数据的安全性和准确性。事务的四大特性:ACID原子性(Atomicity):事务中的操作要么全部执行,要么全部不......
  • MySQL数据库索引
    在MySQL中,索引是用于加速数据库查询操作的结构,它通过提供一个高效的查找路径来使得查询更加高效。数据库索引是基于某些字段或组合字段创建的数据结构,可以帮助MySQL更快地找到数据,减少扫描的行数。MySQL索引的类型主键索引(PrimaryKeyIndex)定义:主键索引是唯一的索引,每......
  • centos7快速部署MySQL8
    一、yum安装wgethttps://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpmrpm-Uvhmysql80-community-release-el7-3.noarch.rpmyuminstallmysql-community-serversystemctlstartmysqldgrep'temporarypassword'/var/log/mysqld.log2024-1......
  • 前端如何实现对讲功能?说说你的思路
    实现前端对讲功能通常涉及到实时音频传输和信令控制。以下是一个基本的实现思路:1.技术选型WebRTC:WebRTC是一个支持网页浏览器进行实时语音对话(RTC)或视频对话的技术。它允许网页应用进行点对点(Peer-to-Peer)的连接,无需透过服务器。WebSocket:用于在客户端和服务器之间建立持久......
  • 如何彻底删除53kf系统代码并确保不影响其他功能?
    您好,根据您的描述,您希望彻底删除53kf系统的代码,并确保不会影响其他功能的正常运行。以下是详细的步骤和注意事项:备份现有数据:在进行任何删除操作之前,务必先备份所有重要数据。包括但不限于数据库、配置文件、静态资源等。这样即使出现问题,也可以迅速恢复到之前的稳定状态。......
  • 【基础篇】四、MySQL数据类型
    文章目录Ⅰ.数据类型分类Ⅱ.数值类型1、整数类型2、位类型--bit3、小数类型①浮点数类型②固定精度的十进制数类型--`decimal`Ⅲ.字符串类型1、char类型2、varchar类型3、char和varchar的比较Ⅳ.日期类型Ⅴ.enum类型与set类型1、语法2、set的查询:find_in_s......
  • 如何解决MSSQL数据库卡顿的问题?
    MSSQL数据库存在卡顿现象,影响了业务的正常运行。以下是详细的分析和解决方案:确认资源使用情况:使用监控工具(如PerformanceMonitor、SQLServerProfiler)实时监测数据库的资源使用情况,查找CPU、内存、磁盘I/O等资源的瓶颈。分析数据库日志(如SQLServerErrorLog),查看是否有异......
  • MySQL 账号没有密码该如何处理?
    当发现MySQL账号没有密码时,首先可以参考服务器提供商提供的相关文档或知识库,如某些服务器管理平台会有关于MySQL账号密码管理的特定指南(如faq/list.asp?unid=876)。如果是在特定的建站助手中使用MySQL,可能需要在其界面中查找与账号密码设置相关的功能模块,看是否能够在其中设......
  • 《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
    @目录二、高级篇(大厂进阶)1.Docker复杂安装详说1.1安装mysql主从复制1.2安装redis集群1.2.1面试题:1~2亿条数据需要缓存,请问如何设计这个存储案例哈希取余分区一致性哈希算法分区哈希槽分区1.2.23主3从redis集群扩缩容配置案例架构说明整体流程图知识点总结图使用步骤:注意点说明......
  • NoSQL和关系数据库的操作比较
    实验4NoSQL和关系数据库的操作比较 1.实验目的(1)理解四种数据库(MySQL、HBase、Redis和MongoDB)的概念以及不同点;(2)熟练使用四种数据库操作常用的Shell命令;(3)熟悉四种数据库操作常用的JavaAPI。2.实验平台(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);(2)Hadoop版本:3.1.3;(3)My......