Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Table de calculs personnalisés multi-utilisateurs

4 réponses
Avatar
inconnu
Bonsoir à tous,

Je dispose d'une base de données contenant une table avec différents
élements chiffrés.
A chaque enregistrement correspond une valeur (euros, KG, colis, ...)
correspondante à une nature (KG vendus, CA Tarif, Montant_Remise, Transport,
Colis vendus, Colis achetés, ...).

Est-il possible, sans multipilier les requêtes en fonction de tous les
utilisateurs, de faire des calculs de base (+-*/) sur ces natures et valeurs

Ex :
Utilisateur 1 veut un état avec Nature A + Nature B - Nature C
Utilisateur 2 veut un état avec Nature A - Nature B + Nature C
etc ...
et l'utilisateur 3 qui veut les 2 versions de calcul

Je pense donc faire 2 tables :
- CALCUL : Num_Calcul, Nom_utilisateur, Champ_Sortie, Libellé
- DETAIL_CALCUL : Num_Calcul, Nature,Opération (Operation = ( ou + ou - ou
etc ..)

Sachant que le résulat d'un calcul ne peut être réutilisé dans un autre
calcul (c'est déjà assez compliqué)

Pour simplifier ma demande, je souhaite générer des tables personnalisés (nb
de champs variable) en fonction des calculs demandés par les différents
utilisateurs sans démultiplier les requêtes et permettre à l'utilisateur
d'être autonome.

Merci à tous ceux qui auront déjà pris la peine de tout lire et
particulièrement aux habitués qui résolvent nos problèmes même récurrents.

Bernard

4 réponses

Avatar
ze Titi
Bonjour inconnu

dans ta table DETAIL_CALCUL, je pense qu'il te manque un champ Nature2.
En effet, je vois mal comment tu réussiras à construire une requête si
tu ne sais pas quels sont les 2 champs à calculer.

Concernant la construction de cette fameuse requête, c'est un peu tordu
et je vois mal comment faire sans VBA...

Tu dois avoir au préalable construit une requête
"requêteDetailsCalcul") qui ramène tous les champs de "DETAIL_CALCUL"
pour chaque "CALCUL" (avec tous ses champs), ça me paraît évident.

Ta procédure VBA devrait ressembler à quelque chose de ce type (non
testé, pas de gestion d'erreurs et types de champ peut-être à modifier,
noms de tables et jointures à ajouter, bref, à adapter ;-)).

Sub construireRequête()
Dim rs1 as Recordset
Dim numCalcul as Long,oldField as String
Dim strSQL as String,strSELECT as String,strFROM as String,strGROUP
as String,strAS as String

set rs1=currentdb.openRecordset("requêteDetailsCalcul")
rs1.MoveLast
rs1.MoveFirst
strFROM="FROM taTable"
oldField=""
numCalcul=rs1!num_Calcul
While Not rs1.EOF
if rs1!num_Calcul<>numCalcul Then
strSQL=strSELECT & " " & strAS & " " & strFROM & " " &
left(strGROUP,len(strGROUP)-1)
currentdb.CreateQueryDef "Calcul " & numCalcul,strSQL
numCalcul=rs1!num_Calcul
strSELECT="SELECT "
strGROUP="GROUP BY "
End If
strSELECT=strSELECT & IIf(rs1!nature=oldField,"",rs1!nature)
strSELECT=strSELECT & rs1!Opération & rs1!nature2
strGROUP=strGROUP & IIf(rs1!nature=oldField,"",rs1!nature & ",")
oldField=rs1!nature2
strAS=rs1!Champ_Sortie
numCalcul=rs1!num_Calcul
rs1.MoveNext
Wend
End Sub

Ca me surprendrait beaucoup que ça te convienne tel quel mais j'espère
au moins que ça te donnera une piste...

dans ton message <456ded8e$0$25943$ du
Bonsoir à tous,

Je dispose d'une base de données contenant une table avec différents élements
chiffrés.
A chaque enregistrement correspond une valeur (euros, KG, colis, ...)
correspondante à une nature (KG vendus, CA Tarif, Montant_Remise, Transport,
Colis vendus, Colis achetés, ...).

Est-il possible, sans multipilier les requêtes en fonction de tous les
utilisateurs, de faire des calculs de base (+-*/) sur ces natures et valeurs

Ex :
Utilisateur 1 veut un état avec Nature A + Nature B - Nature C
Utilisateur 2 veut un état avec Nature A - Nature B + Nature C
etc ...
et l'utilisateur 3 qui veut les 2 versions de calcul

Je pense donc faire 2 tables :
- CALCUL : Num_Calcul, Nom_utilisateur, Champ_Sortie, Libellé
- DETAIL_CALCUL : Num_Calcul, Nature,Opération (Operation = ( ou + ou - ou
etc ..)

Sachant que le résulat d'un calcul ne peut être réutilisé dans un autre
calcul (c'est déjà assez compliqué)

Pour simplifier ma demande, je souhaite générer des tables personnalisés (nb
de champs variable) en fonction des calculs demandés par les différents
utilisateurs sans démultiplier les requêtes et permettre à l'utilisateur
d'être autonome.

Merci à tous ceux qui auront déjà pris la peine de tout lire et
particulièrement aux habitués qui résolvent nos problèmes même récurrents.

Bernard


--
Voilou !
Bon code
Cordialement,

Ze Titi

Avatar
ze Titi
Bonjour inconnu

dans ta table DETAIL_CALCUL, je pense qu'il te manque un champ Nature2.
En effet, je vois mal comment tu réussiras à construire une requête si
tu ne sais pas quels sont les 2 champs à calculer.

Concernant la construction de cette fameuse requête, c'est un peu tordu
et je vois mal comment faire sans VBA...

Tu dois avoir au préalable construit une requête
"requêteDetailsCalcul") qui ramène tous les champs de "DETAIL_CALCUL"
pour chaque "CALCUL" (avec tous ses champs), ça me paraît évident.

Ta procédure VBA devrait ressembler à quelque chose de ce type (non
testé, pas de gestion d'erreurs et types de champ peut-être à modifier,
noms de tables et jointures à ajouter, bref, à adapter ;-)).

Sub construireRequête()
Dim rs1 as Recordset
Dim numCalcul as Long,oldField as String
Dim strSQL as String,strSELECT as String,strFROM as String,strGROUP
as String,strAS as String

set rs1=currentdb.openRecordset("requêteDetailsCalcul")
rs1.MoveLast
rs1.MoveFirst
strSELECT="SELECT "
strGROUP="GROUP BY "
strFROM="FROM taTable"
oldField=""
numCalcul=rs1!num_Calcul
While Not rs1.EOF
if rs1!num_Calcul<>numCalcul Then
strSQL=strSELECT & " " & strAS & " " & strFROM & " " &
left(strGROUP,len(strGROUP)-1)
currentdb.CreateQueryDef "Calcul " & numCalcul,strSQL
numCalcul=rs1!num_Calcul
strSELECT="SELECT "
strGROUP="GROUP BY "
End If
strSELECT=strSELECT & IIf(rs1!nature=oldField,"",rs1!nature)
strSELECT=strSELECT & rs1!Opération & rs1!nature2
strGROUP=strGROUP & IIf(rs1!nature=oldField,"",rs1!nature & ",")
oldField=rs1!nature2
strAS=rs1!Champ_Sortie
numCalcul=rs1!num_Calcul
rs1.MoveNext
Wend
End Sub

Ca me surprendrait beaucoup que ça te convienne tel quel mais j'espère
au moins que ça te donnera une piste...

dans ton message <456ded8e$0$25943$ du
Bonsoir à tous,

Je dispose d'une base de données contenant une table avec différents
élements chiffrés.
A chaque enregistrement correspond une valeur (euros, KG, colis, ...)
correspondante à une nature (KG vendus, CA Tarif, Montant_Remise,
Transport, Colis vendus, Colis achetés, ...).

Est-il possible, sans multipilier les requêtes en fonction de tous les
utilisateurs, de faire des calculs de base (+-*/) sur ces natures et
valeurs

Ex :
Utilisateur 1 veut un état avec Nature A + Nature B - Nature C
Utilisateur 2 veut un état avec Nature A - Nature B + Nature C
etc ...
et l'utilisateur 3 qui veut les 2 versions de calcul

Je pense donc faire 2 tables :
- CALCUL : Num_Calcul, Nom_utilisateur, Champ_Sortie, Libellé
- DETAIL_CALCUL : Num_Calcul, Nature,Opération (Operation = ( ou + ou - ou
etc ..)

Sachant que le résulat d'un calcul ne peut être réutilisé dans un autre
calcul (c'est déjà assez compliqué)

Pour simplifier ma demande, je souhaite générer des tables personnalisés
(nb de champs variable) en fonction des calculs demandés par les différents
utilisateurs sans démultiplier les requêtes et permettre à l'utilisateur
d'être autonome.

Merci à tous ceux qui auront déjà pris la peine de tout lire et
particulièrement aux habitués qui résolvent nos problèmes même récurrents.

Bernard


--
Voilou !
Bon code
Cordialement,

Ze Titi

Avatar
ze Titi
Bonjour inconnu

j'ai oublié 2 lignes qui ont leur importance...

Sub construireRequête()
Dim rs1 as Recordset
Dim numCalcul as Long,oldField as String
Dim strSQL as String,strSELECT as String,strFROM as String,strGROUP
as String,strAS as String

set rs1=currentdb.openRecordset("requêteDetailsCalcul")
rs1.MoveLast
rs1.MoveFirst
strSELECT="SELECT "
strGROUP="GROUP BY "
strFROM="FROM taTable"
oldField=""
numCalcul=rs1!num_Calcul
While Not rs1.EOF
if rs1!num_Calcul<>numCalcul Then
strSQL=strSELECT & " " & strAS & " " & strFROM & " " &
left(strGROUP,len(strGROUP)-1)
currentdb.CreateQueryDef "Calcul " & numCalcul,strSQL
numCalcul=rs1!num_Calcul
strSELECT="SELECT "
strGROUP="GROUP BY "
End If
strSELECT=strSELECT & IIf(rs1!nature=oldField,"",rs1!nature)
strSELECT=strSELECT & rs1!Opération & rs1!nature2
strGROUP=strGROUP & IIf(rs1!nature=oldField,"",rs1!nature & ",")
oldField=rs1!nature2
strAS=rs1!Champ_Sortie
numCalcul=rs1!num_Calcul
rs1.MoveNext
Wend
End Sub

dans ton message <456ded8e$0$25943$ du
Bonsoir à tous,

Je dispose d'une base de données contenant une table avec différents élements
chiffrés.
A chaque enregistrement correspond une valeur (euros, KG, colis, ...)
correspondante à une nature (KG vendus, CA Tarif, Montant_Remise, Transport,
Colis vendus, Colis achetés, ...).

Est-il possible, sans multipilier les requêtes en fonction de tous les
utilisateurs, de faire des calculs de base (+-*/) sur ces natures et valeurs

Ex :
Utilisateur 1 veut un état avec Nature A + Nature B - Nature C
Utilisateur 2 veut un état avec Nature A - Nature B + Nature C
etc ...
et l'utilisateur 3 qui veut les 2 versions de calcul

Je pense donc faire 2 tables :
- CALCUL : Num_Calcul, Nom_utilisateur, Champ_Sortie, Libellé
- DETAIL_CALCUL : Num_Calcul, Nature,Opération (Operation = ( ou + ou - ou
etc ..)

Sachant que le résulat d'un calcul ne peut être réutilisé dans un autre
calcul (c'est déjà assez compliqué)

Pour simplifier ma demande, je souhaite générer des tables personnalisés (nb
de champs variable) en fonction des calculs demandés par les différents
utilisateurs sans démultiplier les requêtes et permettre à l'utilisateur
d'être autonome.

Merci à tous ceux qui auront déjà pris la peine de tout lire et
particulièrement aux habitués qui résolvent nos problèmes même récurrents.

Bernard


--
Voilou !
Bon code
Cordialement,

Ze Titi

Avatar
inconnu
Merci beaucoup ze titi,

Je me mets au travail.

Bernard
"ze Titi" a écrit dans le message de news:

Bonjour inconnu

j'ai oublié 2 lignes qui ont leur importance...

Sub construireRequête()
Dim rs1 as Recordset
Dim numCalcul as Long,oldField as String
Dim strSQL as String,strSELECT as String,strFROM as String,strGROUP as
String,strAS as String

set rs1=currentdb.openRecordset("requêteDetailsCalcul")
rs1.MoveLast
rs1.MoveFirst
strSELECT="SELECT "
strGROUP="GROUP BY "
strFROM="FROM taTable"
oldField=""
numCalcul=rs1!num_Calcul
While Not rs1.EOF
if rs1!num_Calcul<>numCalcul Then
strSQL=strSELECT & " " & strAS & " " & strFROM & " " &
left(strGROUP,len(strGROUP)-1)
currentdb.CreateQueryDef "Calcul " & numCalcul,strSQL
numCalcul=rs1!num_Calcul
strSELECT="SELECT "
strGROUP="GROUP BY "
End If
strSELECT=strSELECT & IIf(rs1!nature=oldField,"",rs1!nature)
strSELECT=strSELECT & rs1!Opération & rs1!nature2
strGROUP=strGROUP & IIf(rs1!nature=oldField,"",rs1!nature & ",")
oldField=rs1!nature2
strAS=rs1!Champ_Sortie
numCalcul=rs1!num_Calcul
rs1.MoveNext
Wend
End Sub

dans ton message <456ded8e$0$25943$ du 29/11/2006,
Bonsoir à tous,

Je dispose d'une base de données contenant une table avec différents
élements chiffrés.
A chaque enregistrement correspond une valeur (euros, KG, colis, ...)
correspondante à une nature (KG vendus, CA Tarif, Montant_Remise,
Transport, Colis vendus, Colis achetés, ...).

Est-il possible, sans multipilier les requêtes en fonction de tous les
utilisateurs, de faire des calculs de base (+-*/) sur ces natures et
valeurs

Ex :
Utilisateur 1 veut un état avec Nature A + Nature B - Nature C
Utilisateur 2 veut un état avec Nature A - Nature B + Nature C
etc ...
et l'utilisateur 3 qui veut les 2 versions de calcul

Je pense donc faire 2 tables :
- CALCUL : Num_Calcul, Nom_utilisateur, Champ_Sortie, Libellé
- DETAIL_CALCUL : Num_Calcul, Nature,Opération (Operation = ( ou + ou -
ou etc ..)

Sachant que le résulat d'un calcul ne peut être réutilisé dans un autre
calcul (c'est déjà assez compliqué)

Pour simplifier ma demande, je souhaite générer des tables personnalisés
(nb de champs variable) en fonction des calculs demandés par les
différents utilisateurs sans démultiplier les requêtes et permettre à
l'utilisateur d'être autonome.

Merci à tous ceux qui auront déjà pris la peine de tout lire et
particulièrement aux habitués qui résolvent nos problèmes même
récurrents.

Bernard


--
Voilou !
Bon code
Cordialement,

Ze Titi