[Access 20036] Rajouter 1 à un champ... alphabétique
3 réponses
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.
Oups je voulais bien sûr indiquer Access 2003, pas 20036 ^^
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 :
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
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 :
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" <privacy@nospam.invalid> a écrit dans le message de news:ut1V0Xa3IHA.1200@TK2MSFTNGP04.phx.gbl...
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.
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 :
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
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
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;
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;