| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2119 人关注过本帖
标题:vb6.0 记录集问题
只看楼主 加入收藏
baodingfanwe
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-7-13
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:6 
vb6.0 记录集问题
在使用adodc控件连接SQL数据库后,使用recordcount方法可以得到记录集条数,但是在使用set rs = new adodb.recordset定义一个记录集变量后,使用rs.recordcount方法得到的记录集数量为-1,向高手请教,谢谢。程序代码如下:
1、使用adodc控件代码:   
Adodc1.ConnectionString = SQL_connstr   
Adodc1.RecordSource = "select distinct Station_Name from Station_Info "   
= adCmdText   
Adodc1.Refresh   
i = adodc1.recordset.recordcount   
此时,i=1.
2、使用rs变量代码:   
set rs = new adodb.recordset   
rs.Open "select distinct Station_Name from Station_Info", SQL_conn, adOpenDynamic, adLockOptimistic, adCmdText   
i = rs.recordcount   
此时,i = -1.
请教高手能给解释一下为什么是这样的结果,都是连接同一个数据库中的同一个表,查询同样的内容。
搜索更多相关主题的帖子: SQL数据库 记录 
2016-07-13 17:17
baodingfanwe
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-7-13
收藏
得分:0 
请高手解决,急
2016-07-13 17:29
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:938
专家分:5244
注 册:2015-8-10
收藏
得分:10 
语法上看不出问题,下面是我程序中摘录的代码
怀疑是你的数据库连接SQL_conn有问题,至少我没看到SQL_conn的语句
在这行加中断,看一下SQL_conn就知道了

 Set myrec = New ADODB.Recordset

 sqltxt = "select * From UID where [User] = '" & u_id & "'"

 myrec.Open Trim(sqltxt), cn, 1, 2
2016-07-13 19:34
baodingfanwe
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-7-13
收藏
得分:0 
回复 3楼 xiangyue0510
我的SQL_connstr是这样的,
SQL_connstr = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=stationpointtable;Initial Catalog=Station_Point_Table;Data Source=USER-20160627PD"
2016-07-13 22:26
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:10 
程序代码:
RS.Open "Select * From 数据表名", 数据库连接对象, 第一个参数, 第二个参数, 第三个参数
'第一个参数:游标
adOpenForwardOnly = 0     '游标只向前浏览记录
adOpenKeyset = 1          '键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中。
adOpenDynamic = 2         '动态游标功能最强,但耗资源也最多。用户对记录说做的修改,增加或删除记录都将反映到记录集中支持全功能浏览。
adOpenStatic = 3          '静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动
'第二个参数:锁定类型
adLockReadOnly = 1        '锁定类型,默认的,只读,不能作任何修改
adLockPessimistic = 2     '当编辑时立即锁定记录,最安全的方式
adLockOptimistic = 3      '只有在调用Update方法时才锁定记录集,而在此前的其他操作仍可对当前记录进行更改、插入和删除等

'在ADO中一般省略第三个参数,第三个参数使用默认值,假定数据库连接对象是 cn ,因此一般读采用
RS.Open "Select * From 数据表名", cn, 2, 2
'写采用
RS.Open "Select * From 数据表名", cn, 3, 2
'由于RS的 Recordset的 Recordcount 方法是一个数据的快照,因此一般采用
RS.Open "Select * From 数据表名", cn, 3, 2
i = RS.Recordset.RecordCount

对于ADO控件应该一样, 将 = adCmdText 语句删除,采用默认值即可。

请不要选我!!!
2016-07-13 22:32
baodingfanwe
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-7-13
收藏
得分:0 
回复 5楼 ZHRXJR
谢谢。
在请教一个问题:
我从Excel表中获取了一个字符串“打印机.惠普”,要将“打印机.惠普”赋值给adodc.recordset.fields(0).value,运行后提示错误。
 当我把字符串中的“.”去掉后,就可以将字符串赋值给adodc.recordset.fields(0).value,请教大神,我如何才能把“打印机.惠普”这个字符串赋值给adodc.recordset.fields(0).value。
2016-07-13 22:50
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:0 
首先确定你的fields(0)字段必须是字符型数据,在存储时就数据强制转换为字符串:XX = CStr("打印机.惠普"),这样就可以了。
如果你仅仅存储的是 打印机.惠普 ,那么程序认为中间的英文逗点是分隔符,当然会出错了。
Adodc1.Recordset.Fields(0) = 打印机.惠普 ,这样就会出错;
Adodc1.Recordset.Fields(0) = "打印机.惠普",这样应该不会有错误;
最好:Adodc1.Recordset.Fields(0) = CStr("打印机.惠普"),强制转换为字符串。

请不要选我!!!
2016-07-14 13:07
快速回复:vb6.0 记录集问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021716 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved