-
Sub
SQL2Arr()
-
Dim
AdoCN
As
Object
-
Dim
AdoRe
As
Object
-
Dim
SQL
As
String
-
Dim
Arr1, Arr2, Arr3
-
Set
AdoCN = CreateObject(
"ADODB.Connection"
)
-
Set
AdoRe = CreateObject(
"ADODB.Recordset"
)
-
SQL =
"SELECT * FROM [Sheet1$A1:C11]"
-
AdoCN.Open
"Provider=Microsoft.ACE.OLEDB.12.0;"
& _
-
"Data Source="
& ThisWorkbook.FullName &
";"
& _
-
"Extended Properties=Excel 12.0;"
-
Set
AdoRe = AdoCN.Execute(SQL)
-
Arr1 = AdoRe.GetRows(, ,
"姓名"
)
-
AdoRe.MoveFirst
-
Arr2 = AdoRe.GetRows(, , Array(
"姓名"
,
"班级"
))
-
AdoRe.MoveFirst
-
Arr3 = AdoRe.GetRows
-
AdoCN.Close
-
Set
AdoRe =
Nothing
-
Set
AdoCN =
Nothing
-
End
Sub
利用这个方法,也可以单独获取某一
附件下载:在VBA中如何将SQL得到的数据直接赋值到数组? http://www.exceltip.net/thread-13032-1-1-11314.html
Private Sub Worksheet_Activate()
On Error Resume Next
Dim x As Object, yy As Object,
sql
As String
Set x = CreateObject("ADODB.Connection")
x.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='
Excel
8.0;hdr=no;';Data Source=" & ActiveWorkbook.FullName
sql
= "select f6,f2,f3,f4,f5,f7,f13,f24 -f25 from [sheet1$] where f24 -f25<f17 and (f13'C3' or f13 is null)" ‘不等于字符串用 ‘C3’ 包含空值用 is null
Set yy = x.Execute(
sql
)
Range("a:h").ClearContents
Range("a1:h1") = Array("编号", "品名", "规格", "产地", "单位", "件装", "属性", "计划") ‘表头 另外
赋值
[a2].CopyFrom
Recordset
yy
Set yy = Nothing
Set x = Nothing
End Sub
2,用ADO Connection对象查询
'仿制简单的
SQL
查询语句,用于对二维
数组
的查询
'参照
SQL
语句:Select * From array [Where conditions] [Distinct fields] [ResultWithTitle]
'实现功能:
' 依条件设置查询
数组
,返回包含查询字段(或全部字段)的
数组
,可多条件组合。
' 条件运算符包括:> = < >= <= <> , like(正则表达式)
' 使用此函数,需要在文件
中
引用正则表达式脚本 Microsoft VBScript Regular Expressions x.x
' (根据不同的电脑配置和环境此处会有差异)
'算法简要:
' 1、查询条件运算符:仅有 >, =, <, >=, <=, <> , like(正则表达式)
' 本函数
中
仅有上述运算符。原因在于,更多的运算符编制逻辑过于复杂,又不太常用。
' 为了尽可能多地容纳各种运算关系,添加了正则表达式匹配运算,
' 在某个单一条件
中
,正则几乎可以容纳绝大部分的比对运算关系了。
' 2、数字比较:
' 采用了将数字型字符串类型转换为数字之后再比较的方法,结果更为准确。
' 3、其他算法和运算速度:
' 编制过程
中
,试验过使用 正则+逻辑分支+表达式引用 的方法,
' 可以实现几乎等同于
SQL
查询语句的复杂功能,而且代码更简捷。
' 但运算速度相差过于悬殊(大概几十到上百倍 - "一闪而过"和"一袋烟"的差距!),最后不得不放弃。
' 所以现在的版本相当于一个简化了的select语句,但对于大多数查询情况而言够用了。
ADODB用来操作
数据
库是非常方便的。用
Recordset
对象,可以
直接
增删改
数据
库而不用使用
SQL
ADD/UPDATE/DELETE语句. 这个系列结合自己的实践,全面记录一些使用细节。
Dim db_xls,
sql
, arr
db_xls = ThisWorkbook.FullName
sql
= "select * from [sheet1$] where 1 "
arr = db_
sql
_arr(db_xls,
sql
)
Sheets("sheet2").Cells.Clear
Sheets("sheet2").Cells(1, 1).Resize(UBound(arr), UBound(arr, 2)) = arr
End S.
重置
数组
大小
ReDim myarray(UBound(myarray) + 1)'重置
数组
大小不保留原来
数据
ReDim Preserve myarray(UBound(myarray) + 1)'重置
数组
大小且保留原来
数据
将
数组
写入表格
[a1:a?] = Application.WorksheetFunction.T...
Dim arr() As String '定义动态
数组
Dim n As Long
Dim i As Integer
n = Application.WorksheetFunction.CountA(Range("A:A")) '确定A列非空
数据
数量
ReDim arr(1 To n) As String
str
Sql
= ""str
Sql
= str
Sql
& " select max(number) from dbo.#DATA" & vbCrLfrss.Open str
Sql
, cnn numb = rss.Fields(0)rss.Close
转载于:https://www.cnblogs.com/zigewb/archive/2013/02/06/2900645.htm...
1. 什么是
SQL
SQL
(Structured Query Language)是“结构化查询语言”,它是对关系型
数据
库的操作语言。它可以应用到所有关系型
数据
库
中
,例如:My
SQL
、Oracle、
SQL
Server等。
SQ标准(ANSI/ISO)有:
SQL
-92:1992年发布的
SQL
语言标准;
SQL
:1999:1999年发布的
SQL
语言标签;
SQL
:2003:2003年发布的
SQL
语言标签;
这些标准就与JDK的版本一样,在新的版本
中
总要有一些语法的变化。不同时期的
数据
库对不同标准做了实
本文翻译至:http://itpro.nikkeibp.co.jp/atcl/column/15/090100207/090100143/?ST=system
Variant型变量 =
数组
数组
是可以保存多个值的 “一种变量”。变量是独幢楼房的话,
数组
就是联排别墅。
VBA
中
在
数组
名后面加上括号,里面指定
数组
元素的编号。要注意编号是从0开始。
数组
拷贝到別的
数组
时,不是保存到
数组
里,而是保存