ADO.RecordCount est égal à - 1 problème
Lorsque j'ai jamais essayer d'accéder à la propriété RecordCount, je reçois toujours une valeur de retour -1. Ci-dessous mon code d'exemple.
Set oConn = Server.CreateObject ("ADODB.Connection")
oConn.Open Application("strConnectstring")
Set rs = Server.CreateObject ("ADODB.Recordset")
rs.ActiveConnection = oConn
SQL = "Publications_PicoSearchListing"
set rs = oConn.execute(SQL)
Je ne suis pas sûr si je suis en train de faire forwardCursor ou les curseurs dynamiques, ou si le fournisseur prend même en charge la propriété RecordCount. Comment puis-je vérifier si le fournisseur prend en charge propriété RecordCount ou si je suis en utilisant soit forwardCursor ou les curseurs dynamiques.
Toute aide serait appréciée.
Merci
OriginalL'auteur Brandon Michael Hunter | 2010-01-08
Vous devez vous connecter pour publier un commentaire.
Pour la pagination, vous pouvez utiliser le
recordset.PageSize
etrecordset.AbsolutePage
comme cevous avez alors accès à
recordset.PageCount
de connaître le nombre de pages renvoyées..en fait il lit tous les enregistrements de l'ajustement de la requête sql .. mais établit le record actuel à point à celui que vous souhaitez en fonction sur pagesize et absolutepage.. n'ai pas trouvé un moyen pour renvoyer uniquement les données que vous souhaitez, de permettre le jeu d'enregistrements à être déconnecté et aussi de maintenir les noms de champ ..
OriginalL'auteur Gabriele Petrioli
Recordcount n'est pas pris en charge avec la valeur par défaut curseur avant uniquement.
vous devez ajouter d'autres paramètres à la commande ouvrir
rs.ouvrez sql,conn., 1,1
Qui devraient vous permettre d'avoir accès à rs.recordcount.
Mais la pagination est mieux de le faire en utilisant le jeu d'enregistrements.GetRows() + Jeu D'Enregistrements.Méthode Move ().
http://databases.aspfaq.com/database/how-do-i-page-through-a-recordset.html
(faites défiler vers le bas pour le gras "jeu d'enregistrements.GetRows() + Jeu D'Enregistrements.Move()" c'est la façon la plus rapide sans l'aide de procédures stockées)
OriginalL'auteur Drew
Veuillez noter: à moins que vous vous déplacez vers la fin du jeu il n'y a aucune garantie que le RecordCount aura été rempli. La configuration standard pour itérer sur chaque ligne dans le jeu d'enregistrements à l'aide de
While Not rs.EOF
. Dans tout le code VBA que j'ai jamais écrit, je n'ai jamais compté sur la vérification ders.RecordCount
Plutôt que de vérifier le type de curseur, vous pouvez la définir. Par exemple:
Si tout ce que vous voulez, c'est le comte, pourquoi ne pas émettre un "SELECT Count(*) From Publications_PicoSearchListing"
D'Intérêt?: La compréhension de ADO Type de Curseur par Défaut
Une autre alternative pour obtenir la RecordCount est à exécuter:
et de vérifier ensuite la RecordCount, et même alors, il me semble me rappeler certains types de curseur n'est pas garanti (mais la mémoire floue sur ce sujet).
Noter également: Ne pas utiliser le MoveLast/MoveFirst, sauf si vous avez vraiment besoin: ce sera lente avec un grand jeu d'enregistrements ou d'un jeu d'enregistrements tirés à travers un réseau. Au lieu d'utiliser la fonction Count(*) technique.
N'utilisez pas de rs.MoveLast et rs.MoveFirst, cela peut conduire à une très mauvaise performance. Utiliser le select count(*) la solution de connaître le nombre d'enregistrements que vous travaillez avec.
OriginalL'auteur Mitch Wheat