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

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Harfang
Le #11185311
Oups je voulais bien sûr indiquer Access 2003, pas 20036 ^^
Michel_D
Le #11185771
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"
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




db
Le #11191051
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
Publicité
Poster une réponse
Anonyme