Aide pour une incrémentation

Résolu
Nanille08 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
Nanille08 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je souhaite réaliser une base de donnée pour une collection et j'aimerais que ma clé se crée automatiquement, il faudrait quelle récupère les 3 premières lettre d'un mot, les 3 première d'un autre et quelle incrémente un numéro ensuite. Sachant que si les 6 lettres sont différentes, une nouvelle incrémentation commence. En plus il y aurait possibilité d'avoir des doublons dans la collection, du coup j'aimerais rajouter une lettre à la suite des chiffre afin de déterminer si c'est le premier exemplaire(a), le deuxième (b) ....
Est ce possible ou dans mes rêves les plus fous , et si c'est possible, comment faire ?
Je débute totalement avec access.
Merci de vos réponses.

9 réponses

  1. nippon1944 Messages postés 155 Statut Membre 3
     
    Un truc du genre :
    "livre" "mécanique" => id = "livméc" et si c'est pas le premier "licmécX" où X vaut "a", puis "b", etc ?

    Je te conseille d'avoir quand même une key primaire en numéro auto_increment, parce si tu commence à chercher sur ta clé avec des doublons ça va mettre le bazar (il me semble)

    Je peux pas t'être d'une grande aide à part te souhaiter bon courage pour ton développement :)
    0
  2. Nanille08 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
     
    Hummm pas tout compris, je débute totalement, mais en gros le code que je veux obtenir sera celui qui permettra de nommer chaque échantillon, donc il faut que je trouve comment réussir à la faire automatiquement. Je me vois mal devoir rentrer ça à chaque fois, surtout devoir retrouver le dernier numéro donné pour mettre le suivant.
    Normalement il ne peut pas y avoir de doublons sur une clé d'après ce que j'ai pu comprendre depuis 2 jours que je débute avec access non ?
    0
  3. blux Messages postés 5032 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    si c'est une clé primaire, alors les doublons sont interdits...

    Pour une clé primaire personnalisée, tu peux faire des recherches sur google, il y a de la matière...
    0
  4. castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217
     
    Bonjour
    Un exemple que j'ai utilise dans une base
    Un N°auto plus champ saison.
    Ce qui me créeé une cle primaire dans un champ IdAdhIns

    Saison et IdAdh sont des champs present dans le formulaire
    Ce qui me donne par exemple 2010\2011~1544
    Private Sub IdAdhIns_Enter()
    Dim AdhIns, AdhIns1
    'calcul la clé primaire
    AdhIns = Left([Saison], 9) & "~" & Right([IdAdh], 4)
    'AdhIns1 = Mid([Code activité], 1, 4)
    Me.[IdAdhIns] = AdhIns
    End Sub

    Si cela peut d'aider
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Nanille08 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci pour vos réponses, j'ai encore quelques problèmes de code mais je devrais y arriver.
    0
  7. Nanille08 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
     
    Voilà mon code :
    Option Compare Database

    Function fNumAutoTxt(strTbl$, strFldAuto$, strTxtStart$, intLenId%) As String
    '** La référence "Microsoft DAO x.x Object Library est nécessaire
    '** sur l'événement "Après mise à jour" qui consitue "strTxtStart"

    Dim rst As DAO.Recordset
    Dim strRst As String
    Dim lngId As Long

    strRst = "Select [" & Clé_espèce & "] From [" & Table_Espèce & "] ORDER BY [" & Clé_espèce & "];"
    Set rst = CurrentDb.OpenRecordset(strRst, dbOpenDynaset)

    With rst
    If Not .BOF Then
    .FindLast "[" & Clé_espèce & "] like """ & Embranchement & Famille & "*"" " & " AND Len([" & Clé_espèce & "]) = " & Len(Embranchement & Famille) + 4
    If .NoMatch = True Then
    lngId = 1
    Else
    lngId = CLng(Mid(.Fields(Clé_espèce), Len(Embranchement & Famille) + 1)) + 1
    End If
    End If
    End With

    rst.Close: Set rst = Nothing

    fNumAutoTxt = Embranchement & Famille & Format(lngId, String(intLenId, "0"))

    End Function

    Private Sub Embranchement_AfterUpdate()
    Me.Clé_espèce = fNumAutoTxt("Table_Espèce", "Clé_espèce", Left(Embranchement, 3) & Left(Famille, 3), 4)
    End Sub

    Private Sub Famille_AfterUpdate()
    Me.Clé_espèce = fNumAutoTxt("Table_Espèce", "Clé_espèce", Left(Embranchement, 3) & Left(Famille, 3), 4)
    End Sub

    J'ai un message d'erreur qui s'affiche : " Erreur d'exécution '3131' Erreur de syntaxe dans la clause FROM. "
    Et la ligne : Set rst = CurrentDb.OpenRecordset(strRst, dbOpenDynaset) est surlignée en jaune.

    Est ce que quelqu'un peut me dire si le code est bon ? ou sinon d'où provient mon erreur ?
    0
    1. castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217
       
      bonjour
      J'ai fait une comparaison de synthaxe entre ta raquete et une autre au hasard en reprenant les memes recherches apartir d'une table

      Ma requete

      SELECT T_Dates.IdDate, T_Dates.DateReunion, T_Dates.DateAn, T_Dates.datejour
      FROM T_Dates
      ORDER BY T_Dates.datejour;

      Ta requete

      strRst = "Select [" & Clé_espèce & "] From [" & Table_Espèce & "] ORDER BY [" & Clé_espèce & "];"

      La requete modifié suivant la synthaxe de mon exemple

      strRst = SELECT Table_Espece.Clé_espèce
      FROM Table_Espèce
      ORDER BY Table_Espece.Clé_espèce
      0
    2. Nanille08 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
       
      J'ai une erreur de compilation Attendu : Expression en modifiant mon code par le tiens, il me sélectionne SELECT
      0
    3. castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217
       
      bonjour
      c'etait un essai .
      je ne vois pas la solution
      0
    4. Nanille08 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci quand même
      0
  8. Nanille08 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
     
    J'ai réussi après moult tentatives!!
    Voici mon code si ça peut en dépanner quelques uns :

    If IsNull(Me.Clé_espèce) Then
    strCode = AutoNumber("Table_espèce", "Clé_espèce", "??????", 4)
    strCode = Replace(strCode, "??????", Format(Mid$([Embranchement], 1, 3), ">") & Format(Mid$([Famille], 1, 3), ">"))
    Me.Clé_espèce = strCode
    End If
    0