查询设备故障表到Excel

Sub ExecuteSQLQueryWithFilterAndInsert()

    Dim conn As Object
    Dim rs As Object
    Dim strSQL As String
    Dim newSheet As Worksheet
    Dim deviceName As String
    Dim i As Integer
    
    ' 获取设备名称
    deviceName = UserForm1.TextBox3.Value
    If deviceName = "" Then
        MsgBox "未提供设备名称。"
        Exit Sub
    End If
    
    ' 创建一个新的工作表
    Set newSheet = ThisWorkbook.Sheets.Add
    
    ' 创建一个 ADO 连接对象
    Set conn = CreateObject("ADODB.Connection")
    
    ' 连接到 SQL Server 数据库
    conn.Open "Provider=SQLOLEDB;Data Source=DESKTOP-M7CIT7G;Initial Catalog=ReportServer;Integrated Security=SSPI;"
    
    ' SQL 查询语句
    strSQL = "SELECT * FROM 设备运行 WHERE 设备名称 = N'" & deviceName & "'"
    //运行时间转换成时分秒
    ' strSQL = "SELECT TOP (10) [设备编号], [设备名称], [运行时间], [故障描述] FROM 设备运行 WHERE CONVERT(DATE, 运行时间) = CONVERT(DATE, GETDATE()) ORDER BY 运行时间 DESC;"
    ' 创建一个 ADO 记录集对象
    Set rs = CreateObject("ADODB.Recordset")
    
    ' 执行查询
    rs.Open strSQL, conn
    
    ' 在新工作表顶部插入字段名称行
    For i = 0 To rs.Fields.Count - 1
        newSheet.Cells(1, i + 1).Value = rs.Fields(i).Name
    Next i
    
    ' 移动到新的行并插入新记录
    newSheet.Cells(2, 1).CopyFromRecordset rs
    
    ' 将 D 列单元格的格式设置为日期时间格式
    newSheet.Columns(4).NumberFormat = "yyyy-mm-dd hh:mm:ss"
    
    ' 关闭连接和记录集对象
    rs.Close
    conn.Close
    
    ' 释放对象变量
    Set rs = Nothing
    Set conn = Nothing

End Sub
CREATE TABLE 设备运行 (
    设备编号 INT IDENTITY(1,1) PRIMARY KEY, -- 设备编号,自动递增,作为主键
    设备名称 NVARCHAR(100) NOT NULL, -- 设备名称,最大长度为100,不能为空
    运行状态 NVARCHAR(50) NULL, -- 运行状态,最大长度为50,可以为空
    运行时间 DATETIME NULL, -- 运行时间,可以为空
    故障描述 NVARCHAR(255) NULL -- 故障描述,最大长度为255,可以为空
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值