Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Access 20036] Rajouter 1 à un champ... alphabétique

3 réponses
Avatar
Harfang
Bonjour,

Alors j'ai une requête qui me sort un regroupement sur le premier champ, et
un max sur le second, sachant que le second champ contient une suite de 4
caractères.

A la sortie, ça me donne :

Champ1 Champ2
445620 AAAA
445660 AAAA

Je voudrais rajouter une autre colonne, qui rajoute une lettre à mon champ
alphabétique, bref que ça me sorte dans l'exemple ci-dessus : AAAB. Bien sûr
si j'étais à AAAZ ça devrait me sortir AABA.

C'est faisable ? Comment ?

Merci

3 réponses

Avatar
Harfang
Oups je voulais bien sûr indiquer Access 2003, pas 20036 ^^
Avatar
Michel_D
Bonjour,

Tu crée une nouvelle Table qui contient dans un champ toutes les valeurs
possibles de ton "Champ2" et tu rajoute un 2ème champ qui correspond
à la valeur du champ que tu veux rajouter, ensuite avec une relation avec
ton 1er champ tu récupére la valeur correspondante :

Nouvelle table :
ChampA, ChampB
AAAA, AAAB
AAAB, AAAC
AAAC, AAAD
...
AAAZ, AABA
... etc

La requête pour récupérer la valeur

SELECT T1.Champ1, T1.Champ2, T2.ChampB
FROM Requete1 AS T1 INNER JOIN NewTable AS T2
ON T1.Champ2=T2.ChampA
ORDER BY T1.Champ1, T1.Champ2;

PS1:Le ChampA est la clé primaire de ta nouvelle table et c'est aussi
le coté 1 de la relation.

PS2:Il doit être possible de faire autrement.


"Harfang" a écrit dans le message de news:
Bonjour,

Alors j'ai une requête qui me sort un regroupement sur le premier champ, et
un max sur le second, sachant que le second champ contient une suite de 4
caractères.

A la sortie, ça me donne :

Champ1 Champ2
445620 AAAA
445660 AAAA

Je voudrais rajouter une autre colonne, qui rajoute une lettre à mon champ
alphabétique, bref que ça me sorte dans l'exemple ci-dessus : AAAB. Bien sûr
si j'étais à AAAZ ça devrait me sortir AABA.

C'est faisable ? Comment ?

Merci




Avatar
db
Harfang a écrit :
Bonjour,

Alors j'ai une requête qui me sort un regroupement sur le premier champ, et
un max sur le second, sachant que le second champ contient une suite de 4
caractères.

A la sortie, ça me donne :

Champ1 Champ2
445620 AAAA
445660 AAAA

Je voudrais rajouter une autre colonne, qui rajoute une lettre à mon champ
alphabétique, bref que ça me sorte dans l'exemple ci-dessus : AAAB. Bien sûr
si j'étais à AAAZ ça devrait me sortir AABA.

C'est faisable ? Comment ?

Merci





Bonsoir,

Par exemple en créant cette fonction dans un module :

Function NextWord(cWord As String) As String
Dim i As Integer, lRet As Boolean
lRet = True
For i = 4 To 1 Step -1
If lRet Then
lRet = Mid(cWord, i, 1) = "Z"
Mid(cWord, i, 1) = IIf(lRet, "A", Chr(Asc(Mid(cWord, i, 1)) + 1))
End If
Next
NextWord = cWord
End Function


et la requête sera quelque chose comme :

SELECT champ1, Max(champ2) AS MaxDechamp2, NextWord(Max([champ2])) AS Expr1
FROM LaTable
GROUP BY champ1;


db