Separer un champ de x caracteres en deux champs
Résolu
kakarous
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
kakarous Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
kakarous Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- Separer un champ de x caracteres en deux champs
- Site x - Guide
- Sites X : Pornhub, YouPorn et Redtube sont de nouveau accessibles en France - Guide
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Nombre de jours entre deux dates excel - Guide
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.
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.
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.
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.
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.
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 )
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 )
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é ?