Pages: 1
- Sujet précédent - Créer deux enregistrements à partir d'un seul selon une colonne - Sujet suivant
#1 Fri 16 May 2008 12:17
- Miss T.
- Participant assidu
- Lieu: En pleine amazonie...
- Date d'inscription: 17 Oct 2005
- Messages: 294
Créer deux enregistrements à partir d'un seul selon une colonne
Bonjour à tous,
(Tiens, ça faisais longtemps...)
Je cherche à dupliquer un enregistrement selon le contenu d'une colonne, et à mettre à jour cette colonne selon les deux morceaux de texte.
Pour être plus claire:
J'ai un enregistrement dont la colonne n contient l'info "3.51 x 5.36"
Je voudrais aboutir à 2 enregistrements dont l'info serait respectivement "3.51" et "5.36".
Sélectionner ces enregistrements avec colonne n like "%x%" ==> pas de problème.
Mais dupliquer avec des données différentes?
Si vous avez des suggestions...
Hors ligne
#2 Fri 16 May 2008 12:40
- Thomas
- Participant actif
- Lieu: Rennes
- Date d'inscription: 5 Sep 2005
- Messages: 71
Re: Créer deux enregistrements à partir d'un seul selon une colonne
Bonjour,
Comme toujours, on a surement plus simple, mais j'aime bien bricoler...
Je te propose d'exporter tes données sous Excel pour créer deux colonnes à partir de celle d'origine (fonction "convertir" avec "x" comme séparateur), et de les réimporter via une jointure sql.
Hors ligne
#3 Fri 16 May 2008 13:27
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Créer deux enregistrements à partir d'un seul selon une colonne
Je suppose que les deux colonnes destinées à recevoir les morceaux de la colonne n existent déjà, "debut_n" et "fin_n"
La sélection "toto" des enregistrements concernés en colonne n est faite
On va donc faire deux mises à jour de "toto", par une expression pour la colonne "debut_n" et par une autre expression pour la colonne "fin_n"
La première expression, pour "debut_n": left$(n, instr(1,n,"x")-2)
La seconde, pour "fin_n": right$(n, len(n)-instr(1,n,"x")-1)
Hors ligne
#4 Fri 16 May 2008 17:18
Re: Créer deux enregistrements à partir d'un seul selon une colonne
Connaissant Miss T. ou plutôt la complexité des problèmes qu'elle va poser pour notre plus grand plaisir: est-ce que les chiffres ont toujours le même format? "3.51 x 5.36 ? c'est à dire inférieur ou égal à 9 et avec toujours 2 décimales?
sinon je pense qu'il faut adapter la formule de Maurice en detectant le x à l'aide d'une boucle MapBasic
Xavier Germain
PS : je suis en train de me demander si la fonction instr() ne fait pas cela: donc Maurice a encore tout bon!
PS: Eh bien si : InStr(position, string, substring) renvoie la position d'un caractère ou d'une chaine à l'intérieur d'une autre chaine...
Dernière modification par xavier29 (Fri 16 May 2008 17:24)
SARL Géodésie: Cartographie Numérique
2 Résidence de Hent Du
29170 Fouesnant
Hors ligne
#5 Fri 16 May 2008 17:24
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Créer deux enregistrements à partir d'un seul selon une colonne
...donc Maurice a encore tout bon!
J'avais tout prévu!! A Miis T. de confirmer...
Hors ligne
#6 Fri 16 May 2008 17:52
- Miss T.
- Participant assidu
- Lieu: En pleine amazonie...
- Date d'inscription: 17 Oct 2005
- Messages: 294
Re: Créer deux enregistrements à partir d'un seul selon une colonne
Connaissant Miss T. ou plutôt la complexité des problèmes qu'elle va poser pour notre plus grand plaisir
Je vois que Maurice et moi ne sommes pas les deux seuls masos du forum... ;-p
A vrai dire, je n'ai pas la table en main et mon collègue est déjà rentré chez lui (non mais j'vous jure...).
Il m'a posé la question et vu que je n'avais jamais fait, je me suis dite que j'allais vous triturer un peu.
Si la formule de Maurice marche, ça aura été trop facile. Arf arf arf!
Je récupère la table et vous tiendrai au jus...
Hors ligne
#7 Fri 16 May 2008 18:11
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Créer deux enregistrements à partir d'un seul selon une colonne
Du coup je relis l'énnoncé: il ne faut pas créer puis remplir deux colonnes à partir d'une .... ça, ma "formule" le fait!
mais bien dupliquer un enregistrement ET laisser dans chaque "doublon" créé une partie de l'attribut original (début pour l'un, fin pour l'autre)...et c'est une autre question!
Vous savez quoi...c'est vendredi !!
On en reparle après le WE
[EDIT] en fait ça devrait être simple si on a créé une colonne receptacle avant de sélectionner "toto". Après on copie-colle tous les éléments dans "toto" (pas sûr qu'on puisse le faire sur une sélection, sinon il faudra enregistrer temporairement "toto"). Ensuite on fait une sélection dans "toto" dédoublé des enregistrements dont RowId est <= à la moitié du total, on met à jour la colonne receptacle avec la formule n°1 puis on inverse la sélection et on met à jour avec la formule n°2
Clair ??
Pas vraiment ?? Alors c'est que c'est vraiment le moment de quitter le taf
Hors ligne
#8 Fri 16 May 2008 22:17
Re: Créer deux enregistrements à partir d'un seul selon une colonne
Super, Miss T. et Maurice font alliance pour secouer nos neurones!
Bon je crois que je vais relire la question de la dame et les commentaires du monsieur et essayer de revenir avec une solution. (j'aurais mieux fait de me taire dès le début au lieu de faire des commentaires...)
bon week end, mais je sens que je vais regarder le PB avant...
Xavier
SARL Géodésie: Cartographie Numérique
2 Résidence de Hent Du
29170 Fouesnant
Hors ligne
#9 Sat 17 May 2008 11:26
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Créer deux enregistrements à partir d'un seul selon une colonne
Le plus simple (à ce stade du WE ), la table s'appellant ma_table et la colonne n:
- Browse From ma_table (pour l'afficher)
- Select * from ma_table where instr(1,n," x ")>0 into toto
- dans ma_table (cliquer sur la fenêtre données), copier-coller
...la sélection en cours est doublonnée, les doublons ajoutés deviennent selection
- Update selection Set n = right$(n, len(n)-instr(1,n"x")-1)
- Update toto Set n = left$(n, instr(1,n,"x")-2)
- Commit Table ma_table
voili, voilou...
Hors ligne
Pages: 1
- Sujet précédent - Créer deux enregistrements à partir d'un seul selon une colonne - Sujet suivant