J'ai une base de donnée dont un des champs contient des mots séparés par des
points virgule. Je voudrais imprimer en faisant une rupture pour chaque mot
différent rencontré dans le champ en question.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gloops
Bonjour,
Pour séparer une chaîne de caractères selon un caractère donné, il y a l'instruction Split.
Je vais essayer de te citer la syntaxe de mémoire, ce qui est très dangereux avec Split, d'autant que l'aide donne une autre syntaxe, qui elle n'est pas toujours reconnue.
Je propose de disposer de deux tables tabTableEntree et tabTableSortie, avec chacune un champ ChampTexte, à dimensionner proprement (et ne contenant pas de chaîne vide sinon il faut affiner le traitement).
Dim strEntree As String Dim spl As Variant 'oui je sais là je ne me casse pas la tête Dim Rs As Recordset Dim TableEntree As TableDef, TableSortie As TableDef
strEntree = "" Set TableEntree = CurrentDb().TableDefs("tabTableEntree") Set TableSortie = CurrentDb().TableDefs("tabTableSortie") Set Rs = TableEntree.OpenRecordset() While Not Rs.EOF strEntree = strEntree + Rs!ChampTexte + ";" Rs.Next Wend Rs.Close
'à ce stade on a tous les éléments dans une seule chaîne de carac tères : 'strEntree = "bleu; carré; lisse; rouge; carré; mat; rouge; rond; l isse;"
spl = Split(strEntree, ";") Set Rs = TableSortie.OpenRecordset() For N = LBound(spl) To UBound(spl) Rs.AddNew Rs!ChampTexte = spl(N) Rs.Update Next Rs.Close Set Rs = Nothing
Et l'état de sortie pourrait être basé sur SELECT ChampTexte FROM tabTableSortie ORDER BY ChampTexte
Il n'est pas exclu que quelqu'un nous sorte d'un chapeau une instruction SQL qui sortirait le résultat d'une traite, ce qui, il faut bien l'avouer, aurait plus de classe. Mais à l'heure qu'il est, voilà ce q ue je propose.
____________________________________ Marc a écrit, le 08/05/2008 11:47 :
Bonjour,
J'ai une base de donnée dont un des champs contient des mots séparé s par des points virgule. Je voudrais imprimer en faisant une rupture pour chaque mot différent rencontré dans le champ en question.
Je ne suis vraiment pas un cador d'access. Pensez vous que cela est facilement réalisable ?
Il y a bien entendu d'autres champs dans chaque enregistrement, mais ce ux-ci ne sont pas nécéssaires au tri.
Merci d'avance pour toute aide que vous pourriez m'apporter.
Buzzw2
Bonjour,
Pour séparer une chaîne de caractères selon un caractère donné, il y a
l'instruction Split.
Je vais essayer de te citer la syntaxe de mémoire, ce qui est très
dangereux avec Split, d'autant que l'aide donne une autre syntaxe, qui
elle n'est pas toujours reconnue.
Je propose de disposer de deux tables tabTableEntree et tabTableSortie,
avec chacune un champ ChampTexte, à dimensionner proprement (et ne
contenant pas de chaîne vide sinon il faut affiner le traitement).
Dim strEntree As String
Dim spl As Variant 'oui je sais là je ne me casse pas la tête
Dim Rs As Recordset
Dim TableEntree As TableDef, TableSortie As TableDef
strEntree = ""
Set TableEntree = CurrentDb().TableDefs("tabTableEntree")
Set TableSortie = CurrentDb().TableDefs("tabTableSortie")
Set Rs = TableEntree.OpenRecordset()
While Not Rs.EOF
strEntree = strEntree + Rs!ChampTexte + ";"
Rs.Next
Wend
Rs.Close
'à ce stade on a tous les éléments dans une seule chaîne de carac tères :
'strEntree = "bleu; carré; lisse; rouge; carré; mat; rouge; rond; l isse;"
spl = Split(strEntree, ";")
Set Rs = TableSortie.OpenRecordset()
For N = LBound(spl) To UBound(spl)
Rs.AddNew
Rs!ChampTexte = spl(N)
Rs.Update
Next
Rs.Close
Set Rs = Nothing
Et l'état de sortie pourrait être basé sur
SELECT ChampTexte FROM tabTableSortie ORDER BY ChampTexte
Il n'est pas exclu que quelqu'un nous sorte d'un chapeau une instruction
SQL qui sortirait le résultat d'une traite, ce qui, il faut bien
l'avouer, aurait plus de classe. Mais à l'heure qu'il est, voilà ce q ue
je propose.
____________________________________
Marc a écrit, le 08/05/2008 11:47 :
Bonjour,
J'ai une base de donnée dont un des champs contient des mots séparé s par des
points virgule. Je voudrais imprimer en faisant une rupture pour chaque mot
différent rencontré dans le champ en question.
Pour séparer une chaîne de caractères selon un caractère donné, il y a l'instruction Split.
Je vais essayer de te citer la syntaxe de mémoire, ce qui est très dangereux avec Split, d'autant que l'aide donne une autre syntaxe, qui elle n'est pas toujours reconnue.
Je propose de disposer de deux tables tabTableEntree et tabTableSortie, avec chacune un champ ChampTexte, à dimensionner proprement (et ne contenant pas de chaîne vide sinon il faut affiner le traitement).
Dim strEntree As String Dim spl As Variant 'oui je sais là je ne me casse pas la tête Dim Rs As Recordset Dim TableEntree As TableDef, TableSortie As TableDef
strEntree = "" Set TableEntree = CurrentDb().TableDefs("tabTableEntree") Set TableSortie = CurrentDb().TableDefs("tabTableSortie") Set Rs = TableEntree.OpenRecordset() While Not Rs.EOF strEntree = strEntree + Rs!ChampTexte + ";" Rs.Next Wend Rs.Close
'à ce stade on a tous les éléments dans une seule chaîne de carac tères : 'strEntree = "bleu; carré; lisse; rouge; carré; mat; rouge; rond; l isse;"
spl = Split(strEntree, ";") Set Rs = TableSortie.OpenRecordset() For N = LBound(spl) To UBound(spl) Rs.AddNew Rs!ChampTexte = spl(N) Rs.Update Next Rs.Close Set Rs = Nothing
Et l'état de sortie pourrait être basé sur SELECT ChampTexte FROM tabTableSortie ORDER BY ChampTexte
Il n'est pas exclu que quelqu'un nous sorte d'un chapeau une instruction SQL qui sortirait le résultat d'une traite, ce qui, il faut bien l'avouer, aurait plus de classe. Mais à l'heure qu'il est, voilà ce q ue je propose.
____________________________________ Marc a écrit, le 08/05/2008 11:47 :
Bonjour,
J'ai une base de donnée dont un des champs contient des mots séparé s par des points virgule. Je voudrais imprimer en faisant une rupture pour chaque mot différent rencontré dans le champ en question.