第三十五回 ADO接入外部数据库,API打开系统百宝箱

 

相关知识点

访问数据库

ADO对象(ActiveX Data Object)包含Connection、RecordSet等多个对象

copyFromRecordset 结果集里所有行信息,一行行显示在某位置

MoveNext 让指针移动到下一条记录

EOF 判断指针是否已经到达末尾

API 可以调用:调用时要先声明

 WinExec(命令或可执行文件名,显示方式)

 声明:Declare Function WinExec Lib “kernel32”_

(ByVal lpcmdline as string,ByVal nCmdShow as Long) As Long

声明要使用WinExec的API函数,并指出该函数存放在系统文件kernel32.dll中。同时说明该函数有一个String和一个Long函数

例1 学生成绩Access数据导入到Execl单元格,集中写入

Sub importData()

     Dim con as Object, rst as Object, sql as String,i as Integer

     ‘创建一个连接对象,命名为con

     Set con=CreatObject(“Adobe.Connection”)\

     ‘使用con将本VBA程序与目标数据库连接起来

     con.Open”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\vbademo\demodb.accdb”

     ‘将准备执行的SQL命令保存在一个字符串变量sql中

     sql=”select 课程号,课程名称,责任老师 from course”

     ‘创建一个结果集对象

     Set rst=CreratObject(“Adobe.Recordset”)

‘使用该结果集对象,沿con路线将sql语句发送给目标数据库,并接收数据库返回的查

询‘结果

                     rst.Open sql,con

                     ‘将结果集中全部内容直接复制到B2单元格中

                     Range(“b2”).copyFromRecordset.rst

                     非常重要:程序结束前必须关闭结果集和连接对象!

                     rst.Close

                     con.Close

              End Sub

例2 学生成绩Access数据导入到Execl单元格,按照格式写出

Sub importData()

     Dim con as Object, rst as Object, sql as String,i as Integer

     ‘创建一个连接对象,命名为con

     Set con=CreatObject(“Adobe.Connection”)\

     ‘使用con将本VBA程序与目标数据库连接起来

     con.Open”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\vbademo\demodb.accdb”

     ‘将准备执行的SQL命令保存在一个字符串变量sql中

     sql=”select 课程号,课程名称,责任老师 from course”

     ‘创建一个结果集对象

     Set rst=CreratObject(“Adobe.Recordset”)

‘使用该结果集对象,沿con路线将sql语句发送给目标数据库,并接收数据库返回的查

询‘结果

                     rst.Open sql,con

                     ‘扫描结果集中每一行数据,将其字段内容稍加修改后填入第1行单元格中

                     ‘跟12回文本文件处理有些相似

                     i=8

                     Do while Not rst.EOF

                            cells(i,2)=rst(“课程号”)

                            cells(i,3)=”(”&rst(“课程名称”)&”)”

                            cells(i,4)=”Mr.”&rst(“责任教师”)

                            rst.MoveNext

                            i=i+1

                     Loop

                     rst.Close

                     con.Close

              End Sub

              例3 API调用,WinExec

              Option Explicit

Declare Function WinExec Lib “kernel32”_

(ByVal lpcmdline as string,ByVal nCmdShow as Long) As Long

Sub Rundemo()

       WinExec”c:\windows\system32\notepad.exe”,9

End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值