Separer un champ de x caracteres en deux champs

Résolu/Fermé
kakarous Messages postés 18 Date d'inscription jeudi 9 juillet 2015 Statut Membre Dernière intervention 29 décembre 2022 - 9 juil. 2015 à 11:42
kakarous Messages postés 18 Date d'inscription jeudi 9 juillet 2015 Statut Membre Dernière intervention 29 décembre 2022 - 10 juil. 2015 à 14:49
Bonjour a tous,
Dans une base de données Access 2010, j'ai une table avec x enregistrements, type fichier adresse (nom, société, adr1, adr2... Certains enregistrements font plus de 38 caractères par champs et je voudrais couper et coller dans le champ vide d'a côté lorsqu'il y a plus de 38 caractères a l'aide d'une requête.
J'espère être clair, merci de vos retours.
A voir également:

2 réponses

Bonjour,
La question est très claire mais je ne vois pas du tout l''intérêt qu'il y a à couper le contenu d'un champ en 2; cela va créer bcp de problèmes au moment de la saisie et de l'extraction parce qu'il faudra couper dans le contrôle du formulaire, et après les réunir pour sortir un état ou autre chose.
Il suffirait d'augmenter la taille du champ qui peut aller jusqu'à 225 caractères pour un champ texte ou même 64000 pour un champ Mémo.
De toutes façons si le champ de départ ne peut pas contenir plus de 38 caractères, il n'y a guère d'autre solution que de mettre un contrôle, lié à ce champ supplémentaire, à côté du premier contrôle pour entrer la suite du texte.
0
kakarous Messages postés 18 Date d'inscription jeudi 9 juillet 2015 Statut Membre Dernière intervention 29 décembre 2022
9 juil. 2015 à 15:07
Merci de ton retour Tessel75 mais si la question est clair il manque surement une info. C'est pour un fichier postal, certains de mes clients me transmettent des fichiers qui ne sont pas au norme (6 lignes de 38 caractères maxi), donc j'ai besoin de temps en temps de couper une partie du texte du champ société, par exemple et de le coller dans le champ nom qui est vide. D'où le besoin d'automatiser cette action par une requête.
0
Danelectro Messages postés 1737 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 370
9 juil. 2015 à 15:20
Mais c'est horrifiant de faire ça, vraiment. En quoi c'est gênant si le champs contient plus de 38 caractères ? Tu peux toujours couper après, dans le traitement, mais surement pas dans la BDD !! (fonction LEFT())
0
kakarous Messages postés 18 Date d'inscription jeudi 9 juillet 2015 Statut Membre Dernière intervention 29 décembre 2022 > Danelectro Messages postés 1737 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018
9 juil. 2015 à 16:06
Horrifiant, vraiment, je ne croyais pas faire peur a ce point la avec ce petit post...
Sinon plus sérieusement, 38 caractères parque la norme postal est de 38 caractères et que je n'ai pas le choix. Donc peux tu m'écrire la requête correspondante avec une coupure sur un espace avec le droit de choisir le nombre de caractères que je déplace.
0
Danelectro Messages postés 1737 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 370 > kakarous Messages postés 18 Date d'inscription jeudi 9 juillet 2015 Statut Membre Dernière intervention 29 décembre 2022
9 juil. 2015 à 16:24
Tu pourrais faire quelque chose comme ça (je n'ai pas pratiqué Access depuis longtemps cependant, je me base sur SQL Server là) :
LEFT(<ta chaine>, 38) dans la première colonne
et RIGHT(<ta chaine>,LEN(<ta chaine>)-38) dans la seconde.
Mais clairement c'est une solution abominable, ne montre jamais ça à un spécialiste des BDD, il t'arracherait la tête. Une meilleure solution serait de stocker toute l'adresse dans un champ (VARCHAR(255) par exemple), et les 38 premiers caractères seulement dans un autre. Ca éviterait d'avoir à reconstituer le bordel si tu veux extraire toute l'adresse. Mais même comme ça la base ne serait pas en 3FN ( https://fr.wikipedia.org/wiki/Forme_normale_%28bases_de_donn%C3%A9es_relationnelles%29 )
0
kakarous Messages postés 18 Date d'inscription jeudi 9 juillet 2015 Statut Membre Dernière intervention 29 décembre 2022 > Danelectro Messages postés 1737 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018
10 juil. 2015 à 11:31
Je pense que tu ne maîtrise pas complément mon problème car ce n'est pas si horrible que cela. Je coupe sur un espace une chaîne de caractères et je colle la sélection dans le champ suivant si il est vide. Il serait coupé brutalement de toute façon dans le logiciel postal. Sinon concernant ta requête, quand tu m'écris "ta chaîne" tu parle du champ que je veux coupé ?
0
Danelectro Messages postés 1737 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 370
10 juil. 2015 à 11:48
Utiliser un champs pour stocker un bout de chaine qui traine c'est moche, mais si en plus il n'est pas fait pour ça à la base c'est très très moche crois moi !
Et oui, je parle de ce que tu veux couper.
0