51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2796|回复: 6
打印 上一主题 下一主题

[原创] 写一段程序从数据库取数据存到excel中,却没存上,请指教

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-1-18 15:36:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
套用风过无息的代码,写了个小程序,可是程序执行完成之后打开excel文件,却发现什么数据也没有。

'创建excel对象
Set ExcelObject = createobject("excel.application")
'指定excel格式
aatype = "f:\templet.xls"
'打开excel
ExcelObject.WorkBooks.open(aatype)
'设置操作得工作表
Set NewSheet = ExcelObject.Sheets.item(2)
'以下是数据库操作
Dim rs,conn,sql
Set conn = createobject("adodb.connection")
Set rs = createobject("adodb.recordset")


conn.open="Provider=OraOLEDB.Oracle.1;Password=hdjb;Persist Security Info=True;User ID=hdjb;SERVER=172.16.1.45;Data Source=1.45;DBQ=;"

sql = "select aac001,aac003 from ac01"
rs.open sql,conn
i = 1
Do while rs.eof
        values1 = rs("aac001")
        values2 = rs("aac003")
        NewSheet.Cells(i+1,1).value = values1
        NewSheet.Cells(i+1,2).value = values2
        i = i +1
        rs.movenext
Loop

'保存excel数据
ExcelObject.ActiveWorkBook.Saveas "f:\data.xls"
ExcelObject.Quit
Set ExcelObject = Nothing
rs.close
Set rs=nothing
Set conn = nothing
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2007-1-18 15:48:21 | 只看该作者
我想问题应该出在这个地方:rs.open sql,conn。我调试时发现程序根本不往do while里面走。这个语句我想应该是执行sql语句将结果放到rs中的意思吧?是不是没有取到值啊?也不知道这个语句写对了没有。
我想请教到哪里去查找recordset对象的所以方法呢?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-1-18 15:54:00 | 只看该作者
Set NewSheet = ExcelObject.Sheets.item(2)
这里是把数据放到第2个工作表里面,楼主察看一下,不好意思,没有把脚本说清楚。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-1-18 16:00:03 | 只看该作者
呵呵,非常感谢你提供了这么好的例子,也非常感谢你的回复。
我看了,第2个工作表也没有数据
我看程序没有走到do while里面,应该是前面的代码出了问题吧
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-1-18 16:01:20 | 只看该作者
Do while rs.eof
        values1 = rs("aac001")
        values2 = rs("aac003")
        NewSheet.Cells(i+1,1).value = values1
        NewSheet.Cells(i+1,2).value = values2
        i = i +1
        rs.movenext
Loop

应该是
do while not rs.eof  (rs.eof  记录的结束位置就是到达最后一条记录的时候)
...
loop
吧....

还有"这个语句我想应该是执行sql语句将结果放到rs中的意思吧 "

你这个说法是错的 rs.open...这个只是打开数据库  把需要的数据放到数据集里面去
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2007-1-18 16:08:06 | 只看该作者
非常不好意思,我给钞错了,应该是do while not rs.eof。我没有写not。
另外我特别想知道怎么能查到recordset对象的所有方法以及他们的用法呢
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-1-18 16:10:00 | 只看该作者
recordset
数据集这个东西你可以找ASP的相关信息就可以看到
你搜索一下吧  很好找的东西
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-30 01:24 , Processed in 0.106119 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表