乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 一个关于在VB中将Recordset 读出的内容放到一个<em>数组</em>...

一个关于在VB中将Recordset 读出的内容放到一个<em>数组</em>...

作者:乔山办公网日期:

返回目录:excel表格制作


说说思路:
这个显然要用ADO
1、连接数据库,得到连接对象conn
2、用下面的select语句打开表,将数据读入RecordSet
set rs=conn.execute("select * from 表名")
3、用循环将数据读入二维数组arr
row=0
while not rs.eof
arr[row,0]=rs["id"]
arr[row,1]=rs["year"]
arr[row,2]=rs["mon"]
arr[row,3]=rs["1"]
arr[row,4]=rs["2"]
...
...
...
row=row+1
wend

Dim oc As Object, rs As Object, a()
Set oc = CreateObject("adodb.connection")
oc.open "provider=Microsoft.Jet.OLEDB.4.0; Data Source=e:\tmp\db2.mdb"
Set rs = CreateObject("adodb.recordset")
rs.open "select * from tek", oc, 1, 1
a = rs.getrows
MsgBox "记录集rs已被读入数组a中" & vbCrLf & "共" & UBound(a, 1) + 1 & "列 " & UBound(a, 2) + 1 & "行"
rs.Close
Set rs = Nothing
oc.Close
Set oc = Nothing


以上代码我测试过是可行的。有几点要注意:

1、数组a的类型一定要是Variant型(不定e5a48de588b6e799bee5baa6338类型),而不能指定具体的类型,如String、Integer等;

2、是getrows,不是getrow;

3、数组a赋值后会是个二维数组,其第一维是列数(就是数据表中的字段数),第二维是行数(也就是数据表中的记录数)。


三种e799bee5baa6e78988e69d83335VBA:
方法一:在eccel VBA编辑器编写代码,使用FOR循环导入:
Sub 利用Excel的VBA将数据写入Access()
'定义ADODB 连接Access数据库
Dim Cnn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim strCon As String
Dim strFileName As String '数据库文件名
strFileName = InputBox("请输入文件路径及文件名:", "Excel传递数据至Access", "E:\ExcelTest\Staff.mdb")
'连接字符串,我这里是Access2010,所提供者参数为:Provider=Microsoft.ACE.OLEDB.12.0;
'如果此参数不能使用,根据自己的电脑修改这个字符串
'至于连接至的数据库名,根据自己的电脑修改,或用一个对话框或其他方式将此值传递进程序
strCon = "provider=Microsoft.jet.OLEDB.4.0;" _
& "Data Source=" & strFileName & ";"
Cnn.Open strCon
Rs.ActiveConnection = Cnn
Rs.LockType = adLockOptimistic
Rs.Open "Employee" '假设表为Employee
'定义Excel表中的数据区域以写入Access
Dim Sht As Worksheet
Dim Rn As Long
Dim Cn As Long
Set Sht = ThisWorkbook.Sheets("Sheet1")
'假设将 Sheet1 表的 2-6行的1、2、3列写入Access表
For Rn = 2 To 6
Rs.AddNew
Rs!num = Sht.Cells(Rn, 1) ’num,name,department是数据库中指定表的字段
Rs!Name = Sht.Cells(Rn, 2)
Rs!department = Sht.Cells(Rn, 3)
Rs.Update
Next Rn
MsgBox "完成!"
Rs.Close
Cnn.Close
Set Rs = Nothing
Set Cnn = Nothing
Set Sht = Nothing
End sub

你将 data 声明为 Variant 试试
dim data as Variant

相关阅读

  • 在<em>VBA</em>中<em>UBound</em>是什么意思

  • 乔山办公网excel表格制作
  • Private Function shk(应收, 资金, 应付, biaom) Dim h As Byte, x As Byte, y As Byte, s%, hr %声明3个字节变量1个整数变量,还有....,最后一个变量没有声明类型,默认为Variant,这是一个不好的习惯,看
  • <em>EXCEL</em>中的<em>VBA</em> <em&

  • 乔山办公网excel表格制作
  • 这个程序应该没有什么难度,不过,说实话,你的描述我没看懂。什么叫“所有使用到某行E列子件编码的母件编码信息”?最好举例说明。VBA Excel中,两个数组查找匹配该怎么写" src="/
关键词不能为空
极力推荐

聚合标签

ppt怎么做_excel表格制作_office365_word文档_365办公网