1. 'ARRAY("1991","1992","1993","1994","1996","1997","1998","1999","2001")
  2. Sub ADO_SQL_QUERY_ONE_RNG()
  3. '应用程序设置
  4. Application.ScreenUpdating = False
  5. Application.DisplayAlerts = False
  6. Application.Calculation = xlCalculationManual
  7.  
  8. '错误处理
  9. On Error GoTo ErrHandler
  10.  
  11. '计时器
  12. Dim StartTime, UsedTime As Variant
  13. StartTime = VBA.Timer
  14.  
  15. '变量声明
  16. Dim Wb As Workbook
  17. Dim Sht As Worksheet
  18. Dim DataSht As Worksheet
  19.  
  20. Dim Rng As Range
  21. Dim Arr As Variant
  22. Dim EndRow As Long
  23. Dim DataPath As String
  24. Dim SQL As String
  25.  
  26. '实例化对象
  27. Set Wb = Application.ThisWorkbook
  28. DataPath = Wb.Path & "\" & "蒸发214.xlsx" 'Wb.FullName
  29.  
  30. 'Set DataSht = Wb.Worksheets("2001")
  31. 'Set Sht = Wb.Worksheets("result")
  32. '********************************************************************************************************************
  33. '对象变量声明
  34. Dim CNN As Object
  35. Dim RS As Object
  36. '数据库引擎——Excel作为数据源
  37. Dim DATA_ENGINE As String
  38. 'Select Case Application.Version * 1 '设置连接字符串,根据版本创建连接
  39. 'Case Is <= 11
  40. ' DATA_ENGINE = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=YES;IMEX=2';Data Source="
  41. 'Case Is >= 12
  42. DATA_ENGINE = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=YES;IMEX=2'; Data Source= "
  43. 'End Select
  44. '数据库引擎——Excel作为数据源
  45. 'Const DATA_ENGINE As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
  46. "Extended Properties='Excel 12.0;HDR=YES;IMEX=2'; Data Source= "
  47. '创建ADO Connection 连接器 实例
  48. Set CNN = CreateObject("ADODB.Connection")
  49. 'On Error Resume Next
  50. '创建 ADO RecordSet 记录集 实例
  51. Set RS = CreateObject("ADODB.RecordSet")
  52. '连接数据源
  53. CNN.Open DATA_ENGINE & DataPath
  54. '********************************************************************************************************************
  55.  
  56. 'dataname = Array("1991", "1992", "1993", "1994", "1996", "1997", "1998", "1999", "2001")
  57. dataname = Array("2002", "2003", "2004", "2006", "2007", "2008", "2009", "2011", "2012", "2013", "2014")
  58. For i = LBound(dataname) To UBound(dataname)
  59.  
  60. On Error Resume Next
  61. Wb.Worksheets(dataname(i) & "坐标").Delete
  62. On Error GoTo 0
  63.  
  64. Set Sht = Wb.Worksheets.Add(after:=Wb.Worksheets(Wb.Worksheets.Count))
  65. Sht.Name = dataname(i) & "坐标"
  66.  
  67. With Sht
  68. EndRow = .Cells(.Cells.Rows.Count, 2).End(xlUp).Row
  69. .Cells.ClearContents
  70. .Range("A1:F1").Value = Array("站点", "经度", "纬度", "", "数据", "数据除10")
  71. Set Rng = .Range("A2")
  72. '设置查询语句
  73. SQL = "SELECT 站点,经度,纬度,年,SUM(值),SUM(值)/10 FROM [" & dataname(i) & "$A1:G] WHERE 站点 IS NOT NULL GROUP BY 站点,经度,纬度,年"
  74. Debug.Print SQL
  75. '执行查询 返回记录集
  76. 'RS.Open SQL, CNN, 1, 1
  77. Set RS = CNN.Execute(SQL)
  78. '复制记录集到指定Range
  79. Rng.CopyFromRecordset RS
  80.  
  81. End With
  82.  
  83. Next i
  84. '关闭记录集
  85. RS.Close
  86. '关闭连接器
  87. CNN.Close
  88. '运行耗时
  89.  
  90. UsedTime = VBA.Timer - StartTime
  91.  
  92. ErrorExit: '错误处理结束,开始环境清理
  93. Set Wb = Nothing
  94. Set Sht = Nothing
  95. Set Rng = Nothing
  96. '释放对象
  97. Set RS = Nothing
  98. Set CNN = Nothing
  99.  
  100. Application.ScreenUpdating = True
  101. Application.DisplayAlerts = True
  102. Application.Calculation = xlCalculationAutomatic
  103. Exit Sub
  104. ErrHandler:
  105. If Err.Number <> 0 Then
  106. MsgBox Err.Description & "", vbCritical, "错误提示!"
  107. 'Debug.Print Err.Description
  108. Err.Clear
  109. 'Resume ErrorExit
  110. End If
  111. End Sub

  

2017-09-21xlVBA_蒸发SQL循环查询1的更多相关文章

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

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

  2. sql循环查询树形结构

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

  3. 在论坛中出现的比较难的sql问题:32(row_number函数+子查询 sql循环取差值)

    原文:在论坛中出现的比较难的sql问题:32(row_number函数+子查询 sql循环取差值) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路. sql循环取差值,该怎 ...

  4. [转] 利用SET STATISTICS IO和SET STATISTICS TIME 优化SQL Server查询性能

    首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET ...

  5. 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效

    数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...

  6. SQL联合查询两个表的数据

    刚有个项目,需要查询水位数据表中的水位信息,及查询降雨量表中统计时段降雨量的数据,以计算出日降雨量,而且时段是前一天8时到后一天8时总共24个小时. 两个子查询: 1.根据当前时间判断统计前天8时到今 ...

  7. 利用SET STATISTICS IO和SET STATISTICS TIME 优化SQL Server查询性能

    首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET ...

  8. 通过一个小问题来学习SQL关联查询

    原话题: 是关于一个left join的,没有技术难度,但不想清楚不一定能回答出正确答案来: TabA表有三个字段Id,Col1,Col2 且里面有一条数据1,1,2 TabB表有两个字段Id,Col ...

  9. SQL Server查询性能优化——堆表、碎片与索引(二)

    本文是对 SQL Server查询性能优化——堆表.碎片与索引(一)的一些总结.  第一:先对 SQL Server查询性能优化——堆表.碎片与索引(一)中的例一的SET STATISTICS IO之 ...

随机推荐

  1. pillow生成验证码

    1.结果 2.安装pillow cmd里进入python,pip install pillow,需要等一段时间 3.代码 from PIL import Image, ImageDraw, Image ...

  2. Install Apache Maven on Ubuntu

    Download the Apache maven from this link https://maven.apache.org/download.cgi, extract the download ...

  3. default activity not found的问题

    莫名其妙的同一个project下的所有modlue全都出现了这个问题,在网上查了一些解决方法,总结一下就是在运行时把default activity改成nothing,这个把活动都搞没了肯定不行.还有 ...

  4. topcoder srm 415 div1

    problem1 link 每次贪心地从crans由大到小地找到一个能搬得动地尽量大地box即可. problem2 link 首先,$hava$可以全部换成钱,然后就是找到一个最小的钱减去自己已有的 ...

  5. topcoder srm 689 div1 -3

    1.给出一个$2*n$的矩阵,只包含小写字母.重新排列各个元素使得任意两个相邻的元素不相同? 思路:按照每种字符的数量降序排序,然后从多到少依次放每一种.放的时候一上一下交错放置. #include ...

  6. FireMonkey 源码学习(6)

    (6)GetGlyph和GetBaseline TFontGlyphManager是一个抽象类,在不同平台上的实现是不同的,以Windows为例,在FMX.FontGlyphs.Win.pas文件中定 ...

  7. linux下如何使make只输出执行过程中的命令序列

    答: make -n (-n.--just-print.--dry-run.--recon等价)

  8. git删除远程分支文件,不改变本地文件

    git提交项目时候踩的Git的坑 特别 由于准备春招,所以希望各位看客方便的话,能去github上面帮我Star一下项目 https://github.com/Draymonders/Campus-S ...

  9. P3605 [USACO17JAN]Promotion Counting晋升者计数

    思路 线段树合并的板子.. 和子节点合并之后在值域线段树上查询即可 代码 #include <cstdio> #include <algorithm> #include < ...

  10. [nginx] - 使用nginx实现反向代理,动静分离,负载均衡,session共享

    反向代理概念 先说正向代理,比如要访问youtube,但是不能直接访问,只能先找个FQ软件,通过FQ软件才能访问youtube. FQ软件就叫做正向代理.所谓的反向代理,指的是用户要访问youtube ...