[Résolu] Remplacer contenu cellules simultanément

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
Répondre
warmless
Membre lOOyal
Membre lOOyal
Messages : 28
Inscription : 01 août 2011 16:57

[Résolu] Remplacer contenu cellules simultanément

Message 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).
Dernière modification par warmless le 13 sept. 2011 13:48, modifié 1 fois.
OpenOffice 3.1.1 Windows XP SP3
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: remplacer contenu cellules simultanément

Message 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

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.
warmless
Membre lOOyal
Membre lOOyal
Messages : 28
Inscription : 01 août 2011 16:57

Re: remplacer contenu cellules simultanément

Message 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) ?
OpenOffice 3.1.1 Windows XP SP3
Avatar de l’utilisateur
spYre
InconditiOOnnel
InconditiOOnnel
Messages : 888
Inscription : 29 oct. 2008 20:02
Localisation : Liège, Belgique

Re: remplacer contenu cellules simultanément

Message 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 ?
LibreOffice 3.3.4 + Report Builder
Windows 7 / Windows XP sp3
Ubuntu 11.10 / LMDE
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: remplacer contenu cellules simultanément

Message 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.
warmless
Membre lOOyal
Membre lOOyal
Messages : 28
Inscription : 01 août 2011 16:57

Re: remplacer contenu cellules simultanément

Message 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
OpenOffice 3.1.1 Windows XP SP3
Avatar de l’utilisateur
spYre
InconditiOOnnel
InconditiOOnnel
Messages : 888
Inscription : 29 oct. 2008 20:02
Localisation : Liège, Belgique

Re: remplacer contenu cellules simultanément

Message par spYre »

Fournis au moins, en parallèle, une saisie écran de la table concernée.
LibreOffice 3.3.4 + Report Builder
Windows 7 / Windows XP sp3
Ubuntu 11.10 / LMDE
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: remplacer contenu cellules simultanément

Message 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 ?
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
warmless
Membre lOOyal
Membre lOOyal
Messages : 28
Inscription : 01 août 2011 16:57

Re: remplacer contenu cellules simultanément

Message 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é 203 fois
LogFonction essai SQL.odb
(3.04 Kio) Téléchargé 205 fois
LogementFonction-erreur Sql-2.JPG
OpenOffice 3.1.1 Windows XP SP3
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: remplacer contenu cellules simultanément

Message 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.
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: remplacer contenu cellules simultanément

Message 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

UPDATE "Table1" SET "MinistereDemandeur" = REPLACE ("MinistereDemandeur", 'intérieur','Intérieur')
- un deuxième pour soustraire l'espace devant Intérieur :

Code : Tout sélectionner

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.
Pièces jointes
LogFonction essai SQL_v2.odb
(3.38 Kio) Téléchargé 189 fois
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
warmless
Membre lOOyal
Membre lOOyal
Messages : 28
Inscription : 01 août 2011 16:57

Re: remplacer contenu cellules simultanément

Message 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 ?
OpenOffice 3.1.1 Windows XP SP3
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

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

Message 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
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

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

Message 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

UPDATE "Table1" SET "MinistereDemandeur" = REPLACE ("MinistereDemandeur", 'Ministère de l\' intérieur', 'Ministère de l\'Intérieur')
Répondre