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