IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Erreur d'exécution 3001 "Argument non valide" sur modification des champs d'un recordset [AC-2003]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Par défaut Erreur d'exécution 3001 "Argument non valide" sur modification des champs d'un recordset
    bonjour,

    je bute sur une erreur 3001 lorsque j'exécute mon code VBA Access (voir plus bas).

    Ce code est assez simple : j'ai une table "Traducteurs" pour laquelle j'ajoute, quand elle n'existe pas, une colonne "AGENCE". Jusque là tout va bien.
    Ensuite, je crée un recordset, et je parcours l'ensemble des 2300 lignes du recordset pour modifier ce champ "AGENCE" en fonction de certains critères.
    (pour l'exemple, je lui donne la valeur constante "toto")

    Curieusement, la macro commence à faire la mise à jour du champ et s'arrête en plein milieu du recordset (jamais au même endroit). Le debug montre qu'il s'arrête lors de la commande ".update" du recordset.
    J'ai relu 15 fois mon code, coché la librairie microsoft DAO 3.6, et la je botte en touche !

    Merci pour votre aide
    ____________________________________

    Sub clicko()
    Dim db As DAO.Database
    Dim T_Trad As DAO.TableDef
    Dim Str_Trad As String
    Dim rst_Trad As DAO.Recordset
    Dim f As Field

    Dim i As Long

    Set db = CurrentDb
    Set T_Trad = db.TableDefs("Traducteurs")

    'test sur l'existence de la colonne AGENCE : si elle existe, on la supprime

    For Each f In T_Trad.Fields
    If f.Name = "AGENCE" Then
    T_Trad.Fields.Delete ("AGENCE")
    Exit For
    End If
    Next f


    'création de la colonne AGENCE
    T_Trad.Fields.Append T_Trad.CreateField("AGENCE", dbText, 5)

    i = 0

    Str_Trad = "SELECT Traducteurs.* FROM Traducteurs ORDER BY Noeud, [Traducteurs Numéro SDA];"
    Set rst_Trad = db.OpenRecordset(Str_Trad, dbOpenDynaset)

    With rst_Trad
    If .EOF Then
    .MoveFirst
    While Not .EOF
    i = i + 1
    .Edit
    .Fields("AGENCE").Value = "toto"
    .Update
    .MoveNext
    Wend
    End If
    .Close
    End With

    End Sub

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 122
    Par défaut
    Salutations,

    Petite question car je ne sais pas si ta base est importante ou non en terme de volume, mais est-ce que tu ne serais pas à la limite de taille d'access, c'est-à-dire 2Go ?
    Car c'est le message qu'il affiche dans ce cas. Pour en être certain, passes en mode debogage quand ton programme s'arrête et verifie le poid de ton fichier access à ce moment précis (pense bien à réactualiser sous windows aussi).

    Cordialement,

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Par défaut
    Bonjour

    Merci pour votre réponse, c'est effectivement ça. Dire que j'en ai passé, du temps, à chercher sur google des explications sur cette étrange erreur !

    Plus précisément, je n'avais pas d'erreur au début, mais j'ai l'impression qu'il y a eu des problèmes de stockage, buffer ou autre qui ont fait grossir anormalement la base de données (notamment quand j'ai cherché à réécrire sur AGENCE sans la supprimer auparavant).

    Je le vois car il y a eu une sauvegarde automatique de ma base lors d'une fermeture intempestive d'access ce midi, et la cette sauvegarde automatique faisait bien 2G.

    Maintenant elle fait 500M, ne me demandez pas pourquoi ! bon reste plus qu'à cliquer sur résolu
    bien à vous

    richard

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Argument non valide erreur 3001
    Par viktor951 dans le forum VBA Access
    Réponses: 23
    Dernier message: 26/05/2010, 17h12
  2. Erreur d'exécution 3001: Argument non valide
    Par piTz0r dans le forum VBA Access
    Réponses: 19
    Dernier message: 13/08/2008, 10h34
  3. [A2-VBA][Débutante] Erreur "Argument non valide"
    Par Ericka dans le forum Access
    Réponses: 2
    Dernier message: 08/09/2006, 17h35
  4. Réponses: 8
    Dernier message: 08/09/2006, 15h09
  5. Erreur : 'argument non valide'
    Par celticval dans le forum Access
    Réponses: 9
    Dernier message: 07/07/2006, 12h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo