Objet Command

Signaler
Messages postés
25
Date d'inscription
lundi 31 juillet 2006
Statut
Membre
Dernière intervention
18 octobre 2006
-
Messages postés
25
Date d'inscription
lundi 31 juillet 2006
Statut
Membre
Dernière intervention
18 octobre 2006
-
Bonjour,

je suis débutant avec ADO sur VB pour Excel, et je n'arrive pas à utiliser l'objet Command correctement.

Au niveau de l'execution, le compilateur me dit :

The connection cannot be used to perform this operation. It is either closed or invalid in this context.


Ce n'est pas une erreur de connection parce que j'arrive à utiliser les recordset sans problèmes; mais des qu'il s'agit de command ...


Quelqu un peut il m aider ?


Mon code :




Dim con As ADODB.Connection<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>








 







Call SeConnecter(con)








 








  Dim rs As ADODB.Recordset








  Dim rsbis As ADODB.Recordset








  Dim objCommand As ADODB.Command








  Dim lRecordsAffected As Long








  Set objCommand = New ADODB.Command








  Set rs = New Recordset








   










       
i = 8






        j = 1






       









        objCommand.CommandText = "INSERT INTO Fonds([Champ1],[Champ2])" & _








            "VALUES ('%" & ActiveSheet.Cells(i, j).Value & "%','%" & ActiveSheet.Cells(i, j + 1).Value & "%')"








 










C'est dans la ligne suivante qu'il bugue


       

objCommand.Execute lRecordsAffected, Options:=adCmdText Or adExecuteNoRecords








   
    










    rs.Close  








    con.Close








 







Set objCommand = Nothing







Set rs = Nothing






Set con = Nothing


merci pour les réponses

4 réponses

Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

Salut, personnellement je ferais plus simple à partir de ton code :

Dim con As New ADODB.ConnectionCall SeConnecter(con)<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

con.Execute "INSERT INTO Fonds([Champ1],[Champ2]) " & _

             "VALUES ('%" & ActiveSheet.Cells(i, j).Value & "%','%" & ActiveSheet.Cells(i, j + 1).Value & "%')"

 

D'autre part, il manquait un espace après [Champ2]).
Messages postés
25
Date d'inscription
lundi 31 juillet 2006
Statut
Membre
Dernière intervention
18 octobre 2006

j'ai pas mal de boucle qui entrent en ligne de compte, la j'ai simplifié le tout pour que vous ne pas vous demotiver à m'aider en mettant 100 lignes de code.

[Champ2]) " modifié mais ca ne marche toujours pas

Mais merci d'avoir répondu
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

Je n'ai pas l'habitude d'utiliser l'objet Command mais dans tous les exemples que j'ai vu, il semble être utilisé comme suit :

set rs = objCommand.Execute
Messages postés
25
Date d'inscription
lundi 31 juillet 2006
Statut
Membre
Dernière intervention
18 octobre 2006

Je viens de comprendre que j'avais oublié d'affecter la connection à la base à la commande; j'ai donc ajouter un objCommand.ActiveConnection=con

Mais ma requete semble etre fausse et je ne trouve pas mon erreur.

Merci pour ta réponse Dolphin Boy mais je n'arrive pas à le manipuler comme ca.


Neimad58