'ARRAY("1991","1992","1993","1994","1996","1997","1998","1999","2001")
Sub ADO_SQL_QUERY_ONE_RNG()
'应用程序设置
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual '错误处理
On Error GoTo ErrHandler '计时器
Dim StartTime, UsedTime As Variant
StartTime = VBA.Timer '变量声明
Dim Wb As Workbook
Dim Sht As Worksheet
Dim DataSht As Worksheet Dim Rng As Range
Dim Arr As Variant
Dim EndRow As Long
Dim DataPath As String
Dim SQL As String '实例化对象
Set Wb = Application.ThisWorkbook
DataPath = Wb.Path & "\" & "蒸发214.xlsx" 'Wb.FullName 'Set DataSht = Wb.Worksheets("2001")
'Set Sht = Wb.Worksheets("result")
'********************************************************************************************************************
'对象变量声明
Dim CNN As Object
Dim RS As Object
'数据库引擎——Excel作为数据源
Dim DATA_ENGINE As String
'Select Case Application.Version * 1 '设置连接字符串,根据版本创建连接
'Case Is <= 11
' DATA_ENGINE = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=YES;IMEX=2';Data Source="
'Case Is >= 12
DATA_ENGINE = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=YES;IMEX=2'; Data Source= "
' End Select
'数据库引擎——Excel作为数据源
'Const DATA_ENGINE As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Extended Properties='Excel 12.0;HDR=YES;IMEX=2'; Data Source= "
'创建ADO Connection 连接器 实例
Set CNN = CreateObject("ADODB.Connection")
'On Error Resume Next
'创建 ADO RecordSet 记录集 实例
Set RS = CreateObject("ADODB.RecordSet")
'连接数据源
CNN.Open DATA_ENGINE & DataPath
'******************************************************************************************************************** 'dataname = Array("1991", "1992", "1993", "1994", "1996", "1997", "1998", "1999", "2001")
dataname = Array("2002", "2003", "2004", "2006", "2007", "2008", "2009", "2011", "2012", "2013", "2014")
For i = LBound(dataname) To UBound(dataname) On Error Resume Next
Wb.Worksheets(dataname(i) & "日子").Delete
On Error GoTo 0 Set Sht = Wb.Worksheets.Add(after:=Wb.Worksheets(Wb.Worksheets.Count))
Sht.Name = dataname(i) & "日子" With Sht
EndRow = .Cells(.Cells.Rows.Count, 2).End(xlUp).Row
.Cells.ClearContents
.Range("A1:F1").Value = Array("年", "月", "日", "数据", "数据除10", "日期序号")
Set Rng = .Range("A2")
'设置查询语句
SQL = "SELECT 年,月,日,SUM(值),SUM(值)/10,NULL FROM [" & dataname(i) & "$A1:G] WHERE 站点 IS NOT NULL GROUP BY 年,月,日"
'执行查询 返回记录集
'RS.Open SQL, CNN, 1, 1
Set RS = CNN.Execute(SQL)
'复制记录集到指定Range
Rng.CopyFromRecordset RS End With Next i
'关闭记录集
RS.Close
'关闭连接器
CNN.Close
'运行耗时 UsedTime = VBA.Timer - StartTime ErrorExit: '错误处理结束,开始环境清理
Set Wb = Nothing
Set Sht = Nothing
Set Rng = Nothing
'释放对象
Set RS = Nothing
Set CNN = Nothing Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
Exit Sub
ErrHandler:
If Err.Number <> 0 Then
MsgBox Err.Description & "!", vbCritical, "错误提示!"
'Debug.Print Err.Description
Err.Clear
'Resume ErrorExit
End If
End Sub Sub GetDateIndex()
For Each Sht In ThisWorkbook.Worksheets
If Sht.Name Like "*日子" Then
lastYear = CLng(Left(Sht.Name, 4)) - 1
startdate = CDate(lastYear & "/12/31")
Debug.Print startdate
With Sht
EndRow = .Range("A65536").End(xlUp).Row
For i = 2 To EndRow
today = CDate(.Cells(i, 1).Value & "/" & .Cells(i, 2).Value & "/" & .Cells(i, 3).Value)
.Cells(i, 6).Value = DateDiff("d", startdate, today)
Next i
End With
End If
Next Sht
End Sub

  

20170921xlVBA_SQL蒸发循环查询2的更多相关文章

  1. Oracle 如何循环查询结果集,进行新增或修改

    Oracle的PL/SQL中怎样循环查询的结果集,然后根据查询结果进行判断,是新增或修改操作 loop循环例子 for item in (select a,b,c from table_a where ...

  2. 2017-09-21xlVBA_蒸发SQL循环查询1

    'ARRAY("1991","1992","1993","1994","1996","19 ...

  3. mysql循环查询树状数据

    完整function )) ) CHARSET utf8 BEGIN ) ; ) ; SET str = ''; SET cid =cast(rootId as CHAR); WHILE cid is ...

  4. sql遍历查询结果sql循环查询结果集sql循环查询

    --查询表B,把查询到的数据插入临时表#A中,根据表B 的ID 进行排序:表#A中 的 i  字段 由1开始增加排序:        SELECT ROW_NUMBER() OVER ( ORDER ...

  5. Oracle循环查询结果集 自定义函数

    create or replace function Fun_GetRoleIDList(d_fid char) return varchar is  rolelist varchar(2000);b ...

  6. [moka同学笔记]Yii2.0循环查询并对结果累加求和

    在控制器中查询好数据  $model 在视图中输入 <?php foreach($model as $key=>$r):?> <tr class="text-cent ...

  7. oracle中用while循环查询1到100的质数(素数)

    declare i number:=1;  --表示当前数字 j number:=0;  --从2开始,存储判断的数字 sum1 number:=0;--总数begin while(i<100) ...

  8. sql循环查询树形结构

    pid:父类别id ' connect by prior pid = id --查询父祖类别 union ' connect by prior id = pid;--查询子孙类别 这样查询出选中id ...

  9. SqlServer中循环查询结果集

    ); begin ; open c_test_main;--打开游标 --开始循环 begin fetch next from c_test_main into @id,@value; --赋值到变量 ...

随机推荐

  1. ODAC(V9.5.15) 学习笔记(七)TOraUpdateSQL

    名称 类型 说明 DataSet 指向需要执行更新操作的数据集 DeleteObject 当执行删除操作时,通过该属性执行另外一个数据集,由后者来执行更多的删除动作 DeleteSQL TString ...

  2. uniGUI出新版本了,0.97.0.1081

    uniGUI出新版本了,0.97.0.1081,试用版0.97.0.1075,支持Delphi2006~XE7.下载地址是: http://www.unigui.com/downloads 已在XE6 ...

  3. Python3 tkinter基础 Entry state 不可写 可以选 可复制的输入框

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  4. 清理本地Maven仓库

    目录 1.清理target 2.清理该项目依赖的本地仓库中的maven包 3.清理maven本地仓库中下载失败的包 参考: 1.清理target mvn clean -U 2.清理该项目依赖的本地仓库 ...

  5. (转)Spring Boot(二) & lombok

    (二期)5.springboot框架集成与lombok [课程五]springb...mbok.xmind0.1MB [课程五预习]spr...mbok.xmind0.1MB springboot的版 ...

  6. rocketmq总结(消息的顺序、重复、事务、消费模式)

    rocketmq总结(消息的顺序.重复.事务.消费模式) 参考: http://www.cnblogs.com/wxd0108/p/6038543.html https://www.cnblogs.c ...

  7. 关于 RabbitMQ 的 Dead-Letters-Queue “死信队列”

      来自一个队列的消息可以被当做‘死信’,即被重新发布到另外一个“exchange”去,这样的情况有: 消息被拒绝 (basic.reject or basic.nack) 且带 requeue=fa ...

  8. 【#和$】MyBatis中#和$的区别

    一.结论 #{}:占位符号,好处防止sql注入 ${}:sql拼接符号 二.具体分析 动态 SQL 是 mybatis 的强大特性之一,也是它优于其他 ORM 框架的一个重要原因.mybatis 在对 ...

  9. Android中EditText焦点问题

    https://www.jianshu.com/p/3d31d681f4bc 问题:当EditText失去焦点时做内容校验 场景:用户编辑EditText将内容清空,当点击空白地方时关闭软键盘,同时校 ...

  10. 分布式强化学习基础概念(Distributional RL )

    分布式强化学习基础概念(Distributional RL) from: https://mtomassoli.github.io/2017/12/08/distributional_rl/ 1. Q ...