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

nippon1944 Messages postés 140 Date d'inscription   Statut Membre Dernière intervention   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
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
blux Messages postés 27122 Date d'inscription   Statut Modérateur Dernière intervention   3 360
 
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217
 
bonjour
Dans ce lien du code pour créer une clé primaire personnalisée
https://www.cjoint.com/?CFrkYcUtyyL
0
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
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
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
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
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
Nanille08 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Merci quand même
0
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
Nanille08 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Finalement c'était pas le top du top mon code.
Voilà un lien qui vous permettra de réaliser un numéro similaire avec un tutoriel très bien fait :
https://grenier.self-access.com/?post/2013/06/25/Num%C3%A9rotation-personnalis%C3%A9e-%3A-variante-3

Si ça peut aider certains
0