2010-06-30 7 views
0

Merci dretzlaff17 pour répondre,SP à partir de SQL Server 2005 ne retourne pas dans les enregistrements d'enregistrements (VB6)

Je giveing ​​détails ..........

SP à partir de SQL Server 2005 est ne pas retourner les enregistrements dans recordSet (VB6) enregistrements retour sont -1. Si vous accédez aux enregistrements à l'aide de la requête et de l'ensemble d'enregistrements, le jeu d'enregistrements remplit des enregistrements.

La même chaîne de connexion est utilisée. J'ai vérifié correctement et il n'y a aucun problème dans le code écrit en VB6 pour l'objet de commande, alors quel est le problème?

Y at-il autre chose que nous devons faire tout en accédant à SQL Server 2005.

mon code est comme

Dim Conn as new ADODB.Connection 

Dim RS as new ADODB.RecordSet 

Dim CMD as new ADODB.Command 

Conn.Open "Connection String" ' Its working 

CMD.ActiveConnection = Conn 

CMD.CommandType = adCmdStoredProc 

CMD.CommandText = "SPName" 

Set RS = CMD.Execute 

Debug.Print RS.RecordCount ' /* here result is -1 means CMD is not executing and RS is not filling with records */ 

and if use 

RS.Open "Select query", conn 'then this record set is filling with records. 

Je vérifie aussi en réglant RS valeurs d'emplacement (curseur) à côté client et SP est simple, seule la requête select est présente dans le SP sans paramètres d'E/S.

Un autre enregistrement d'éléments présents dans la table de base de données n'est pas vide.

sur ce Vos pensées

plaire

Merci

Répondre

0

Pourriez-vous afficher le texte de vous stored proc? VB6 est vieux trucs, peut vous être avez juste besoin de mettre

set nocount on 

à la procédure de départ ou peut-être même exécuter cette requête comme après la connexion d'ouverture. Si cela ne permet pas d'essayer de simplifier la procédure stockée quelque chose qui fonctionne vraiment comme créer proc stocké sous forme

set nocount on 
select 1 
1

rs.RecordCount '/ * ici résultat est -1 signifie CMD n'est pas en cours d'exécution et RS est ne pas remplir d'enregistrements

Non, ce n'est pas le cas: cela signifie que le type de curseur par défaut ne prend pas en charge la propriété RecordCount.

Comme un meilleur test de contenu, essayez:

Debug.Print RS.GetString 
0

Si vous voulez un compte d'enregistrement, il est généralement préférable de le faire:

set RS = new ADODB.Recordset 
RS.Open cmd, , adOpenDynamic, adLockReadOnly 
If Not RS.EOF then Debug.Print RS.RecordCount 
RS.Close 
Questions connexes