Autorisation d'insertion VB Access

cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 - 13 juil. 2007 à 10:17
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 - 13 juil. 2007 à 11:48
Salut a tous,

voila, je suis sous VBA access, et je crée une table temporaire pour y inserer des données provenant d'une table externe. Donc, j'utilise une ADODB.Connection, je me connecte à la base externe et j'execute une requete d'insertion sur ma base courante. Le probleme intervient lors de l'execution de la requete.

En effet, un message d'erreur me dit que je n'ai pas l'autorisation de faire cela sur la table temporaire:
"  Impossible d'ajouter des enregistrements, pas d'autorisations d'insertion sur 'Table_Temp' "

Est ce que quelqu'un sait comment (par code ou par Access directement) me donner cette autorisation ?

Les tables sont identiques, la connexion est correcte, c'est sur.J'ai deja essayé d'aller dans les options d'Access mais les droits du propriétaire ne change rien.

Je vous mets le code au cas ou.

        'Création d'une table temporaire
SQL = "CREATE TABLE Table_Temp(" & _
      "Num Numeric PRIMARY KEY," & _
      "Référence Text(50)," & _
      "[Module ou Fonction] Text(50)," & _
      "[From] Text(50)," & _
      "To Text(50)," & _
      "Priorité Text(50)," & _
      "Type Text(50)," & _
      "[Etat de l'anomalie] Text(50));"


DoCmd.RunSQL SQL


acn.Execute "INSERT INTO Table_Temp IN '" & CurrentProject.Path & "" & CurrentProject.Name & "'" & _
            "SELECT * FROM ANOMALIES"

MERCI

6 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 juil. 2007 à 10:27
tu peux faire transiter les infos par un Recordset...
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
13 juil. 2007 à 10:37
Je suis bete, j'aurais du penser a presicer que c'est ma solution de depart et qu'elle marche tres bien mais je me dis que ce code sera certainement plus lent qu'une requte si le nombre d'enregistrements est trop important:

For i = rs.AbsolutePosition To LastRecord


   rstemp.AddNew
   rstemp.Fields("Champ1").value = rs.Fields("Num").value
   rstemp.Fields("Champ2").value = rs.Fields("Référence").value
.....
....
....
....

Next
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 juil. 2007 à 10:56
optimisation possible :

Dim oField As Field
rstemp.AddNew
For Each oField In rs.Fields
With oField
rstemp.Fields(.Name).Value = .Value
End With
Next oField
...
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
13 juil. 2007 à 11:19
C'est sympa de me proposer des optimaisations. Mais j'y avais pensé mais etant données que je ne prend pas tous les champs, il vaut mieux que je reste comme ca. A moins que je puisse modifier la collection, et la je prend cette solution mais je sais pas si c'est possible.

Sinon, tu penses que la difference sera enorme entre un rs et une requete ? Au pire je ferais un petit test.

Et aussi, tu ne vois pas d'ou peut provenir cette autorisation manquante ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 juil. 2007 à 11:37
aucune idée :p

peut etre le fichier Access est verrouillé ?
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
13 juil. 2007 à 11:48
En fait, je vois pas pourquoi en rs je peux et pas en requte SQL. C'est parce qu'elle est utilisé via une connexion a une base externe ?

Et verouillé, je sais pas mais c'est de la que j'execute mon code.
0
Rejoignez-nous