请教大虾表中未设置主键导致SELECT语句没有返回值,为何?

mi6236 2004-01-11 09:59:56
在VB中嵌入SQL语句txtsql="select * from result"
没有返回记录,而设置主键后返回6条记录
在sql server中没有设置主键键入相同的语句返回6条记录
为何?
...全文
21 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
liyd1978 2004-01-13
http://expert.csdn.net/Expert/topic/2622/2622049.xml?temp=.529751
  • 打赏
  • 举报
回复
mi6236 2004-01-13
难道真的没有高手解答菜鸟的问题吗,
带红星的高手们都去那了,是我说的不明白,还是问题很难呢?
每人顶,我只好自己顶一下了.
  • 打赏
  • 举报
回复
mi6236 2004-01-11
txtsql = "select * from result_info where 1=1
Set mrc = ExecuteSql(txtsql, msgtext)'Executesql为公共模块中的公共函数
'mrc返回为nothing,rs.recordcount=-1
公共函数实现如下:
Public Function ExecuteSql(ByVal SQL As String, MsgString As String) As ADODB.Recordset
'传递参数:SQL传递查询语句,msgstring传递查询信息
'自身以一个数据集对象的形式返回
Dim con As ADODB.Connection
'定义连接
Dim rs As ADODB.Recordset
'定义字符数组来存放SQL关键字
Dim sTokens() As String
'异常处理
On Error GoTo ExecuteSql_Error
'用split函数产生一个包括各个子串的数组
sTokens = Split(SQL, " ")
'创建连接
Set con = New ADODB.Connection
'打开连接
con.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=student"
'判断字符串中是否含有指定内容
con.ConnectionTimeout = 30
con.Open
If InStr("insert,delete,update", LCase$(sTokens(0))) Then
'执行查询语句
con.Execute SQL
'返回查询信息
MsgString = sTokens(0) & "query successful"
Else
'创建查询对象
Set rs = New ADODB.Recordset
'返回查询结果
rs.Open Trim$(SQL), con, adOpenKeyset, adLockOptimistic
'rs.movelast ' get recordcount
'返回记录集对象
Set ExecuteSql = rs ' 将记录集传递给
MsgString = "查询到" & rs.RecordCount & "条记录"
End If
ExecuteSql_exit:
'rs及con对象的close在调用函数的程序中关闭
'清空数据集对象
Set rs = Nothing
'中断连接
Set con = Nothing
Exit Function
'错误类型判断
ExecuteSql_Error:
MsgString = "查询错误:" & Err.Description
Resume ExecuteSql_exit
End Function

我使用的是键集游标,你使用的是动态游标,难道查询没设主键的表必须使用动态游标吗?


  • 打赏
  • 举报
回复
809982 2004-01-11
兄弟,你弄错了吧。如果是recordset.recordcount返回无记录,更改游标,使用本地游标
recordset.cursor=local。。。

rs.open "select * from result",myconn,3,3
  • 打赏
  • 举报
回复
相关推荐
发帖
VB基础类
加入

7595

社区成员

VB 基础类
社区管理员
  • VB基础类社区
申请成为版主
帖子事件
创建了帖子
2004-01-11 09:59
社区公告
暂无公告