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 :

Incrementer un champ ligne [Sources]


Sujet :

Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Incrementer un champ ligne
    Bonjour
    j'ai une base avec 2 tables
    TBLFiche champs NumFich, DateFich , etc
    TBLArt Champs Numfich, LigneFich, ArtFich, QteFich

    la clef qui relie ces 2 tables est NumFich

    Dans le formulaire de saisie qui alimentE ces 2 tables je voudrais que le champs NumFich s'incremente automatiquement pour chaque fiche sans etre obligé de saisir comme je le fais actuellement

    Exemple si sur la fiche 158 j'ai 3 lignes articles je suis actuellemnt oblige de saisir 1 puis de saisir l'article et la quantité, puis 2 etc Puis 3
    Je voudrais que le champs LignFich s'incremente automatiquement de 1 a chaque saisie de fiche
    Un peu le meme cas je pense que si vous avez plusieur lignes sur un fomulaire de facture
    Est ce possible d'incrementer pour chaque Fiche et de reprendre a 1 pour la fiche suivante et si oui que dois je mettre sur mon controle du formulaire ?
    Merci

  2. #2
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Salut,

    Etant donné que je suis de nature préssée, pourquoi n'utilise-tu pas une type de donnée NuméroAuto pour le champ à incrémentation automatique?

  3. #3
    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
    Citation Envoyé par Mahefasoa
    Salut,

    Etant donné que je suis de nature préssée, pourquoi n'utilise-tu pas une type de donnée NuméroAuto pour le champ à incrémentation automatique?
    Tout simplement parce que :

    Est ce possible d'incrementer pour chaque Fiche et de reprendre a 1 pour la fiche suivante et si oui que dois je mettre sur mon controle du formulaire ?
    Un numAuto ne fera pas cette distinction de ce que l'on appelle en conception un identifiant relatif

    Il te reste à coder toi même cette fonction d'incrémentation en VBA à l'aide des recordsets DAO ( http://warin.developpez.com )

    Autre possibilité, utiliser quand même un numauto mais ne pas tenir compte de sa valeur. Ainsi par exemple pour la fiche 158 tu auras la ligne 1 avec la valeur 456, la 2 avec 457 et la 3 avec 500 (c'est un exemple). Dans ce cas, alors, c'est quand tu afficheras les données, à l'aide d'une requête, qu'il faudra redécaler tous les numéros en implémentant une gestion de compteur en SQL (ou bien de classement) http//access.developpez.com/sources

    Ainsi, tu auras dans ta requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    NumFiche  NumLigne NumLigneReel
    158          456          1
    158          457          2
    158          500          3
    Cette dernière solution a l'énorme avantage de ne pas nécessiter de code VBA et surtout d'être compatible avec une utilisation multi-utilisateurs. La gestion du numAuto (c'est à dire l'ordre des lignes) est confiée ainsi directement au moteur de base de données. Avec la solution VBA, si deux utilisateurs insèrent des lignes pour la même fiche, cela va coincer, les deux lignes auront alors le même numéro.

    Bon courage, mais le jeu en vaut la chandelle

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 394
    Points : 19 816
    Points
    19 816
    Billets dans le blog
    66
    Par défaut
    Bonjour,

    Est-ce que cette solution dans une requête conviendrai avec un autre numéro auto (LigneFiche) dans la table TBLArt:

    Dans une requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LigneReel: DCount("NumFich";"TBLArt";"NumFich=" & [NumFich] & " And LigneFich<" & [LigneFich])+1
    Ou en VBA:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function NumLigneReel(NumFich As Long, LigneFich As Long)
    Dim rs As Recordset
     
    Set rs = CurrentDb.OpenRecordset("Select Count(NumFich) As Count from TBLArt where NumFich=" & NumFich & " and LigneFich<" & LigneFich, dbOpenForwardOnly)
     
    NumLigneReel = rs!Count + 1
     
    rs.Close
     
    End Function
    et dans la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LigneReel: NumLigneReel([NumFich],[LigneFich])

  5. #5
    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
    Ah ben je prefère la solution VBA mais je pense que ce serait aussi possible avec une simple sous requête

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 394
    Points : 19 816
    Points
    19 816
    Billets dans le blog
    66
    Par défaut
    Salut,

    Avec une sous requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT NumFich, LigneFich, (Select (Count(NumFich)) From TBLArt A2 Where A2.NumFich= A1.NumFich  And A2.LigneFich<= A1.LigneFich) AS LigneReel, ArtFiche, QteFich
    FROM TBLArt AS A1
    ORDER BY NumFich, LigneFich;
    mais elle n'autorise pas l'ajout ???

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    merci pour ces solutions que je vais tester et essayer de mettre en oeuvres je vous tiens informe a suivre merci beaucoup

  8. #8
    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
    mais elle n'autorise pas l'ajout ???
    En effet

    Donc le VBA sans aucun doute

    pour cette solution User

Discussions similaires

  1. incrementer un champ independant
    Par poxvx dans le forum IHM
    Réponses: 3
    Dernier message: 20/09/2007, 10h57
  2. Auto Increment sur champs numérique
    Par Sami Xite dans le forum Access
    Réponses: 19
    Dernier message: 09/02/2007, 16h40
  3. [MySQL] Lire la page et recuperer l'id>incrementer le champ
    Par garaut dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/11/2006, 13h23
  4. [debutant] incrementer valeur champ input text
    Par ilood dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/07/2005, 13h21
  5. incrementer un champ automatiquement
    Par vijeo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/01/2005, 22h01

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