[Résolu] Soustraction de lignes

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ésolu] Soustraction de lignes

Messagepar Magicarpet » 11 Mai 2010 10:52

Bonjour,

Je voudrais savoir comment s'y prendre pour faire la soustraction de lignes dans une table, et stocker le résultat dans un autre champ?
Pour être plus précis, si j'ai par exemple ligne1,ligne2,ligne3... dans un champ A, je voudrais stocker le résultat de ligne2-ligne1, ligne3-ligne2, ligne4-ligne3... dans un autre champ B.

en fait, je vois très bien comment faire sous Excel ou Calc (tout simplement parce qu'on peut manipuler directement les cellules), mais là avec Base, je ne vois pas du tout.

Faut-il utiliser une macro ou une requête? :?:

Merci d'avance!

Le modérateur a écrit: :alerte: La balise [Base] est bien sûr inutile dans la section consacrée à Base
Les icônes mises à votre disposition ont une signification précise sur ce forum.
Veuillez consulter ce fil pour en savoir plus : ftopic3299.html
Dernière édition par Magicarpet le 12 Mai 2010 13:46, édité 1 fois.
Open Office 3.2.1 - Windows XP Pro SP3
Magicarpet
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 85
Inscrit le : 11 Mai 2010 10:36

Re: Soustraction de lignes

Messagepar jeanmimi » 11 Mai 2010 11:29

Bonjour,
J'utiliserai plutôt une requête. Voici un exemple de calculs possibles.
Édit : fichier avec soustraction
Base avec calcul dans requête.odb
(13.15 Kio) Téléchargé 523 fois

Mais si ça ne correspond pas à ce que tu souhaites, le mieux est de joindre ta base en indiquant là où tu veux faire le soustractions.
Dernière édition par jeanmimi le 11 Mai 2010 13:14, édité 2 fois.
LibreOffice Version : 6.2.1.2 (x64) (8 mars 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 14832
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Re: Soustraction de lignes

Messagepar Magicarpet » 11 Mai 2010 13:13

Alors oui, cet exemple je l'ai déjà vu, et je l'ai déjà utilisé mais pour un autre truc.

Là, je pensais plutot à un calcul que ferait Base comme le ferait un tableur. Si on utilise une requête, serait-il possible de faire comme ceci; on fait une soustraction sur les cellules/valeurs du champA, le résultat est stocké dans les cellules d'un champB, via une fonction (que je ne sais pas) ?

Finalement, mon problème avec Base, c'est que dans le menu "Ebauche requete", je peux seulement utiliser les champs de la table, et pas les cellules. Du coup, je ne sais pas comment soustraire à chaque fois les données qui sont rentrées au fur et à mesure...


EDIT: je sais pas si c'était clair, mais je voudrais savoir comment faire une soustraction entre lignes d'un même champ, et non pas entre 2 champs différents :)

EDIT2: en pièce-jointe ma base. Je voudrais juste, dans la table "T_releve_compteur", faire la différence "1000-100", "2000-1000", et stocker le résultat dans un autre champ (consommation période par ex).

EDIT3: je me suis trompé de pièce-jointe ^^ voici la bonne! :mrgreen:
Pièces jointes
Projet - maquette.odb
base projet
(187.04 Kio) Téléchargé 106 fois
Open Office 3.2.1 - Windows XP Pro SP3
Magicarpet
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 85
Inscrit le : 11 Mai 2010 10:36

Re: Soustraction de lignes

Messagepar Magicarpet » 11 Mai 2010 17:23

J'ai trouvé exactement mon problème, mais c'est sous Access;

http://www.developpez.net/forums/d25084 ... me-champs/

ils utilisent l'instruction Dlookup, du coup je ne sais toujours pas comment faire... :(

Le modérateur a écrit: :alerte: Merci de ne pas poster plusieurs messages à la suite !
Si vous devez ajouter un complément d'information, le bouton "Editer" à la droite du message permet d'y remédier.

En attendant une prochaine réponse, vous pouvez participer également en répondant à d'autres questions sur notre forum.
Open Office 3.2.1 - Windows XP Pro SP3
Magicarpet
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 85
Inscrit le : 11 Mai 2010 10:36

Re: Soustraction de lignes

Messagepar Grenouille » 11 Mai 2010 17:57

Bonsoir,

Il y a une solution sur le forum anglais : http://user.services.openoffice.org/en/ ... 39&t=28387

C'est une macro. Donc si tu as des questions il te faudra poster au bon endroit (voir bandeau rouge en haut).

A+
OpenOffice 4.1.5 et LibreOffice 5.3.4 (par obligation) sous Windows 7
Avatar de l’utilisateur
Grenouille
ManitOOu
ManitOOu
 
Message(s) : 3223
Inscrit le : 13 Jan 2006 17:21
Localisation : Chasseneuil-du-Poitou / Futuroscope

Re: Soustraction de lignes

Messagepar Pierre-Yves Samyn » 12 Mai 2010 13:32

Bonjour

Question intéressante qui change des cumuls "positifs" plusieurs fois réalisés ici... Donc, une solution sans macro et en français sur ce forum :)

Capture-1.png
En haut la table de départ, puis la requête donnant "l'accumulation", puis celle donnant les cumuls "simples"
Capture-1.png (11.21 Kio) Consulté 5056 fois


Partant de la table T_releve_compteur affichée en haut, une seule requête permet d'obtenir "TousLesCumuls" :

Code : Tout sélectionner   AgrandirRéduire
SELECT "T_releve_compteur"."date" AS "Du" , "T_releve_compteur_1"."date" AS "Au", "T_releve_compteur"."index_compteur_gaz" AS "Ancien", "T_releve_compteur_1"."index_compteur_gaz" AS "Nouveau", "T_releve_compteur_1"."index_compteur_gaz" - "T_releve_compteur"."index_compteur_gaz" AS "Consommation"
FROM
"T_releve_compteur", "T_releve_compteur" AS "T_releve_compteur_1"
WHERE
"T_releve_compteur"."date" < select top 1 max("T_releve_compteur_1"."date") as "max"  from "T_releve_compteur"


Pour obtenir les "derniers cumuls" (sans l'accumulation), je propose une solution en 3 requêtes successives :

DerniersCumuls1

Code : Tout sélectionner   AgrandirRéduire
SELECT "T_releve_compteur"."date" AS "Du" , "T_releve_compteur_1"."date" AS "Au", DATEDIFF('dd', "T_releve_compteur"."date", "T_releve_compteur_1"."date") AS "Jours", "T_releve_compteur"."index_compteur_gaz" AS "Ancien", "T_releve_compteur_1"."index_compteur_gaz" AS "Nouveau", "T_releve_compteur_1"."index_compteur_gaz" - "T_releve_compteur"."index_compteur_gaz" AS "Consommation"
FROM
"T_releve_compteur", "T_releve_compteur" AS "T_releve_compteur_1"
WHERE
"T_releve_compteur"."date" < select top 1 max("T_releve_compteur_1"."date") as "max"  from "T_releve_compteur"


DerniersCumuls2

Code : Tout sélectionner   AgrandirRéduire
SELECT "Du", MIN( "Jours" ) AS "NbJours" FROM "DerniersCumuls1" AS "DerniersCumuls1" GROUP BY "Du"


DerniersCumuls3

Code : Tout sélectionner   AgrandirRéduire
SELECT "DerniersCumuls2"."Du", "DerniersCumuls1"."Au", "DerniersCumuls2"."NbJours", "DerniersCumuls1"."Ancien", "DerniersCumuls1"."Nouveau", "DerniersCumuls1"."Consommation" FROM "DerniersCumuls2" AS "DerniersCumuls2", "DerniersCumuls1" AS "DerniersCumuls1" WHERE "DerniersCumuls2"."NbJours" = "DerniersCumuls2"."NbJours" AND "DerniersCumuls1"."Du" = "DerniersCumuls2"."Du" AND "DerniersCumuls1"."Jours" = "DerniersCumuls2"."NbJours"


Nota : ces requêtes nécessitent l'exécution "directe" du SQL
Pièces jointes
CumulConsommation.odb
(5.63 Kio) Téléchargé 89 fois
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 09:42

Re: Soustraction de lignes

Messagepar Magicarpet » 12 Mai 2010 13:44

Merci!! C'est exactement ça! :D :bravo:

Juste une question; pourquoi la nécessité de faire 3 requêtes successives distinctes? :?:
Open Office 3.2.1 - Windows XP Pro SP3
Magicarpet
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 85
Inscrit le : 11 Mai 2010 10:36

Re: Soustraction de lignes

Messagepar Pierre-Yves Samyn » 12 Mai 2010 14:06

Magicarpet a écrit:Juste une question; pourquoi la nécessité de faire 3 requêtes successives distinctes? :?:


Parce qu'on se repose sur la jointure pour ne lister que les enregistrements répondant aux critères
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 09:42

Re: [Résolu] Soustraction de lignes

Messagepar Magicarpet » 12 Mai 2010 14:52

Par contre, j'aurais une autre question;

tout marche très bien dans les calculs. Cependant j'ai voulu créer un formulaire à partir de la requête DerniersCumuls3 pour qu'on puisse faire des saisies. Et le problème c'est que toutes les valeurs sont figées; je ne peux pas les modifier et je ne peux pas faire de nouvel enregistrement! :? quelle est la raison?

J'ai déjà été confronté à ce même problème lors de ma création de base, mais je ne sais plus pourquoi yavait ce problème...

Si quelqu'un aurait une explication, il est le bienvenu! :D
Pièces jointes
CumulConsommation.odb
(20.53 Kio) Téléchargé 69 fois
Open Office 3.2.1 - Windows XP Pro SP3
Magicarpet
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 85
Inscrit le : 11 Mai 2010 10:36

Re: [Résolu] Soustraction de lignes

Messagepar Pierre-Yves Samyn » 12 Mai 2010 15:01

Magicarpet a écrit:Par contre, j'aurais une autre question


Oui mais sur ce forum (prends le temps de relire la section A lire avant tout du forum (cf. ma signature) on demande de ne poser qu'une question par fil pour faciliter les recherches ultérieures.

De plus, cette question a déjà été traitée plusieurs fois. Entre autres : viewtopic.php?f=9&t=10302&p=58786&hilit=Issue*+mise*+jour*+requ%C3%AAte*+plusieurs*+table*#p58786
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 09:42

Re: [Résolu] Soustraction de lignes

Messagepar Magicarpet » 12 Mai 2010 15:03

Désolé, j'ai pas fais gaffe et je suis allé trop vite... Je ferai attention la prochaine fois :)

Merci pour la réponse en tout cas.
Open Office 3.2.1 - Windows XP Pro SP3
Magicarpet
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 85
Inscrit le : 11 Mai 2010 10:36


Retour vers Base de données

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)