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 :

mise a jour incrémentation existante d'un champ d'une table


Sujet :

VBA Access

  1. #1
    Membre régulier Avatar de alexkickstand
    Inscrit en
    Octobre 2002
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 165
    Points : 105
    Points
    105
    Par défaut mise a jour incrémentation existante d'un champ d'une table
    bonjour, je voudrais mettre a jour l'incrémentation existante d'un champ d'une table access depuis vba

    la table est la suivante :

    Ordre|Item|Code|
    4 | 004 | SOU|
    5 | 004 | POL|
    1 | 004 | BSH|
    4 | 008 | SOU|
    5 | 008 | POL|
    1 | 008 | BSH|
    6 | 008 | SOU|
    5 | 005 | POL|
    1 | 005 | BSH|
    3 | 005 | BSH|

    je souhaiterais refaire l'ordre chronologique du champs "Ordre" comme suivant :

    Ordre|Item|Code|
    1 | 004 | SOU|
    2 | 004 |POL|
    3 | 004 |BSH|
    1 | 008 |SOU|
    2 | 008 |POL|
    3 | 008 |BSH|
    4 | 008 |SOU|
    1 | 005 |POL|
    2 | 005 |BSH|
    3 | 005 |BSH|

    merci d'avance pour de l'aide

    Alex

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 153
    Points : 161
    Points
    161
    Par défaut
    Salut,

    J'ai pas très bien compris comment est généré l'ordre à l'origine... mais ca serait plutôt à l'ajout d'un élément qu'il faudrait mettre directement le bon numéro d'ordre.

    Sinon, il te faut juste un petit algo qui doit ressembler à
    Code : 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
    20
    21
    22
     
    dim db as database
    dim i as integer
    dim rq_item as recordset
    dim rq_enr as recordset
     
    set db=currentdb()
    set rq_item=db.openrecordset("select distinct(item) from table");
    'pour chaque "item" différents : 
    while(rq_item.eof=false) 
       i=1
    'Ici j'admet qu'il y a une clé primaire dans la table que j'appelle ID
       rq_enr=db.openrecordset("select ID from table where item='" & rq_item(0) & "'");
       'on recherche tous les enregistrements correspondant
       while(rq_enr.eof=false) 
          'on les met à jour
          db.execute("update table set ordre=" & i & " where ID=" & rq_enr(0))
          i=i+1
          rq_enr.moveNext
       wend
       rq_item.moveNext
    wend
    J'ai pas testé mais l'idée doit être là.
    Mais quand même, c'est vraiment à l'ajout d'un enregistrement dans cette table qu'il faudrai simplement compter le nombre d'enregistrement ayant le même "ITEM" pour en déduire l'"ORDRE" de l'enregistrement ajouté....

  3. #3
    Membre régulier Avatar de alexkickstand
    Inscrit en
    Octobre 2002
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 165
    Points : 105
    Points
    105
    Par défaut re
    salut ! merci pour ton aide, pour preciser l'ordre chronologique a l'origine est générer par un logiciel mrp , simplement comme il y a + de 100 000 items dans la table et qu'on a regrouper les codes operations il y a des trous dans les numero

    je vais regarder ton idée rapidement en tout cas merci encore pour ton aide je te reviens la dessus

    Alex

  4. #4
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 131
    Points : 129
    Points
    129
    Par défaut
    ou tu peux toujours essayer de créer une table temporaire dans ta base (même structure que celle-là), tu lui mets çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    insert into TableTemporaire SELECT *
    FROM table
    ORDER BY Champ2, Champ1;
    puis tu remets tout dans la principale après l'avoir vidé.

  5. #5
    Membre régulier Avatar de alexkickstand
    Inscrit en
    Octobre 2002
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 165
    Points : 105
    Points
    105
    Par défaut re
    Bien Ca fonctionne a merveille ton code merci beaucoup !!!

    il me reste juste a laisser tourner pour mettre a jour les 116 000 items !!!

    merci encore

    Alex

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

Discussions similaires

  1. Mettre à jour la valeur d'un champ d'une table
    Par bestorchidee dans le forum PL/SQL
    Réponses: 2
    Dernier message: 03/03/2013, 21h42
  2. [2.x] mise a jour d'un projet après modification d'une table
    Par DidG_like dans le forum Symfony
    Réponses: 2
    Dernier message: 26/04/2012, 15h07
  3. Mise à jour des champs d'une table
    Par soso78 dans le forum Access
    Réponses: 2
    Dernier message: 14/12/2006, 15h57
  4. Module de mise à jour des champs d'une table
    Par kikaillo dans le forum Access
    Réponses: 14
    Dernier message: 18/04/2006, 09h42
  5. Réponses: 6
    Dernier message: 07/02/2006, 14h44

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