ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5842|回复: 19

[分享]ADO+ACC向ADO+SQL SERVER移植的游标移动问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-6-14 10:56 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:ADO技术
在ADO+ACC向ADO+SQL SERVER移植的时候,发现原来代码中的recordset.movefirst,movelast不能使用,提示行集不支持反向提取: CNN.Open "Provider=SQLOLEDB;Server=ywb019;" & _ "Database=外销备货;Integrated Security=SSPI;" & _ "User ID=sa;Password=supervisor;" strSQL = "select * from 用户 order by 分类 DESC" RST.Open strSQL, CNN, adOpenDynamic, adLockOptimistic RST.MoveLast'错误提示:行集不支持反向提取 intRecCount = RST.RecordCount'此处仍为-1 RST.MoveFirst For i = 1 To intRecCount Combo1.AddItem RST.Fields("姓名") RST.MoveNext Next i Set RST = Nothing Exit Sub 经多次偿试及摸索,发现只要针对recordset作一些游标类型的指定,即可以成功: Private Sub Form_Load() Dim intRecCount As Integer Dim i As Integer With CNN .ConnectionString = "Provider=SQLOLEDB;Server=ywb019;" & _ "Database=外销备货;Integrated Security=SSPI;" & _ "User ID=sa;Password=supervisor;" .CommandTimeout = 30 End With CNN.Open With RST .CursorType = adOpenStatic .CursorLocation = adUseClient End With strSQL = "select * from 用户 order by 分类 DESC" RST.Open strSQL, CNN, adOpenDynamic, adLockPessimistic intRecCount = RST.RecordCount For i = 1 To intRecCount Combo1.AddItem RST.Fields("姓名") RST.MoveNext Next i Set RST = Nothing End Sub

TA的精华主题

TA的得分主题

发表于 2006-6-14 11:00 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-14 11:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用[I]plxmm[/I]在2006-6-14 11:00:04的发言:[BR]谢谢分享。似乎少了点什么?
还请指点

TA的精华主题

TA的得分主题

发表于 2006-6-14 11:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

烟雨教授,帮我看看这个怎么做呀。以前问过你类似的问题。[此贴子已经被作者于2006-6-14 11:17:06编辑过]

TA的精华主题

TA的得分主题

发表于 2006-6-14 11:08 | 显示全部楼层
以下是引用[I]烟雨厦江南[/I]在2006-6-14 11:01:22的发言:[BR]
以下是引用[I]plxmm[/I]在2006-6-14 11:00:04的发言:[BR]谢谢分享。似乎少了点什么?
还请指点
指点不敢当啊。偶对ADO的东东是发怵得厉害。 只是看到代码中提到了Database=外销备货、 Combo1,感觉少了附件之类的东东啊。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-14 11:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原来一直以为游标移动的问题只与提供者有关(记得好象foshan兄在一个作品向SQL SERVER移植也遇到这个问题,希望能与foshan兄分享一下),所以在移植中只能用do until(while)....loop处理,用第循环的方法移动到第一或最后一条记录。今天偶然发现可以指定recordset的游标类型来解决。
[此贴子已经被作者于2006-6-14 11:46:35编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-14 11:13 | 显示全部楼层

to plxmm:

因为这是移植到SQL SERVER中,所以即便上传附件也无法测试,这里只是提出一种处理的方法,^O^ 。

而ADO+ACC是我以前发的贴子,附件比较大,且是VB环境,这次就没发,呵呵。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-14 11:18 | 显示全部楼层
以下是引用[I]xiaoyingde[/I]在2006-6-14 11:07:05的发言:[BR]

烟雨教授,帮我看看这个怎么做呀。以前问过你类似的问题。

点击浏览该文件
现有年级成绩总表,欲通过点击“班级复选按钮”和输入要查看的名次 前N名(从高分到低分), 显示所选班级的前N名的记录 (比如,选择1、2、3班,输入N为20//就显示1、2、3班的总前20名,共20人的成绩。选择1、4、5班,就显示1、 4、5班的总前N名,共N个人的成绩记录)。
并统计各班在前N名中所占人数及各班的平均分。
最后按一个按钮,将刚才产生的表生成一个和母表一样格式的新excel文件。

被你这样一叫,真有点怕怕的,你的问题只要在原代码的基础略加修改应该就可以了,因没有附件,这里给你个思路:用一个判断来确定所选班级和名次,并将结果传送到SQL语句中即可。

TA的精华主题

TA的得分主题

发表于 2006-6-14 11:25 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-14 11:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

原来的代码呢,不会要我全部重写一遍吧,想偷偷懒。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-8 03:11 , Processed in 0.033325 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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