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

Access Discussion :

Mon NumeroAuto ne s'incrémente pas


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 44
    Points : 52
    Points
    52
    Par défaut Mon NumeroAuto ne s'incrémente pas
    Bonjour tout est dans le titre:
    Sur mon formulaire création de contrat j'ai le choix entre nouveau client ou client déjà existant.
    Lorsque je sélectionne nouveau client, en vba je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunCommand acCmdRecordsGoToNew
    Tous les champs sont vides, sauf le champs de numeroauto où il y a écrit NumeroAuto entre paranthèse.
    Le problème c'est que dès que je remplis un des champs le champs numeroAuto m'indique qu'il prend la valeur d'un autre enregistrement (le précédent).
    Résultat erreur 3022, votre opération ne peut être faites. Erreur une clé n'autorise pas de doublon.
    Je tiens à signaler que les formulaires en questions autorisent les nouveaux enregistrement.
    Je ne sais pas si ça joue mais les champs dont je parle sont dans un sous-formulaire. L'enregistrement de nouveaux client en passant directement par le sous -formulaire fonctionne, par contre.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Points : 238
    Points
    238
    Par défaut
    Salut,
    Si j'ai bien compris, seul ton champs N°auto est dans le formulaire, tous les autre sont dans le sous formulaire.
    Ou bien tous les champs sont dans le sous formulaire ???

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 44
    Points : 52
    Points
    52
    Par défaut
    Tout est dans le sous-formulaire!

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Comment sont liés le formulaire et son sous formulaire ? Y a t'il une relation champ père/champ fils ? Peux tu nous donner la structure de tes tables mises en jeu ici ?

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 44
    Points : 52
    Points
    52
    Par défaut
    Alors oui il y a une relation père fils. Elles proviennent de requêtes qui se basent sur la table client qui est relié à la table téléphone:

    TELEPHONE:
    -Id tel (numeroauto+primary key)
    -Numero TEL
    -ID client

    CLIENT:
    -Id client (numeroauto +primary key)
    -civilité
    -nom
    -nom époux
    -prénom
    -adresse
    -cp
    -ville
    -pays
    -date naissance
    -lieu naissance
    -email


    J'ai essayé de remplacé les requêtes(champs père fils) par les tables en questions, ça n'a pas résolu le problème si j'utilise directement le formulaire du sous formulaire on peut créer des nouveaux enregistrements mais par contre on ne peux pas en passant par le formulaire création contrat.
    Je tiens à signaler que les propriétés permettant la modification et l'ajout de données sont sur autorisées.(dans le cadre sous-formulaire et les deux formulaires concernés.)

    EDIT:J'utilise Access 97 et je crois que le problème viens du fais qu'en changeant une valeur appartenant au sous formulaire la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunCommand acCmdRecordsGoToNew
    est annulée.
    Malheureusement je ne peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.CadreSousFormulaire.Form.Recordset.AddNew
    car elle n'existe pas sur ACCESS 97!!
    EDIT2:
    Bon j'ai réussi à résoudre une partie du problème.
    Sous access 97 on est obligé de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.GoToRecord acForm, "FormulaireContrat", acNewRec
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunCommand acCmdRecordsGoToNew
    Comprends pas pourquoi mais bon ça marche. Par contre je suis preneur d'une explication!

    Par contre j'ai une erreur qui apparait mais qui me permis quand même de continuer à enregistrer!:
    Vous avez essayé de donner une valeur null à une variable qui n'est pas du type de données variante.
    ça s'affiche pour n'importe quel champ que je remplis mais une seule fois.

  6. #6
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    question toute simple : dans la table, tu réussis à créer une nouvelle ligne ?
    En effet, une fois, j'ai rencontré un souci vraiment étonnant : le compteur du numéro auto repartait sur une valeur antérieure aux valeurs inscrites.
    Ainsi, dans la table, il y avait, par exemple :

    1 toto
    2 titi
    3 tutu

    si je voulais ajouter tata, il tentait de m'ajouter
    2 tata

    Bien sûr, cela ne fonctionnait pas.

    Si cette erreur se produit chez toi, essaie déjà de compacter ta base.
    Si le compactage ne suffit pas, on verra une méthode pour te permettre de retrouver tes petits. Mais ce sera plus long.


    Par contre, si tu peux saisir directement dans ta table, le problème vient de ton formulaire. Et là, il va falloir examiner cela plus en profondeur

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 44
    Points : 52
    Points
    52
    Par défaut
    J'arrive maintenant à insérer un nouveau enregistrement comme je l'ai cité dans le 2ème EDIT de mon dernier message.
    Le problème c'est le warning m'indiquant que j'essaye de mettre un NULL dès que je rentre une donnée. Le message en question apparait pour n'importe quel champs. Il est cité dans mon 2ème edit!

  8. #8
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    OK ok !
    MEA CULPA !

    Il te parle de variable, sauf erreur de ma part, qui n'est pas de type variant.
    Donc, mets un point d'arrêt dans ton programme
    trouve la ligne qui pose problème.
    Tu y trouveras, normalement, soit une définition de variable, soit l'appel d'une procédure (Méthode, Fonction, Instruction) dans laquelle tu souhaite entrer un NULL

    Bonne recherche.

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 44
    Points : 52
    Points
    52
    Par défaut
    Le problème c'est que j'ai défini aucune variable.
    Et les champs fonctionnent tous sur le sous formulaire.
    Mais il me dit que je rempli une variable qui n'est pas une variant .
    Je comprends rien , mais je continue à chercher.

  10. #10
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 44
    Points : 52
    Points
    52
    Par défaut
    J'ai forcé via VBA une information dans le champs civilité.
    Résultat plus de message d'alerte!

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Maxence HUBICHE Voir le message
    question toute simple : dans la table, tu réussis à créer une nouvelle ligne ?
    En effet, une fois, j'ai rencontré un souci vraiment étonnant : le compteur du numéro auto repartait sur une valeur antérieure aux valeurs inscrites.
    Ainsi, dans la table, il y avait, par exemple :

    1 toto
    2 titi
    3 tutu

    si je voulais ajouter tata, il tentait de m'ajouter
    2 tata

    Bien sûr, cela ne fonctionnait pas.

    Si cette erreur se produit chez toi, essaie déjà de compacter ta base.
    Si le compactage ne suffit pas, on verra une méthode pour te permettre de retrouver tes petits. Mais ce sera plus long.


    Par contre, si tu peux saisir directement dans ta table, le problème vient de ton formulaire. Et là, il va falloir examiner cela plus en profondeur

    Bonjour, cette erreur se produit chez moi. j'ai donc compacter ma base (c'est la première fois que je la compacte, je ne savais pas qu'il fallait le faire régulièrement) mais mon problème reste entier. en effet, c'est à partir du numéro 538 que le numéroAuto est reparti à zéro (enfin je crois) lorsque j'ai compris d'où venait mon problème il était à 6. A force d'essayer de créer de nouvelles entrées et grâce au compactage j'en suis à 22, mais je me vois mal compacter encore 516 fois. Y aurait-il une autre solution?
    merci d'avance
    ps: je suis sur Access 2000 !

  12. #12
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,
    Citation Envoyé par pbAccess Voir le message
    [...] c'est à partir du numéro 538 que le numéroAuto est reparti à zéro (enfin je crois) lorsque j'ai compris d'où venait mon problème il était à 6. A force d'essayer de créer de nouvelles entrées et grâce au compactage j'en suis à 22, mais je me vois mal compacter encore 516 fois. Y aurait-il une autre solution?
    Confronté à ce problème, j'avais pondu une petite procédure VBA pour recaler le champ de type NuméroAuto d'une table.

    La voici (tu verras qu'elle est de type "force brute"):
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Public Sub RecalerNuméroAuto(sNomTable As String, sNomChampAuto As String)
        Dim oRS As DAO.Recordset, nMax As Long, nAuto As Long, SQL As String
     
        SQL = "SELECT * FROM [" & sNomTable & "] ORDER BY [" & sNomChampAuto & "] DESC"
     
        Set oRS = CurrentDb.OpenRecordset(SQL, dbOpenDynaset)
     
        If oRS.RecordCount > 0 Then
            nMax = oRS.Fields(sNomChampAuto)
     
            Do
                oRS.AddNew
                nAuto = oRS.Fields(sNomChampAuto)
                oRS.CancelUpdate
            Loop While nAuto < nMax
        End If
     
        oRS.Close
    End Sub

    Pour l'utiliser, à partir de l'environnement de développement de VBA, tu peux aller dans la fenêtre de débogage et saisir, par exemple pour recaler le n° auto de la table CLIENT:
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    RecalerNuméroAuto "CLIENT", "Id client"

    Cependant, pour régler "définitivement" le Pb, il vaudrait mieux mettre à jour le moteur de bases de données JET sur tous les postes où s'exécute Access.
    Une petite recherche sur le forum...
    _

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

Discussions similaires

  1. [Flex3] Pourquoi mon ArrayCollection ne s'incrémente pas ?
    Par lou87 dans le forum Flex
    Réponses: 2
    Dernier message: 29/11/2012, 14h50
  2. Mon compteur n'incrémente pas
    Par louay02 dans le forum Débuter
    Réponses: 3
    Dernier message: 29/05/2011, 19h36
  3. Mon dessin ne s'affiche pas au lancement...
    Par Deedier dans le forum MFC
    Réponses: 6
    Dernier message: 02/05/2005, 16h29
  4. [JApplet]mon applet ne s'affiche pas.
    Par yannick56 dans le forum Applets
    Réponses: 6
    Dernier message: 27/05/2004, 17h05
  5. Mon script cron n'est pas pris en compte
    Par tomnie dans le forum Linux
    Réponses: 11
    Dernier message: 31/03/2004, 11h19

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