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

IHM Discussion :

[FORMULAIRE et VBA] Code de référence avec numéro auto


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 49
    Points : 29
    Points
    29
    Par défaut [FORMULAIRE et VBA] Code de référence avec numéro auto
    Bonjour à tous,

    J'utilise cette fonction dans un champ d'un formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Calculer_CodeRef()
      If Not IsNull(Me.text_Date) Then
        Me.text_CodeRef = Format([date], "yymmdd") & "000"
      End If
    End Sub
    Je veux en faire ma clé primaire. J'aimerais que "000" s'incrémente tout seul... j'ai fais plusieurs recherches sur le forum et sur la FAQ, sans succès... je trouve pas.


    Merci beaucoup!

  2. #2
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    pourtant dans la il y a la réponse

    Comment créer son propre numéroAuto ?


    Dolphy

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 49
    Points : 29
    Points
    29
    Par défaut
    C'est gênant ça lol... J'avais vraiment les yeux fermés alors... Merci pour m'avoir éclairé... J'y jete un coup d'oeil tout de suite.

    Merci beaucoup

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 49
    Points : 29
    Points
    29
    Par défaut
    J'ai finalement réussi à faire quelque chose... Cependant, je me demandais à quoi sert cette fonction qui se trouve dans la FAQ :

    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
    23
    Public Function Init_numeroAuto()
    Dim rs As DAO.Recordset
    Dim i As Long
     
    On Error Resume Next
     
    Set rs = CurrentDb.OpenRecordset("Table1", dbOpenDynaset)
     
    i = 1
     
       While Not (rs.EOF)
       rs.Edit
       rs!num = i
       rs.Update
     
       rs.MoveNext
       i = i + 1
       Wend
     
    rs.Close
    Set rs = Nothing
     
    End Function
    Il est écrit :
    et pour réinitialiser les numéroAuto :
    Mais je comprends pas où installer ce code et l'utilité? Merci de m'éclairer, je suis nouveau dans le domaine d'acces et de VBA.

    Merci encore.

  5. #5
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    Le premier code parcours la table pour récupérer la valeur de Num du dernier enregistrement, il lui donne au nouvel enregistrement la valeur + 1.
    Prend par exemple une table avec 20 enregistrements tu efface la 10ème, lorsque tu exécute ce code il te donne pour le nouvel enregistrement 21 alors que tu n'as que 20 enregistrements.
    C'est là qu'intervient le deuxième code, il parcourt toute ta table et réaffecte la valeur de Num en partant de 1.
    Attention tout de même car si tu as des liaisons ton enregistrements 11 devient alors 10.

    Dolphy

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 49
    Points : 29
    Points
    29
    Par défaut
    Merci beaucoup Dolphy35 pour les détails.

    Maintenant que je comprends bien cette FAQ et le fonctionnement de son code, je ne vois pas et n'arrive pas à trouver comment je serais capable d'arriver à ce que mon Code_Réf soit composé de la date de la réservation (yy/mm/jj) + un numéro de 3 chiffres (000) incrémenter de 1 à chaque nouvelle réservation enregistrer pour la meme date.

    Mon code de référence ressemblerait à ceci: yymmjj001, etc.

    Merci d'avance.

  7. #7
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    pour la date, tu peux utiliser Format :
    Ensuite tu peux utiliser Mid pour extraire les numéro et ajouter +1

    Dolphy

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 49
    Points : 29
    Points
    29
    Par défaut
    Merci beaucoup Dolphy35.

    Après quelques recherches et essais-erreurs, j'en suis venu à la conclusion d'utiliser pour mon cas une requête. J'ai penser faire une requête (Requête1) qui pour l'instant est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT num
    FROM Table1
    WHERE LEFT([num], LEN([num])-3) = [para_date];
    Cette requête affiche donc tout les Code_Réf du champ num de table1 qui sont égals à la date de la réservation sous forme "ddmmyyyy". Et c'est là que je voudrais donc utiliser requête1 à la place de table1.

    Le code qui suit, est le code utiliser dans la FAQ d'access qui fonctionne avec une table... j'aimerais le modifier pour qu'il fonctionne avec une requête qui est dans mon cas requête1. Le but est que la requête soit exécutée, si elle est vide, ça veut donc dire qu'il n'y a pas d'enregistrement pour la même date que celle en cours, donc la date de la réservation+001 forment donc mon Code_Ref pour l'enregistrement en cours. Sinon il va à la fin de la requête et ajouter +1 au champ num (Code_Ref) de table1 au dernier enregistrement pour former le Code_Ref pour l'enregistrement en cours.

    Voici le code utiliser dans la FAQ, lequel j'ignore comment modifier pour le rendre fonctionnel avec ma requête.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim rs As DAO.Recordset
     
    Set rs = CurrentDb.OpenRecordset(Me.RecordSource, dbOpenSnapshot)
     
       If rs.EOF Then
       Me!Num = 1
       Else
       rs.MoveLast
       Me!Num = rs!Num + 1
       End If
     
    rs.Close
    Set rs = Nothing
    Tout ça semble compliquer... j'espère avoir été assez précis dans mes explications.

    Joyeuses fêtes à tous,
    Merci d'avance
    Sim.

Discussions similaires

  1. Persistance d'une Entity avec Numéro Auto
    Par mesken dans le forum Persistance des données
    Réponses: 7
    Dernier message: 15/11/2011, 10h05
  2. Insertion avec numéro auto
    Par Imageek dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/04/2010, 15h32
  3. [BO 5.1.8]Problemes avec Numéro autos sur Mysql
    Par zalalus dans le forum Designer
    Réponses: 10
    Dernier message: 17/10/2007, 17h41
  4. insert avec numéro auto violation de clé
    Par cgodefrw dans le forum Access
    Réponses: 4
    Dernier message: 25/01/2007, 15h28
  5. [VBA EXCEL] Protection feuille avec filtre auto
    Par mirumoto dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/01/2006, 10h48

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