1
La valeur rs.recordcount de mssql--asp est négative 1.
Ce n'est que lorsque la base de données est appelée en mode ADO qu'il existe un nombre d'enregistrements. Lorsque vous utilisez une procédure stockée, vous devez utiliser select count(*) from table_name pour le compter vous-même. .
? C'est faux. Les procédures stockées peuvent également être ouvertes avec ado, par exemple : rs.open "exec SomeProc", conn, 1, 3. Ma solution est rs.open sql,conn,1,1 pour résoudre ce problème.
2
Habituellement, les gens utilisent les deux méthodes suivantes pour exécuter des instructions SQL :
Définir Rs=Conn.Execute(SqlStr)
et
Définir Rs=Server.CreateObject("ADODB.RecordSet")
Rs.Open SqlStr,Conn,CursorType,LockType
(méthodes de l'objet RecordSet, veuillez voir ici)
Puisque le curseur du jeu d'enregistrements par défaut est le curseur du serveur,
Rs.CursorLocation = adUseServer
Renvoyez donc Rs.RecordCount=-1,
Le curseur du serveur doit être remplacé par un curseur client.
Rs.CursorLocation = adUseClient
Rs.Open SqlStr, Conn, CursorType, LockType
rs.cursortype
attribut recordcount de type de curseur
---------------------------------------------
ForwardOnly 0 (par défaut) renvoie -1
Keyset 1 nombre correct d'enregistrements
Dynamique 2 -1 ou nombre d'enregistrements incorrect, selon la source de données
Statique 3 nombre correct d'enregistrements
donc Rs.CursorLocation = 3
Recordset.support("property name") peut être utilisé pour tester si la propriété est prise en charge.
http://www.dwww.cn/new/20051128112149636.html
3
Définir oRs = Server.CreateObject("ADODB.RecordSet")
oRs.Open SQL, oConn, 1, 1
Pour lire des données,
sinon utilisez Select Count(*) As RecordCount From [table]
oRs("RecordCount") pour obtenir
ou utiliser Do While Not oRs.Eof
CompteEnregistrement = CompteEnregistrement + 1
Boucle
4Ma base de données est connectée comme ceci :
strconn = "DRIVER=Pilote Microsoft Access (*.mdb);DBQ=" & Server.MapPath("bbs.mdb")
set conn = serveur.createobject("adodb.connection")
conn.open strconn
sql="SELECT * FROM espace "
set rs=createobject("adodb.recordset")
rs.open sql,conn,1,1
mais il y a bien un jeu d'enregistrements renvoyé et il peut être affiché