数据库查询记录总数

superNANA_MUMU 2010-10-09 08:42:04
我想得到,查询语句查出来的记录的总数

db.RunSelectSQL ("SELECT 中文名 From 数据信息 WHERE (数据集代码 = 'A')")
ListElmtCount = db.rs.RecordCount '查询一共有多少条记录


上面SQL语句我在数据库上能查到16条记录,为什么我程序运行ListElmtCount=-1呢
...全文
794 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
贝隆 2010-10-10
  • 打赏
  • 举报
回复
学习。。
lxq19851204 2010-10-10
  • 打赏
  • 举报
回复
请看关于Recordset的open方法的说明:
Recordset.open Source,ActiveConnection[,CursorType,LockType,Options]

Recordset对应你的rs
Source是你的sql语句变量,对应于sql
ActiveConnection是一个打开的连接,对应于你的cn
CursorType是游标类型,对应于你的第一个1
LockType是锁类型,用于控制并发,对应于你的第二个1

当你修改了数据库中的列标题(准确的说法叫做“字段名称”)后,需要相应的修改sql变量中的sql语句,否则查询时会报错。

关于CursorType和LockType的详细意义,以你目前的情况可以不用太关注。如果你确实有兴趣想了解,请往下见:

CursorType:游标类型,定义如下

0(adOpenForwardOnly): 只能在Recordset的记录中向前移动,但速度最快。

1(adOpenKeyset):可以在Recordset中任意移动,其他用户所做的记录修改可见,但其他用户添加的记录不可见,删除的记录字段值不能被使用。

2(adOpenDynamic):可以在Recordset中任意移动,其他用户增、删、改的记录都可见,但速度最慢。

3(adOpenStatic):可以在Recordset中任意移动,其他用户增、删、改的记录都不可见。


LockType:并发控制

0(adLockReadOnly):recordset的记录为只读

1(adLockPessimistic):只要保持Recordset为打开,别人就无法编辑该记录集中的记录.

2(adLockOptimistic):当update recordset中的记录时,将记录加锁

3(adLockBatchOptimistic):以批模式时更新记录时加锁
superNANA_MUMU 2010-10-10
  • 打赏
  • 举报
回复
对数据库这边我单独建了类模块,db.RunSelectSQL走的是下面的语句,我找到原因了,但是我不明白,
为什么rs.Open SQLString, Cnn, adOpenDynamic, adLockOptimistic这句不能用
必须要用rs.Open SQLString, Cnn, adOpenStatic, adLockReadOnly,这两句有什么区别
我还要查询 和入库 好像只能用第二句,谁能详细解释一下吧,我加分呢


'*************数据库**************************
Public Cnn As New ADODB.Connection
Public rs As New ADODB.Recordset

'Const Scnn = "Provider=SQLOLEDB.1;INTEGRATED Security=SSPI;Persist Security Info= FALSE;Initial Catalog=气象辐射观测数据文件数据库;Data Source=10.185.59.254;"
Const Scnn = "Provider=SQLOLEDB.1;Password=superg;Persist Security Info=true;User ID=sa;Initial Catalog=气象辐射观测数据文件数据库;Data Source=10.185.59.254;"

'****打开数据库*****************************
Public Sub OpenCnn()
If Cnn Is Nothing = TURE Then Set Cnn = New ADODB.Connection '建立数据库连接对像
If Cnn.State <> 1 Then Cnn.Open Scnn '打开数据库连接
End Sub
'****关闭数据库*****************************
Public Sub CloseCnn()
If Cnn.State = 1 Then Cnn.Close '打开数据库连接
End Sub
'****执行数据操作*****************************
Public Function RunSelectSQL(ByVal SQLString As String) As ADODB.Recordset
Me.OpenCnn
If rs.State = 1 Then rs.Close
'rs.Open SQLString, Cnn, adOpenDynamic, adLockOptimistic
'为什么上面这句不行,一定要用下面的语句,如果用下面的我的其他查询显示就用不了了
rs.Open SQLString, Cnn, adOpenStatic, adLockReadOnly
End Function
hsgzr 2010-10-09
  • 打赏
  • 举报
回复
使用它db.RunSelectSQL 是不返回查询记录总数的,必须使用open打开才能返回查询到的记录总数,
lxq19851204 2010-10-09
  • 打赏
  • 举报
回复
Dim rs as adodb.recordset
Dim sCmd as string

set rs =new adodb.recordset
sCmd="SELECT 中文名 From 数据信息 WHERE (数据集代码 = 'A')"
rs.Open sCmd, db, adOpenStatic, adLockReadOnly, adCmdText
ListElmtCount = rs.RecordCount
superNANA_MUMU 2010-10-09
  • 打赏
  • 举报
回复
没有人帮我吗?

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧