Re: [users-fr] OOo 3 - Calc & Base - Petit exercice comptable

2009-09-25 Par sujet Docgranville

Ludovic CHEVALIER a écrit :

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Merci de ton aide. Ça me fait bien avancer.

J'ai un souci avec la création de la deuxième vue.
Je fais la requête sql suivante

  

SELECT substr( "Date", 0, 7 ) AS "Mois", "Utilisateur/Nom", "Compte analytique/Account Code", SUM( "Quantité" ) FROM 
"Feuille1" AS "Feuille1" WHERE substr( "Date", 0, 7 ) = '2009-01' GROUP BY "Compte analytique/Account Code" ORDER BY "Compte 
analytique/Account Code" ASC



À l'éxécution, j'obtiens le message suivant:
  

Statut SQL: 37000
Code d'erreur: -67

Not in aggregate function or group by clause: org.hsqldb.express...@a1daaa in statement [SELECT substr( "Date", 0, 7 ) AS "Mois", "Utilisateur/Nom", 
"Compte analytique/Account Code", SUM( "Quantité" ) FROM "Feuille1" AS "Feuille1" WHERE substr( "Date", 0, 7 ) = '2009-01' GROUP 
BY "Compte analytique/Account Code" ORDER BY "Compte analytique/Account Code" ASC]



Je ne sais pas de quoi ça peut venir, mais de manière générale, les
fonctions sum, group by, etc m'ont toujours posées ce genre soucis sur OOo.

Merci de votre aide.

A bientôt.

Ludo
  

Bonjour,

Ce type de message, c'est clairement un champ qui devrait se trouver 
derrière le Group By et qui ne s'y trouve pas.


Pour ne pas se tromper il faut juste retenir la chose suivante : tout 
champ qui se trouve derrière le Select et qui n'est pas affecté d'une 
clause de groupement (sum, count, ...) doit figurer derrière le Group by.


Normalement, ça devrait résoudre ton problème.

A+



-
To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
For additional commands, e-mail: users-h...@fr.openoffice.org



Re: [users-fr] OOo 3 - Calc & Base - Petit exercice comptable

2009-09-25 Par sujet Ludovic CHEVALIER
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Merci de ton aide. Ça me fait bien avancer.

J'ai un souci avec la création de la deuxième vue.
Je fais la requête sql suivante

> SELECT substr( "Date", 0, 7 ) AS "Mois", "Utilisateur/Nom", "Compte 
> analytique/Account Code", SUM( "Quantité" ) FROM "Feuille1" AS "Feuille1" 
> WHERE substr( "Date", 0, 7 ) = '2009-01' GROUP BY "Compte analytique/Account 
> Code" ORDER BY "Compte analytique/Account Code" ASC

À l'éxécution, j'obtiens le message suivant:
> Statut SQL: 37000
> Code d'erreur: -67
> 
> Not in aggregate function or group by clause: org.hsqldb.express...@a1daaa in 
> statement [SELECT substr( "Date", 0, 7 ) AS "Mois", "Utilisateur/Nom", 
> "Compte analytique/Account Code", SUM( "Quantité" ) FROM "Feuille1" AS 
> "Feuille1" WHERE substr( "Date", 0, 7 ) = '2009-01' GROUP BY "Compte 
> analytique/Account Code" ORDER BY "Compte analytique/Account Code" ASC]

Je ne sais pas de quoi ça peut venir, mais de manière générale, les
fonctions sum, group by, etc m'ont toujours posées ce genre soucis sur OOo.

Merci de votre aide.

A bientôt.

Ludo


-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkq8vrkACgkQ/xNY0YFtdg5wsACgrM6tzg6Zkfek1jKf4EbAQSm6
9jMAnjQh2JUB4X6BykKfA5T97nzwVZM2
=JCQm
-END PGP SIGNATURE-

-
To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
For additional commands, e-mail: users-h...@fr.openoffice.org



Re: [users-fr] OOo 3 - Calc & Base - Petit exercice comptable

2009-09-24 Par sujet Docgranville
Bon, je reviens un peu sur ce que j'ai écrit parce que, il y a un 
certain nombre de trucs qui ne peuvent pas marcher.


Docgranville a écrit :


Troisème étape, la requête elle-même ; elle va pointer à la fois sur 
tes deux vues et sur ta table contenant le salaire net ; c'est à ce 
moment là que l'on remarquera que l'on n'a pas évoqué la
clef primaire, permettant d'identifier avec certitude chaque salarié ; 
si c'est le nom du salarié, il faudra qu'il soit également présent 
dans ta table avec le salaire net ; si c'est un autre élément, il 
faudra qu'il soit présent dans ta table initiale, dans tes vues 
(penser à l'ajouter aux requêtes, derrière le Select et derrière le 
Group By) et dans ta table avec le salaire net ; ta requête je la 
verrais du genre :
Select Table1.Mois, Table1.Nom_du_salarie, 
(Table2.Salaire_Net*Vue2.Tot_Heures_Budget/Vue1.Tot_Heures) as 
Part_sal, 
(Table2.Charges_Patronales*Vue2.Tot_Heures_Budget/Vue1.Tot_Heures) 
from Table1 right outer join Vue1 on (Table1.nom_du_salarie [ou 
l'identifiant unique du salarié] like [si l'identifiant est une valeur 
numérique, tu peux utiliser le signe =, si c'est alphanumérique, il 
faut utiliser like] Vue1.Nom_du_salarie AND Table1.Mois like [même 
remarque que précédemment] Vue1.Mois) right outer join Vue2 on 
(Table1.nom_du_salarie like Vue2.Nom_du_salarie AND Table1.Mois like 
Vue2.Mois) left outer join Table2 on (Table1.nom_du_salarie like 
Table2.Nom_du_salarie AND Table1.Mois like Table2.Mois

Bon, là déjà il y a un souci il faut écrire :
Select Table1.Mois, Table1.Nom_du_salarie, 
(Table2.Salaire_Net*Vue2.Tot_Heures_Budget/Vue1.Tot_Heures) as 
"Part_sal", 
(Table2.Charges_Patronales*Vue2.Tot_Heures_Budget/Vue1.Tot_Heures) as 
"Part_Charges"  from Table1 right outer join Vue1 on 
Table1.nom_du_salarie like Vue1.Nom_du_salarie right outer join Vue2 on 
Table1.nom_du_salarie like Vue2.Nom_du_salarie left outer join Table2 on 
Table1.nom_du_salarie like Table2.Nom_du_salarie WHERE Table1.Mois like 
Vue1.Mois AND Table1.Mois like Vue2.Mois AND Table1.Mois like Table2.Mois


Là au moins, contrairement à la version précédente, ça ne devrait pas 
renvoyer de message d'erreur ; que ça te renvoie exactement ce que tu 
attends, du premier coup, je doute encore un peu.
(sur les join/left outer join/right outer join je ne suis pas 
absolument certain du résultat ; j'ai pris right pour le premier parce 
qu'on n'a pas besoin du résultat pour chaque ligne de Table1 mais 
uniquement pour chaque ligne de Vue1 ; en fait, comme on veut surtout 
un résultat pour chaque ligne de Vue2, c'est pour ça que j'ai choisi, 
ici aussi l'option right ; en revanche, j'ai choisi left pour la 
dernière parce que si un salarié figure dans Table2 mais sans détail 
de ventilation dans Table1, je suis parti du principe qu'on n'avait 
pas besoin de voir une ligne avec des 0 ; il est cependant possible 
que j'aie fait un contre-sens sur right et left et que le résultat, au 
moins dans sa présentation, ne corresponde pas du tout à ce qui est 
attendu ; il faudra alors modifier les options de jonction).
Là, sur ce point, il y a certainement des ajustements à opérer pour 
éviter certains doublons ; peut-être un DISTINCT à ajouter derrière ton 
SELECT ; peut-être revoir un ou plusieurs "join/right outer join/left 
outer join"... je ne sais pas exactement.


A+



-
To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
For additional commands, e-mail: users-h...@fr.openoffice.org



Re: [users-fr] OOo 3 - Calc & Base - Petit exercice comptable

2009-09-24 Par sujet Docgranville

Ludovic CHEVALIER a écrit :

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Bonjour.

Un petit exercice que je n'arrive pas à résoudre tout seul depuis
quelques temps de façon simple.

J'ai une table de base de données du style:
|Mois|Nom_du_salarie|Code_Budget|Heures|
|2009-01|Exemple_1|010|15|
|2009-01|Exemple_1|041|200|
|2009-01|Exemple_1|010|100|
...
où chaque enregistrement correspond à un temps de travail effectué par
un salarié tel mois sur le projet machin ayant pour code budget truc.

J'aimerais obtenir au final un tableau calc où j'aurais, pour un
utilisateur donné, sont pourcentage de temps de travail du mois sur tel
code budget.
Ça, j'y arrive aisément avec le pilote de données, quoique, je sois
obligé de sélectionner manuellement un mois et un utilisateur dans des
listes déroulantes pour chaque mois de chaque utilisateur (soit pour un
an complet 12* le nombre de salariés concernés)

Là où ça se complique encore plus, c'est que je voudrais calculer le
produit de chaque pourcentage de temps de travail du mois affecté à un
code budget par les charges patronales totales du mois d'une part et par
le salaire net du mois d'autre part, et ce pour chaque mois (j'espère
être assez clair).

J'ai pensé faire un tableau ou une table de bdd comme suit pour chaque
salarié:
|Mois|Salaire_net|Charges_Patronales|

Mais, je ne vois pas comment, ni avec le pilote de données, ni avec les
sous-totaux, faire quelque chose qui me permette de ne faire ces manip'
qu'une fois, et que je puisse réactualiser  régulièrement en un seul
clique lorsque je modifie ma bdd de initiale.

Avez-vous une idée de fonctionnalité ou d'utilisation d'OOo qui me
permette d'arriver à mes fins?

A bientôt et merci.

Ludovic
  

Bonjour,

Il me semble, en premier lieu, que tu as besoin de faire une règle de 
trois (en fait, deux règles de trois, une par rapport au salaire net, 
une par rapport aux charges) ; pour faire cette règle de trois, il te 
faut le total des heures réalisées par un salarié sur une période, sans 
distinction du budget de rattachement, puis du total des heures de 
chaque salarié ventilées par code budget.


Je ne sais pas s'il est possible (même au moyen d'une fonction Union 
portant sur la même table) de faire deux usages différents du même champ 
(Heures en l'occurrence) donc, à chaque fois que j'ai ce truc là, je 
triche un peu et je passe par une vue.


Donc, en premier lieu, tu commences par rédiger une requête qui va te 
totaliser les heures de chaque salarié pour chaque mois ; ici, ce serait 
du genre SELECT Mois, Nom_du_salarie, sum(Heures) as Tot_Heures from 
[TaTable] Group By Mois, Nom_du_salarie


Tu regardes si ça sort bien ce que tu cherchais, puis tu sauvegardes ta 
requête ; une fois que ta requête est sauvegardée, tu sors et te 
retrouves avec le volet de visualisation et tu devrais trouver ta 
requête dans la liste ; tu fais un clic droit sur cette requête et tu 
choisis "Créer en tant que vue" ; dans le choix du nom, fais attention à 
ne pas prendre un truc trop compliqué, tu vas devoir employer le nom 
dans une prochaine requête ; comme la vue va aller se ranger dans les 
tables, je choisis toujours de faire débuter le nom de mes vues par un 
truc distinctif (comme je suis un vrai déglingos, au summum de la 
créativité en plus, toutes mes vues commencent par vue_ c'est dingue 
hein ?).


L'avantage de la vue, c'est qu'elle va se mettre à jour à chaque fois 
que la table sur laquelle pointe la requête qui a servi à sa création va 
être modifiée.


C'est tellement bien qu'on va en faire une deuxième pour totaliser les 
heures, suivant le code budget ce serait du genre : Select Mois, 
Nom_du_salarie, Code_Budget, sum(Heures) as Tot_Heures_Budget from 
[Ta_Table] Group By Mois, Nom_du_salarie, Code_Budget ; ensuite, même 
étapes que précédemment.


Troisème étape, la requête elle-même ; elle va pointer à la fois sur tes 
deux vues et sur ta table contenant le salaire net ; c'est à ce moment 
là que l'on remarquera que l'on n'a pas évoqué la
clef primaire, permettant d'identifier avec certitude chaque salarié ; 
si c'est le nom du salarié, il faudra qu'il soit également présent dans 
ta table avec le salaire net ; si c'est un autre élément, il faudra 
qu'il soit présent dans ta table initiale, dans tes vues (penser à 
l'ajouter aux requêtes, derrière le Select et derrière le Group By) et 
dans ta table avec le salaire net ; ta requête je la verrais du genre :
Select Table1.Mois, Table1.Nom_du_salarie, 
(Table2.Salaire_Net*Vue2.Tot_Heures_Budget/Vue1.Tot_Heures) as Part_sal, 
(Table2.Charges_Patronales*Vue2.Tot_Heures_Budget/Vue1.Tot_Heures) from 
Table1 right outer join Vue1 on (Table1.nom_du_salarie [ou l'identifiant 
unique du salarié] like [si l'identifiant est une valeur numérique, tu 
peux utiliser le signe =, si c'est alphanumérique, il faut utiliser 
like] Vue1.Nom_du_salarie AND Table1.Mois like [même remarque que 
précédemment] Vue1.Mois) right outer join Vue2 on (Table1.nom_du_salarie 
like Vue

[users-fr] OOo 3 - Calc & Base - Petit exercice comptable

2009-09-24 Par sujet Ludovic CHEVALIER
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Bonjour.

Un petit exercice que je n'arrive pas à résoudre tout seul depuis
quelques temps de façon simple.

J'ai une table de base de données du style:
|Mois|Nom_du_salarie|Code_Budget|Heures|
|2009-01|Exemple_1|010|15|
|2009-01|Exemple_1|041|200|
|2009-01|Exemple_1|010|100|
...
où chaque enregistrement correspond à un temps de travail effectué par
un salarié tel mois sur le projet machin ayant pour code budget truc.

J'aimerais obtenir au final un tableau calc où j'aurais, pour un
utilisateur donné, sont pourcentage de temps de travail du mois sur tel
code budget.
Ça, j'y arrive aisément avec le pilote de données, quoique, je sois
obligé de sélectionner manuellement un mois et un utilisateur dans des
listes déroulantes pour chaque mois de chaque utilisateur (soit pour un
an complet 12* le nombre de salariés concernés)

Là où ça se complique encore plus, c'est que je voudrais calculer le
produit de chaque pourcentage de temps de travail du mois affecté à un
code budget par les charges patronales totales du mois d'une part et par
le salaire net du mois d'autre part, et ce pour chaque mois (j'espère
être assez clair).

J'ai pensé faire un tableau ou une table de bdd comme suit pour chaque
salarié:
|Mois|Salaire_net|Charges_Patronales|

Mais, je ne vois pas comment, ni avec le pilote de données, ni avec les
sous-totaux, faire quelque chose qui me permette de ne faire ces manip'
qu'une fois, et que je puisse réactualiser  régulièrement en un seul
clique lorsque je modifie ma bdd de initiale.

Avez-vous une idée de fonctionnalité ou d'utilisation d'OOo qui me
permette d'arriver à mes fins?

A bientôt et merci.

Ludovic
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkq7doAACgkQ/xNY0YFtdg5UDQCgtjV0KgISvejjFJ/Bb4L5j3cA
TDsAn2XtJymSHVkZbZSu2ePdinnt8WZl
=iR6j
-END PGP SIGNATURE-

-
To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
For additional commands, e-mail: users-h...@fr.openoffice.org