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 :

Auto Increment sur champs numérique


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 208
    Points : 76
    Points
    76
    Par défaut Auto Increment sur champs numérique
    Bonjour,

    J'ai un champs A numérique dans un formulaire pour lequel je voudrais une auto incrémentation lorsque je crée un nouvel enregistrement. En gros je voudrais que A prenne la valeur = (Valeur la + grande de A)+1

    Merci d'avance

  2. #2
    Membre actif Avatar de Gary_Stoupy
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 244
    Points : 232
    Points
    232
    Par défaut
    Bonjour,

    Pourquoi ne change tu pas le type de ton champ dans la table ??? Et tu le mets en Numéro auto...
    ou alors, à chaque insertion d'un nouvel enregistrement, tu récupère le numéro le plus grand et tu l'incrémente toi-même...

    Si c'est bien ce que tu demandes

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 208
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par Gary_Stoupy
    Bonjour,

    Pourquoi ne change tu pas le type de ton champ dans la table ??? Et tu le mets en Numéro auto...
    ou alors, à chaque insertion d'un nouvel enregistrement, tu récupère le numéro le plus grand et tu l'incrémente toi-même...

    Si c'est bien ce que tu demandes
    Bonjour,

    Impossible de changer ton type de champs en auto increment sur de l'existant
    Pour ta 2° proposition j'aimerais que cela se fasse automatiquement

    Merci

  4. #4
    Membre actif Avatar de Gary_Stoupy
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 244
    Points : 232
    Points
    232
    Par défaut
    quand je disais tu l'incrémente toi meme, ca se fera automatiquement avec du code... il faut que tu crées un RecordSet ou alors tu passe par une liste

    tu fais une requete SQL du type

    Dim SQL as String
    SQL = "SELECT Max(tonNumero) FROM taTable"

    avec le recordset, tu récupère le numéro renvoyé puis tu l'incrémente...
    et enfin, tu insère ton nouvel enregistrement avec le numéro incrémenté

    j'ai toujours pas bon ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 208
    Points : 76
    Points
    76
    Par défaut
    Salut,

    J'en suis là avec mon bouton nouveau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Nouveau_Click()
    Dim SQL As String
    SQL = "SELECT Max(mon_champs) FROM ma_table"
    DoCmd.GoToRecord , , acNewRec
    Me.mon_champs = SQL+1
    End Sub
    Mais ça ne fonctionne pas
    mon_champs est de type numérique

    Encore merci

  6. #6
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Points : 367
    Points
    367
    Par défaut
    Bonjour,

    Gary t'a suggéré de créer un recordset.

    A+

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 208
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par soltani1
    Bonjour,

    Gary t'a suggéré de créer un recordset.

    A+
    C'est la création du Recordset qui me pose problème ...C'est mon premier

    Gracias

  8. #8
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    pense à regarder dans la FAQ : http://access.developpez.com/faq/?rechercher=recordset

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 79
    Points : 44
    Points
    44
    Par défaut
    bonjour,
    Regardes un plus bas
    j'ai été aidé sur ce sujet.. si ç'a peux aider...

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 208
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par DuDe92
    bonjour,
    Regardes un plus bas
    j'ai été aidé sur ce sujet.. si ç'a peux aider...
    C'est à dire ?
    Parce que le sujet me semble un peu délicat à première vue

  11. #11
    Membre actif Avatar de Gary_Stoupy
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 244
    Points : 232
    Points
    232
    Par défaut
    Ca fait toujours ca la première fois (je me sentais obligé de la faire désolé)

    Bref, pour ton recordset moi je fais ca comme ca et ca fonctionne...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim rst As New ADODB.Recordset
    Dim connect As New ADODB.Connection
    Dim maxChamp as Variant
     
    rst.Open "SELECT max(MonChamps) AS Maximum FROM MaTable", connect, adOpenForwardOnly, adLockReadOnly
     
    maxChamp = rst("Maximum")
    et la tu as récupéré ton maximum (normalement héhé)

    Mais bon, je te conseille vivement de consulter la FAQ avec le lien que t'as filé cafeine...
    Tu apprendras par toi-même et c'est beaucoup plus mieux (je trouvais pas d'autre mots :p)

  12. #12
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Si il n'y a pas d'autres contraintes que le numéro auto, il assez facile d'ajouter un champ AutoNumber, ensuite supprimer le champ numérique existant et renommer le champ AutoNumber avec le nom du champ que l'on vient de supprimer.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 208
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par Heureux-oli
    Si il n'y a pas d'autres contraintes que le numéro auto, il assez facile d'ajouter un champ AutoNumber, ensuite supprimer le champ numérique existant et renommer le champ AutoNumber avec le nom du champ que l'on vient de supprimer.
    Sauf que dans le cas présent ma table contient déjà des enregistrements dont je ne peux pas modifier le numéro. En créant un champs autonumber je repars de 1

    a fait toujours ca la première fois (je me sentais obligé de la faire désolé)

    Bref, pour ton recordset moi je fais ca comme ca et ca fonctionne...)
    J'ai écrit ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Nouveau_Click()
    Dim rst As New ADODB.Recordset
    Dim connect As New ADODB.Connection
    Dim maxChamp As Variant
     
    rst.Open "SELECT max(monchamps) AS Maximum FROM matable", connect, adOpenForwardOnly, adLockReadOnly
     
    maxChamp = rst("Maximum")
    DoCmd.GoToRecord , , acNewRec
    Me.monchamps = maxchamps
    End Sub
    Et j'ai un message : Impossible d'utiliser cette connexion pour effectuer cette opération Elle est fermée ou non valide dans ce contexte

    ???

    Merci à tous

  14. #14
    Membre actif Avatar de Gary_Stoupy
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 244
    Points : 232
    Points
    232
    Par défaut
    Rajoute ça avant de faire ton rst.Open

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set connect = CurrentProject.Connection
    Cela m'était sorti de la tête...

  15. #15
    Membre actif Avatar de Gary_Stoupy
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 244
    Points : 232
    Points
    232
    Par défaut
    Mais par contre, après, pour ton insertion, je ne suis pas sur que cela fonctionne comme tu le fais mais bon...
    tente déjà ce que je t'ai dit et reviens nous voir pour la suite

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 208
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par Gary_Stoupy
    Mais par contre, après, pour ton insertion, je ne suis pas sur que cela fonctionne comme tu le fais mais bon...
    tente déjà ce que je t'ai dit et reviens nous voir pour la suite
    Effectivement il me retourne "0" pour valeur de mon champs systematiquement

    On y est presque ...

    Gracias

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 208
    Points : 76
    Points
    76
    Par défaut
    Raaaah Lovely !!!
    J'y suis arrivé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DoCmd.GoToRecord , , acLast
    Dim max As Integer
    max = Me.A + 1
    DoCmd.GoToRecord , , acNewRec
    Me.A = max
    Et ça marche !!!!

  18. #18
    Membre actif Avatar de Gary_Stoupy
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 244
    Points : 232
    Points
    232
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim rst As New ADODB.Recordset
    Dim connect As New ADODB.Connection
    Dim maxChamp as Variant
     
    Set connect = CurrentProject.Connection
     
    rst.Open "SELECT max(MonChamps) AS Maximum FROM MaTable", connect, adOpenForwardOnly, adLockReadOnly
     
    maxChamp = rst("Maximum")
     
    MsgBox maxChamp
    et si la il te renvoit 0, faut que je me creuse la tête lol

  19. #19
    Membre actif Avatar de Gary_Stoupy
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 244
    Points : 232
    Points
    232
    Par défaut
    bon ben alors mon message ne sert à rien lol...
    Bravo à toi... mais attention, la route est encore longue et semée d'embûches (de noël)

    Bonne continuation

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 208
    Points : 76
    Points
    76
    Par défaut
    Merci en tout cas

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

Discussions similaires

  1. Auto-increment sur un champ
    Par Invité dans le forum VB.NET
    Réponses: 14
    Dernier message: 20/12/2007, 18h03
  2. 0 significatif sur champ numérique
    Par tucsoufle dans le forum Access
    Réponses: 5
    Dernier message: 23/08/2006, 15h52
  3. CR9:Espace sur champ numérique après concaténation
    Par nanouille56 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 07/07/2005, 09h35
  4. [debutant]Auto incrementation sur sql-server 2000
    Par syl2095 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 18/11/2004, 18h00
  5. Pb d'auto-incrément sur une table v7
    Par Nivux dans le forum Paradox
    Réponses: 9
    Dernier message: 26/12/2002, 12h05

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