源程序如下:
public function exesql(byval sql as string) as adodb.recordset
sql=trim(sql)
set conn=new adodb.connection
set rst=new adodb.recordset
conn.connectionstring="dsn=ks;uid=sa;pwd=;"
conn.open
set rst.activeconnection=conn
rst.locktype=adlockoptimistic
rst.cursortype=adopenkeyset
rwt.open sql
set exesql=rst
set rst=nothing
set conn=nothing
end functionprivate sub command1_click()
dim mrc as adodb.recordset
txtsql="select * from oper where 用户名='"& trim(text1(0).text)&"'"&"and 口令=‘“&trim(text1(1).text)+ "'"
set mrc=exesql(txtsql)
if mrc.recordcount=0 then 为什么recordcount=-1??????
....
...
else
.....
.....
end if
end sub
我现在遇到的问题是mrc.recordcount始终等于-1,就算我在数据库中手工加入一条记录,在Text(0),text(1)中输入符合的记录后,执行command1,mrc.recordcount还是等于-1,请问那位高手给说说是什么原因?
public function exesql(byval sql as string) as adodb.recordset
sql=trim(sql)
set conn=new adodb.connection
set rst=new adodb.recordset
conn.connectionstring="dsn=ks;uid=sa;pwd=;"
conn.open
set rst.activeconnection=conn
rst.locktype=adlockoptimistic
rst.cursortype=adopenkeyset
rwt.open sql
set exesql=rst
set rst=nothing
set conn=nothing
end functionprivate sub command1_click()
dim mrc as adodb.recordset
txtsql="select * from oper where 用户名='"& trim(text1(0).text)&"'"&"and 口令=‘“&trim(text1(1).text)+ "'"
set mrc=exesql(txtsql)
if mrc.recordcount=0 then 为什么recordcount=-1??????
....
...
else
.....
.....
end if
end sub
我现在遇到的问题是mrc.recordcount始终等于-1,就算我在数据库中手工加入一条记录,在Text(0),text(1)中输入符合的记录后,执行command1,mrc.recordcount还是等于-1,请问那位高手给说说是什么原因?
你使用
rs.Open txtsql, conn, adOpenKeyset
应该就没有问题了
"mrc.recordcount始终等于-1"说明语句没有执行成功!
你把txtsql语句改为下面的试试:(注意:别以为和你上面的一样,差别在全半角上) txtsql="select * from oper where 用户名='"& trim(text1(0).text)&"' and 口令='" & trim(text1(1).text) & "'"
Dim rsmy As New ADODB.Recordset
rsmy.Open "select count(*) as rc " & Mid(sql, InStr(sql, "from")), rs.ActiveConnection
Myrecordcount = rsmy("rc")
rsmy.Close
End Function再没有问题。
.....
dim mrc as adodb.recordset
mrc.CursorLocation = adUseClient
....
private sub command1_click()
dim mrc as adodb.recordset
txtsql="select * from oper where 用户名='"& trim(text1(0).text)&"'"&"and 口令=‘“&trim(text1(1).text)+ "'"
mrc.CursorLocation = adUseClient
set mrc=exesql(txtsql)
if mrc.recordcount=0 then
....
...
else
.....
.....
end if
end sub
rst.cursortype=adopenkeyset
该为
rst.locktype=adLockReadOnly
rst.cursortype=adopenkeyset
既可以了^_^
.....
dim mrc as adodb.recordset
mrc.CursorLocation = adUseClient
再加上一句,mrc.movelast
set rst.activeconnection=conn
rst.locktype=adlockoptimistic
rst.cursortype=adopenkeyset
mrc.CursorLocation = adUseClient
rwt.open sql
我看了csdn上的不少朋友都遇到了这个问题,希望能够给以参考
再次感谢