[Résolu] Mise à jour données avec Calc

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.
yggy89
Fraîchement OOthentifié
Messages : 3
Inscription : 21 mars 2014 13:49

[Résolu] Mise à jour données avec Calc

Message par yggy89 »

Bon, excusez moi si cette question a déjà été posé...J'ai quand même pas mal recherché depuis hier matin, et je ne suis pas encore tombé sur ma solution. D'où ma requête à la communauté du forum!

J'ai crée une base de donnée sous Base avec quelques données (enfin quelques milliers...).
Le souci, c'est que certains enregistrements n'ont pas leur champs encore renseignés, mais je les ai quand même intégré à la base de données, espérant pouvoir faire une mise à jour future.

Le fait est que j'aimerais éviter de mettre à jour ces enregistrements à la main, car la base de données n'étant mise à jour qu'une fois l'an, il s'agit de plusieurs centaines d'enregistrements dont le champ est à remplir. Ici, il s'agit d'un relevé journalier donc les mesures ne sont pas encore là, mais l'enregistrement, lui, est bien présent. Il faudra alors mettre à jour le champ de la mesure quand j'aurai la donnée.

Ayant déjà pas mal de relevés, j'ai pu créer la table en l'important de Calc par copier-coller, rajoutant ensuite un ID pour la clé primaire dans l'assistant de base, je l'ai également mis en AutoValeur pour l'import de nouveaux relevés, il n'y a pas de soucis.

Comment faire pour mettre à jour un ensemble de relevés directement sans le faire un à un via un formulaire ou directement dans la table par exemple ? Sous Calc, par exemple, avec F4, je peux copier les données de la table dans Calc, mais pas la mettre à jour.
J'ai également essayé de ré-importer ces enregistrements avec cette fois, la valeur de la mesure renseignée, et en gardant le même ID, mais la base refuse de les importer sous prétexte de duplication...

Si vous avez des idées

Merci d'avance

P.S : sur l'imprim écran de ma table, c'est la dernière colonne que je voudrais mettre à jour en la remplissant rapidement
Pièces jointes
miseàjour.png
Dernière modification par lawrence le 22 mars 2014 00:49, modifié 5 fois.
Raison : Ajout de la coche verte
LibreOffice 4.1.5.3 sour Win 7 SP1
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
Messages : 3929
Inscription : 06 oct. 2008 10:03

Re: Mise à jour données avec Calc

Message par Oukcha »

Bonjour et bienvenue,

Vous avez illustré votre question avec des fichiers en provenance d'un site tiers. Or, souvent ces sites n'assurent aucune pérennité sur les données qu'ils hébergent.

C'est pour cela que nous préférerons que vous utilisiez notre service de pièce-jointe dont le lien est mentionné en bas lorsque vous écrivez votre message : -comment-joindre-un-fichier-sur-ce-forum.html

Veuillez corriger votre message en utilisant le bouton "Editer" (situé à droite) et en mettant en ligne votre fichier correctement.

Vous en remerciant par avance.
                                        
Pour tout savoir sur le fonctionnement de ce forum :arrow: À lire avant tout ! Image
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: Mise à jour données avec Calc

Message par Dude »

Salut,

D'abord merci de suivre ce que te demande le modo pour continuer à recevoir des réponses.

Qu'est ce qui t'empêche d'importer ta feuille dans une table temporaire ?
Il suffit ensuite de faire une requête UPDATE entre les deux tables.
yggy89
Fraîchement OOthentifié
Messages : 3
Inscription : 21 mars 2014 13:49

Re: Mise à jour données avec Calc

Message par yggy89 »

Ok, souci de pièce jointe réparé!

Merci pour ta réponse rapide Dude, je suis donc obligé de passer par les commandes SQL ?

J'ai essayé avec des données que j'ai récupéré en faisant F4 dans Calc et en copiant collant des nouvelles mesures dans la colonne M3 PAR SEC,

je copie-colle ensuite ces données (avec leur en-tête) dans Base pour créer une nouvelle table avec, appelée Table1(pour suivre ta démarche de créer une table temporaire, si j'ai bien compris :? )
Par contre, il faut que je la crée sans clé primaire (car il y en a déjà une, celle qui va permettre de mettre à jour les enregistrements de la première table RELEVE).
Ensuite, j'ai, de nouveau, les champs à réenseigner de façon à ce qu'ils soit numérique ou de texte.

Puis, je vais faire ma requête! Cependant, je dois mal l'écrire...

Code : Tout sélectionner

UPDATE "RELEVE", "table1"
SET "RELEVE"."M3 PAR SEC" = "table1"."M3 PAR SEC"
WHERE "RELEVE"."ID" = "table1"."ID"
J'ai essayé avec des double-cotes mais sans plus de succès!

Merci pour votre aide, ou si il y a d'autres solutions?
LibreOffice 4.1.5.3 sour Win 7 SP1
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: Mise à jour données avec Calc

Message par Dude »

yggy89 a écrit :je suis donc obligé de passer par les commandes SQL ?
Je ne vois pas d'autres solutions à ton problème alambiqué de passage par Calc pour faire des mises à jour de données.
yggy89 a écrit :Par contre, il faut que je la crée sans clé primaire (car il y en a déjà une, celle qui va permettre de mettre à jour les enregistrements de la première table RELEVE).
Non, la clé primaire est obligatoire.
Et la mise à jour peut très bien se faire sur un autre identifiant.

Et comme d'habitude, la boule de cristal a des limites qu'un fichier joint peut résoudre. :?
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: Mise à jour données avec Calc

Message par Piaf »

Bonsoir
yggy89 a écrit :

Code : Tout sélectionner

UPDATE "RELEVE", "table1"
SET "RELEVE"."M3 PAR SEC" = "table1"."M3 PAR SEC"
WHERE "RELEVE"."ID" = "table1"."ID"
HSQLDB Guide a écrit :UPDATE

Code : Tout sélectionner

UPDATE table SET colonne = Expression [, ...] [WHERE Expression]
Modifie des données d'une table de la base de données.
Exemple de commande à saisir en SQL direct :

Code : Tout sélectionner

UPDATE "Clients" 
SET "Nom" = (SELECT "Nom" FROM "AjoutClients" WHERE "AjoutClients"."ID" = "Clients"."ID")
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
HRk2o
Membre cOOnverti
Membre cOOnverti
Messages : 344
Inscription : 29 mai 2009 10:51
Localisation : Guyane

Re: Mise à jour données avec Calc

Message par HRk2o »

Bonjour,
je procéderais comme ceci à partir d'une copie de fichier (au cas où):
1)Sélection par requête du champ à mettre à jour, je suppose le champ vide par rapport à une date;
2) tri > et Glisser/déposer la sélection dans Calc ;
3) Vous avez donc les 'Id' de chaque donnée, et Faire la màj du champ concerné "M3 par SEC";
4) Retournez dans Base et Supprimez la sélection idoine;
5) Faire en mode SQL direct: ALTER TABLE "la table concernée" ALTER COLUMN " ID concerné"(nom de clé primaire") RESTART WITH 1
CHECKPOINT DEFRAG
SHUTDOWN COMPACT
6) Quittez la base
7) Rouvrir la Base;
8) Copier dans Calc la sélection des données màj;
9) Coller dans la table concernée, ce qui provoquera l'ouverture de l'assistant "Ajout de données"
10) Réordonnez les colonnes face à face et Validez

Ça devrait se faire, à mon avis!
@+
AOO 4.1.14 et LO 7.3.7.2 sous OsX 10.13.6 High Sierra ; Windows 10 sous AOO 4.1.14 et LibO 7.3.7.2
yggy89
Fraîchement OOthentifié
Messages : 3
Inscription : 21 mars 2014 13:49

Re: Mise à jour données avec Calc

Message par yggy89 »

Merci pour toutes vos infos! J'ai réussi mon opération en utilisant la solution de Piaf!

Pour que cela fonctionne, il faut utiliser la syntaxe qu'il a mis dans son message et le faire via Outils > SQL...

Merci à vous tous!
LibreOffice 4.1.5.3 sour Win 7 SP1
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Résolu] Mise à jour données avec Calc

Message par Piaf »

Bonsoir
yggy89 a écrit :il faut utiliser la syntaxe qu'il a mis dans son message
pas trop dur à trouver c'est le premier lien dans la section Base.
Et avec la coche avant le [Résolu] ça le fera encore mieux :)
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

Re: Mise à jour données avec Calc

Message par Prismx »

Piaf a écrit :Bonsoir
yggy89 a écrit :

Code : Tout sélectionner

UPDATE "RELEVE", "table1"
SET "RELEVE"."M3 PAR SEC" = "table1"."M3 PAR SEC"
WHERE "RELEVE"."ID" = "table1"."ID"
HSQLDB Guide a écrit :UPDATE

Code : Tout sélectionner

UPDATE table SET colonne = Expression [, ...] [WHERE Expression]
Modifie des données d'une table de la base de données.
Exemple de commande à saisir en SQL direct :

Code : Tout sélectionner

UPDATE "Clients" 
SET "Nom" = (SELECT "Nom" FROM "AjoutClients" WHERE "AjoutClients"."ID" = "Clients"."ID")
A+

Bonjour.
Cette solution fonctionne très bien effectivement.
Par contre ca nécessite qu'il y ai un champ ID qui correspondent.
Si ce champ n'existe pas comment faire pour le remplir automatiquement dans la table qui reçoit l'update svp.
Personnellement je n'avais que 20 lignes mais si il y en avait eu des milliers ? Merci
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12196
Inscription : 08 nov. 2005 17:23
Localisation : Caen, France
Contact :

Re: [Résolu] Mise à jour données avec Calc

Message par Bidouille »

Ami fossoyeur,

Merci de ne pas déterrer des questions datant de plus de 5 ans.

Déterrage = verrouillage
Verrouillé