为何查询返回的记录总数总是-1

fangyds 2002-06-27 08:27:26
模块:
Public Conn As New ADODB.Connection '
Public Rec As ADODB.Recordset
Public Cmd As New ADODB.Command
Public strSql as string '存放 SQL 语句

'显示记录列表
Public Sub FillList()
strSql = "select name from functionsub"
Cmd.CommandText = strSql
Set Rec = Cmd.Execute
'************************************************
'为何记录总数总是返回-1,哪怕记录集中有上百条记录
'************************************************
Do While Not (Rec.Eof)
Form1.List1.AddItem Rec.Fields(0)
Rec.MoveNext
Loop
End Sub

'显示记录的详细内容
Public Sub ShowData(Byval sName As String)
strSql = "select * from functionsub where name = '" & sName & "'"
Cmd.CommandText = strSql
Set Rec = Cmd.Execute
'***********************************************
'这里的记录总数还是返回-1,虽然只有一条记录
'***********************************************
With Form1
.txtName.Text = Rec.Fields("name")
.txtLibrary.Text = Rec.Fields("library")
....
.txtSystem.Text = Rec.Fields("system")
End With
End Sub

初始化:
Private Sub Form_Initialize()
Dim strOpen As String
'初始化连接字符串
strOpen = "Provider=microsoft.jet.oledb.4.0;Data Source=" & CheckPath(App.Path) & _
"APIChecker.mdb"
Conn.Open strOpen '打开数据库
'FRec.Open "functionsub", Conn, adOpenStatic, adLockPessimistic
Cmd.ActiveConnection = Conn '设置 Cmd 对象的活动连接
End Sub
...全文
141 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lincanwen 2002-06-27
  • 打赏
  • 举报
回复
改成下面的应该可以,不用command,而是直接将查询结果送给rec:
模块:
Public Conn As New ADODB.Connection '
Public Rec As ADODB.Recordset
Public Cmd As New ADODB.Command
Public strSql as string '存放 SQL 语句

'显示记录列表
Public Sub FillList()
strSql = "select name from functionsub"
Rec.open strsql,conn,adOpenKeyset,adLockPessimistic
'************************************************
'改上面这个地方
'************************************************
Do While Not (Rec.Eof)
Form1.List1.AddItem Rec.Fields(0)
Rec.MoveNext
Loop
End Sub

'显示记录的详细内容
Public Sub ShowData(Byval sName As String)
strSql = "select * from functionsub where name = '" & sName & "'"
Rec.open strsql,conn,adOpenKeyset,adLockPessimistic
'***********************************************
'改上面这个地方
'***********************************************
With Form1
.txtName.Text = Rec.Fields("name")
.txtLibrary.Text = Rec.Fields("library")
....
.txtSystem.Text = Rec.Fields("system")
End With
End Sub

初始化:
Private Sub Form_Initialize()
Dim strOpen As String
'初始化连接字符串
strOpen = "Provider=microsoft.jet.oledb.4.0;Data Source=" & CheckPath(App.Path) & _
"APIChecker.mdb"
Conn.Open strOpen '打开数据库
'FRec.Open "functionsub", Conn, adOpenStatic, adLockPessimistic
Cmd.ActiveConnection = Conn '设置 Cmd 对象的活动连接
End Sub

  • 打赏
  • 举报
回复
conn.CursorLocation=adUseClient
builderr 2002-06-27
  • 打赏
  • 举报
回复
昨天刚碰上这问题..
解决就如上边这位所说的..设定CursorLocation
mickwang 2002-06-27
  • 打赏
  • 举报
回复
conn.CursorLocation=adUseClient
SarahCla 2002-06-27
  • 打赏
  • 举报
回复
用:
Rec.movelast
intReCount=Rec.RecordCount
Rec.movefirst
就OK了。
sunjian5188 2002-06-27
  • 打赏
  • 举报
回复
在打开记录集之前定义游标
conn.CursorLocation=adUseClient

7,763

社区成员

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

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