tedtheOrs
Messages postés37Date d'inscriptionsamedi 12 avril 2008StatutMembreDernière intervention27 janvier 2010
-
10 févr. 2009 à 13:04
hebus16
Messages postés80Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 2 octobre 2009
-
10 févr. 2009 à 16:10
Bonjour,
Je souhaiterai lancer une requête de création de table via une macro.
La requête est correcte (à savoir, elle s'exécute correctement
lorsqu'elle est lancée en "direct"), cependant, j'obtiens une erreur
3219 / Opération invalide lorsque je l'execute via macro. L'erreur est
localisée sur la ligne en gras.
Code :
Private Sub Commande4_Click()
Dim Rs As DAO.Recordset
Set Rs = CurrentDb.OpenRecordset("Req1") While Not Rs.EOF
MsgBox Rs(0)
Rs.MoveNext
Wend
Set Rs = Nothing
End Sub
J'ai bien essayé de supprimer la table créée par la requête au préalable mais rien n'y fait.
J'ai fait quelques recherches ici et ailleurs mais j'ai l'impression
que cette erreur est plutôt "générique" et que la résolution se fait au
cas par cas!
D'avance merci.
A voir également:
Opération invalide sur création de table (Access 2003)
mamash_bek
Messages postés20Date d'inscriptionmercredi 6 juin 2007StatutMembreDernière intervention11 juin 20091 10 févr. 2009 à 15:45
Ce que veux dire Hebus c'est qu'apres avoir ouvert ta connexion à la base tu n'as pas besoin d'utiliser un recordset, il te suffit d'utiliser la methode execute de ta connexion
tedtheOrs
Messages postés37Date d'inscriptionsamedi 12 avril 2008StatutMembreDernière intervention27 janvier 2010 10 févr. 2009 à 14:22
Merci pour ta réponse!
J'avoue que j'ai choppé le code sur le net...Je ne suis pas un as en Access :D
Par contre, niveau référence, je pense que c'est bon vu que la référence Microsoft DAO 3.6 Object Library est cochée
hebus16
Messages postés80Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 2 octobre 20091 10 févr. 2009 à 14:22
Il est possible que je raconte une bêtise mais jete plutot un oeil sur la methode execute pour les delete/create et update de table. l'openRecordset doit fonctionner pour les select.
Perso Hellangel777 j'utilise moi aussi le DAO et j'en suis content :-p vieilles habitudes mais tant que ça marche et que mes temps de réponses me vont bien je suis peinard ^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
hebus16
Messages postés80Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 2 octobre 20091 10 févr. 2009 à 15:15
ok si Microsoft DAO 3.6 Object Library alors tu es bon, la librairie est bel et bien active.
Concernant l'exécution de la requête, si j'ai bien compris tu effectues une création de table par une requête. Dans ce cas là définis une Querydef
Dim QD_Requete As QueryDef
Dim DB as database
Dim S_Requete as String
Set QD_Requete = DB.QueryDefs(S_CleRequete)
S_Requete = "CREATE TABLE MACHIN MACHIN MACHIN"
DB.QueryDefs.Delete S_CleRequete ' supprime si ta requête existe deja
Set QD_Requete = DB.CreateQueryDef(S_CleRequete)
QD_Requete.Sql = S_Requete
QD_Requete.Close
' Execution de la requete
QD_Requete.Execute dbFailOnError
voilà un exemple ... d'ailleurs je viens de reagir que le querydef te servira pas forcement (elle inscrit ta requete directement dans la base de donnée et tu peux donc eviter la reconstitution de la requete en elle meme ... pas sur que cela te soit utile)
par contre là ca te permettra de faire l'execution de tes operations d'ecriture dans la base de donnée avec le Execute
hebus16
Messages postés80Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 2 octobre 20091 10 févr. 2009 à 15:54
héé ^^ le DoCmd je l'avais complètement oublié lui ^^ Faudrait peut être que je révise mes bases aussi :p
Après tout dépend de la bibliothèque utilisé et tout et tout ^^ il n,existe pas qu'une seule solution ^^ heureusement sinon on serait tous au chomage :p
tedtheOrs
Messages postés37Date d'inscriptionsamedi 12 avril 2008StatutMembreDernière intervention27 janvier 2010 10 févr. 2009 à 16:07
Merci à vous 2...En fait, j'ai repris la méthode de Mamsh_bek, en utilisant un simple
DoCmd.RunSQL("...;") qui marche parfaitement...En plus, c'est la méthode que je comprend le mieux...
Ce n'est peut être pas la plus "jolie" mais ca marche très bien!
Hebus, j'ai essayé ta méthode, mais j'avais une erreur 91, bloc With manquant...Je n'ai pas poussé plus loin...