ADODB.Recordset.RecordCount 问题。

wh3862881 2007-12-11 02:07:26
Public Function getLastCode(letter As String) As String
Dim rs As New ADODB.Recordset
Dim sqlstr As String


rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
'sqlstr = "select top 1 * from equipment where code like '" & letter & "#####' order by code desc"
sqlstr = "select top 1 * from equipment where code like '" & letter & "*' order by code desc"
Set rs = cn.Execute(sqlstr)

If rs.RecordCount > 0 Then
getLastCode = rs(0).Value
Else
getLastCode = letter & "000000"
End If
End Function



本人刚一直研究C#,刚接触VB 对ADODB还不熟悉,
ask:上述代码,为何rs.RecordCount 始终为0,请达人指教
...全文
398 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
neituib 2007-12-12
  • 打赏
  • 举报
回复
我特别恨菜继明!

想找到更合适的工作,通过内部推荐更容易成功

内推网 内部推荐 求职快线
zuoxingyu 2007-12-12
  • 打赏
  • 举报
回复
rs.CursorLocation = adUseClient
把游标类型改成客户端的,就可以了
白发程序猿 2007-12-11
  • 打赏
  • 举报
回复
是0的话,肯定是SQL语句的问题,就按上面说的把*改成%试一下就好了
TimLee✿ 2007-12-11
  • 打赏
  • 举报
回复
1. rs.CursorLocation = adUseClient
2. vb的sql语句通配符是 %和_
vbman2003 2007-12-11
  • 打赏
  • 举报
回复
0是没有数据返回,是你SQL语法错误,在ACCESS环境中用通配符用*,VB中是通过jet引擎执行SQL语句,JET引擎只支持%通配符
wh3862881 2007-12-11
  • 打赏
  • 举报
回复
If rs.EOF Then
getLastCode = letter & "000000"
Else
getLastCode = rs(0).Value
End If


用了这代码,但程序判断始终是EOF 无论数据库是否有记录。。
of123 2007-12-11
  • 打赏
  • 举报
回复


'Set rs = cn.Execute(sqlstr)
rs.Open sqlstr, cn
wh3862881 2007-12-11
  • 打赏
  • 举报
回复
RecordCount是0还是-1?

RecordCount的值 是0 是不-1
-1 是因为游标设置问题,这个我知道
of123 2007-12-11
  • 打赏
  • 举报
回复

If rs.EOF Then
getLastCode = letter & "000000"
Else
getLastCode = rs(0).Value
End If
  • 打赏
  • 举报
回复
RecordCount是0还是-1?
wh3862881 2007-12-11
  • 打赏
  • 举报
回复
Set cn = New ADODB.Connection
cn.CursorLocation = adUseClient
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\E0508.mdb;Persist Security Info=False;Jet OLEDB:Database Password=hwrj"
cn.Open




cn的设置代码。。
_码农一个_ 2007-12-11
  • 打赏
  • 举报
回复
rs.CursorType = adOpenStatic 是对的
但是数据库连接cn 类型是否设置正确?
  • 打赏
  • 举报
回复
Sorry,我发错了,没仔细看,原来是like语法的问题。

算我没说:)
wh3862881 2007-12-11
  • 打赏
  • 举报
回复
sqlstr = "select top 1 * from equipment where code like '"& letter &"%' order by code desc


sqlstr = "select top 1 * from equipment where code like '"& letter &"*' order by code desc

我在ACCESS数据库中运行过,是可以查询到记录的·通用。
SQL语句无任何问题
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20071206/12/24be2e04-1772-4148-8f67-ec6f91845d46.html
vbman2003 2007-12-11
  • 打赏
  • 举报
回复
ACCESS数据库,VB中查询like语句中的“*”要改为"%"号




sqlstr = "select top 1 * from equipment where code like '"& letter &"%' order by code desc"


vb学生管理系统源代码 部分代码 Public UserName As String Public txtSQL As String 'use to store record SQLsentence Public dream As ADODB.Recordset 'use to store record object Public Msgtext As String '用来存放返回信息 Public OK As Boolean ' 'Public db As String Public Sub highlight() With Screen.ActiveForm If (TypeOf .ActiveControl Is TextBox) Then .ActiveControl.SelStart = 0 .ActiveControl.SelLength = Len(.ActiveControl) End If End With End Sub Sub Main() 'Dim Login As New Login 'Login.Show vbModal 'f Not Login.OK Then 'Login Failed so exit app ' End 'End If 'Unload studentmdi ' Set login = New login login.Show End Sub Public Function connectstring() As String connectstring = "Provider=Microsoft.jet.OLEDB.3.51;Data source=f:\schoolgroup\school.mdb" End Function Public Function ExecuteSQL(ByVal SQL As String, Msgstring As String) As ADODB.Recordset Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim sTokens() As String On Error GoTo ExecuteSQL_Error sTokens = Split(SQL) Set cnn = New ADODB.Connection cnn.Open connectstring If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then cnn.ExecuteSQL Msgstring = sTokens(0) & "query successful" Else Set rst = New ADODB.Recordset rst.Open Trim(SQL), cnn, adOpenKeyset, adLockOptimistic Set ExecuteSQL = rst Msgstring = "查询到" & rst.RecordCount & " 条记录" End If executeSQL_exit: Set rst = Nothing Set cnn = Nothing Exit Function ExecuteSQL_Error: Msgstring = "查询错误:" & err.Description Resume executeSQL_exit End Function Public Function Testtxt(txt As String) As Boolean If Trim(txt) = "" Then Testtxt = False Else Testtxt = True End If End Function
SQL+VB做成的licit Public gUserName As String Public gUserKind As String Public gEmployeeId As String Public gLoginSucceeded As Boolean Public Const BLUE = &HFF0000 Public Const WHITE = &H80000005 Sub Main() Dim fLogin As New frmLogin '启动登录窗体 fLogin.Show vbModal '装入并显示模式窗体。 If Not gLoginSucceeded Then MsgBox "系统启动失败,请重试!", vbOKOnly + vbExclamation, "警告" End If Unload fLogin End Sub Public Function ConnectString() As String ConnectString = "Provider=SQLOLEDB.1;Password=sa;User ID=sa;Initial Catalog=DBManPower;Data Source=127.0.0.1;" End Function Public Function ExecuteSQL(ByVal SQL As String, rst As ADODB.Recordset, _ Optional enableWrite As Boolean = True) As Boolean Dim con As ADODB.Connection Dim sTokens() As String On Error GoTo Execute_Error sTokens = Split(SQL) Set con = New ADODB.Connection con.Open ConnectString '打开数据库 Set rst = New ADODB.Recordset If enableWrite Then '读写方式 rst.Open Trim$(SQL), con, adOpenStatic, adLockOptimistic Else '只读方式 rst.Open Trim$(SQL), con, adOpenStatic, adLockReadOnly End If ExecuteSQL = True Exit Function Execute_Error: ExecuteSQL = False Exit Function End Function Public Function DBExist(ByVal SQL As String) As Integer Dim con As ADODB.Connection Dim sTokens() As String Dim flag As String Dim rst As ADODB.Recordset sTokens = Split(SQL) Set con = New ADODB.Connection con.Open ConnectString flag = ExecuteSQL(SQL, rst, False) '判断该记录是否存在 If rst.RecordCount <> 0 Then DBExist = rst.RecordCount Else DBExist = 0 End If con.Close End Function Public Function txtIsNull(txt As TextBox) As Boolean If Trim(txt.Text) = "" Then txtIsNull = True txt.SetFocus txt.BackColor = BLUE Else txtIsNull = False End If

7,785

社区成员

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

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