Page 1 sur 1

[Résolu] Remplacer contenu cellules simultanément

MessagePublié: 05 Sep 2011 15:26
par warmless
Bonjour,
je voudrais remplacer le contenu de plusieurs cellules simultanément(comme c'est le cas sur Calc) sur un gros fichier odb, soit sur la table, soit sur le formulaire(le plus simple des 2). L'icône rechercher remplacer existe bien(comme c'est le cas sur Calc), mais l'option remplacer est grisée/désactivée car elle ne concerne pas odb. Y a-t-il un menu ou une astuce qui permette de remplacer les données autrement que cellule à cellule, puisqu'il n'est pas possible de copier les données de Calc vers odb via une table existante ? (voir mon autre sujet à ce propos).

Re: remplacer contenu cellules simultanément

MessagePublié: 05 Sep 2011 16:25
par Dude
Salut,

Il n'y a pas de cellule dans une base de données mais une table avec des colonnes et des champs. Le vocabulaire est important car Base n'est pas un tableur.

warmless a écrit:Y a-t-il un menu ou une astuce qui permette de remplacer les données

Oui, il faut faire une requête SQL :
Code : Tout sélectionner   AgrandirRéduire
UPDATE "TaTable" SET "TaColonne" = REPLACE("TaColonne", 'Bonjour', 'Au revoir');

Remplace dans la table TaTable, le mot "Bonjour" par "Au revoir" dans tous les champs de la colonne TaColonne.

Re: remplacer contenu cellules simultanément

MessagePublié: 07 Sep 2011 07:13
par warmless
Bonjour,
j'ai eu deux messages d'erreur sur 2 colonnes testées:
1/ column not found
2/ Unexpected token in statement

Bien sûr, les colonnes existent et la syntaxe de la ligne de commande a été respectée. Le fait qu'il y ait des accents dans le titre de colonne ou les mots à changer influe-t-il sur la commande (couleur verte ou marron, accents en noir) ?

Re: remplacer contenu cellules simultanément

MessagePublié: 07 Sep 2011 07:35
par spYre
Bonjour,

warmless a écrit:la syntaxe de la ligne de commande a été respectée

Peux-tu nous faire un copier/coller de l'instruction qui génère l'erreur ?

Re: remplacer contenu cellules simultanément

MessagePublié: 07 Sep 2011 09:07
par Dude
Faut-il encore se répéter ? Les gens qui te répondent n'ont pas de boule de cristal. :evil:
Il faut joindre systématiquement un fichier afin que l'on puisse tester et reproduire ce qui t'arrive.

Re: remplacer contenu cellules simultanément

MessagePublié: 09 Sep 2011 13:19
par warmless
Bonjour Dude,
au risque de me répéter, je ne peux travailler sur ma base que pendant les heures de bureau, lorsque j'ai un creux.
Ceci dit, je vous joint une image de l'erreur rencontrée.
LogementFonction-erreur Sql.JPG

Re: remplacer contenu cellules simultanément

MessagePublié: 09 Sep 2011 15:14
par spYre
Fournis au moins, en parallèle, une saisie écran de la table concernée.

Re: remplacer contenu cellules simultanément

MessagePublié: 09 Sep 2011 17:16
par jeanmimi
Bonjour,
Est-il possible de modifier le nom du champ de la Table en évitant les lettres accentuées "MinistereDemandeur" ?
Si oui, que donne la requête SQL dans ce cas ?

Re: remplacer contenu cellules simultanément

MessagePublié: 13 Sep 2011 07:31
par warmless
Bonjour,
j'ai enlevé les accents des champs titre, et j'ai un autre message d'erreur. Je vous joins le calc, la base et la copie écran.
LogFonction essai SQL.ods
(8.74 Kio) Téléchargé 111 fois

LogFonction essai SQL.odb
(3.04 Kio) Téléchargé 97 fois

LogementFonction-erreur Sql-2.JPG

Re: remplacer contenu cellules simultanément

MessagePublié: 13 Sep 2011 09:43
par Dude
Regarde ta chaîne de remplacement, il faut échapper les apostrophes si tu veux que le logiciel comprenne où il faut s'arrêter.

Re: remplacer contenu cellules simultanément

MessagePublié: 13 Sep 2011 10:34
par jeanmimi
Reproduisant le même message d’erreur puis inspiré par la réponse de Dude, j'ai testé la décomposition de la commande SQL pour faire plusieurs passages :
- un premier pour mettre la majuscule à intérieur :
Code : Tout sélectionner   AgrandirRéduire
UPDATE "Table1" SET "MinistereDemandeur" = REPLACE ("MinistereDemandeur", 'intérieur','Intérieur')

- un deuxième pour soustraire l'espace devant Intérieur :
Code : Tout sélectionner   AgrandirRéduire
UPDATE "Table1" SET "MinistereDemandeur" = REPLACE ("MinistereDemandeur", ' Intérieur','Intérieur')

et, après actualisation de l'affichage de la table, ça te donnera une belle Table1 conforme.

Re: remplacer contenu cellules simultanément

MessagePublié: 13 Sep 2011 12:48
par warmless
Merci jeanmimi,
j'ai repris ta ligne de commandes en mettant directement l'espace avant "intérieur":
UPDATE "Table1" SET "MinistereDemandeur" = REPLACE ("MinistereDemandeur", ' intérieur','Intérieur')

et.. ça marche !!

Merci à tout le monde.

PS: par rapport à la 1e ligne de commande donnée par Dude, je remarque 2 différences:
UPDATE "TaTable" SET "TaColonne" = REPLACE("TaColonne", 'Bonjour', 'Au revoir');
un espace en moins avant l'apostrophe et un espace en plus après la virgule(en bleu souligné).
Cela suffit-il pour que la commande ne fonctionne pas ?

Re: [Résolu]remplacer contenu cellules simultanément

MessagePublié: 13 Sep 2011 14:53
par jeanmimi
Cela suffit-il pour que la commande ne fonctionne pas ?
J'ai plutôt l'impression que ce sont les espaces dans les expressions qui perturbent le SQL

Re: [Résolu]remplacer contenu cellules simultanément

MessagePublié: 13 Sep 2011 15:25
par Dude
jeanmimi a écrit:J'ai plutôt l'impression que ce sont les espaces dans les expressions qui perturbent le SQL

Non, ce sont les apostrophes qui sont pris pour des fins de chaînes.

D'où ma réponse qui a semble t-il été éludée :
Dude a écrit:il faut échapper les apostrophes si tu veux que le logiciel comprenne où il faut s'arrêter.


Soit :
Code : Tout sélectionner   AgrandirRéduire
UPDATE "Table1" SET "MinistereDemandeur" = REPLACE ("MinistereDemandeur", 'Ministère de l\' intérieur', 'Ministère de l\'Intérieur')