Requête SQL sans résultat en VBA (ADO)

Requête SQL sans résultat en VBA (ADO) - VB/VBA/VBS - Programmation

Marsh Posté le 17-10-2011 à 15:11:30    

Salut,
 
j'ai un bête (?) code VBA qui effectue une requête en base.
Quand j'exécute le SELECT avec SQL Server j'ai bien un résultat, en revanche en VBA/ADO sous Excel, j'ai "<3021, BOF ou EOF est égal à True ou l'enregistrement actuel a été supprimé. L'opération demandée nécessite un enregistrement actuel.>" si j'essaye de lire le résultat.

Code :
  1. Dim cnn As New ADODB.Connection
  2. cnn.Open "PROVIDER=SQLOLEDB;DATA SOURCE=" & bd & ";User ID= " & login & ";Password=" & mdp & ";Trusted_Connection=False"
  3.     req_gr_id = "select GRP_ID from GROUPE where GRP_NOM = '" & entity & "'"
  4.     Dim rs As New ADODB.Recordset
  5.     If rs.State <> adStateClosed Then rs.Close
  6.     rs.ActiveConnection = cnn
  7.     rs.Open req_gr_id, cnn
  8.     'rs.MoveFirst
  9.     GrPeres = rs(0)
  10.     rs.Close


D'ailleurs rs.RecordCount = -1 après exécution de cette requête.  
 
 :??:

Reply

Marsh Posté le 17-10-2011 à 15:11:30   

Reply

Marsh Posté le 17-10-2011 à 16:10:46    

J'ai essayé avec une autre requête, sur une autre table et une autre base, même erreur.
 
A noter que j'arrive dans le même programme, à appeler des procédures stockées sans problème (avec des cmd.Execute à la place des Recordset bien sûr).
 
J'ai essayé de replacer le Recordset par cmd.Execute du coup :

Code :
  1. With cmd
  2.         .ActiveConnection = cnn
  3.         .CommandType = adCmdText
  4.         .CommandText = "select GRP_ID from GROUPE where GRP_NOM ='" & entity & "'"
  5.         .Execute
  6.                
  7.         GrPeres = .Parameters(0).Value
  8.    End With


mais c'est pareil : 0 résultat, alors que si je fais un copier-coller du .CommandText pour l'exécuter dans SQLServer ça marche !
 
Donc je suppose que ce n'est pas un problème au niveau de la requête elle-même mais plutôt au niveau des paramètres de la connexion ??? :cry:
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed