IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Calcul sur différents enregistrements


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Calcul sur différents enregistrements
    Bonjour,

    je sèche là-dessus: savez-vous comment soustraire 2 champs différents de 2 enregistrements différents ?

    Je souhaite en effet comparer "date du jour" de la visite n°1 à "date de surveillance" de la visite n°2, afin de voir si un examen programmé en surveillance a bien été fait dans les délais.

    Si vous avez une idée, je suis à l'écoute...

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Points : 470
    Points
    470
    Par défaut
    C'est assez barbare comme demande... Comment sais-tu quels enregistrements sont concernés? Utilises-tu une clé?

  3. #3
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 621
    Points : 56 866
    Points
    56 866
    Billets dans le blog
    40
    Par défaut
    Bonjour,

    A quoi ressemble la/les table(s) de ces visites dans le détail (champs principaux) ?
    Comment sont ordonnées ces visites ?
    Un exemple ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Les visites sont identifiées par une clé. Les différents champs sont:

    - n° visite (numéro auto)
    - date du jour
    - conduite à tenir (mémo)
    - délai de surveillance (jours)
    - date de surveillance (affiché automatiquement à partir de la date du jour et du délai de surveillance)

    A chaque nouvelle visite je souhaite contrôler si la surveillance a été faite ou non, par une différence des dates (si négative, mettre un message de type "attention...")

    Je pensais même biaiser en affichant sur le formulaire l'export Excel d'une requête avec ces dates, pour un contrôle visuel sans affichage de message d'erreur, mais je ne vois pas comment actualiser le fichier Excel en direct...

    Par ailleurs ça ne m'ennuie pas de prendre le problème différemment et de refaire mes tables et formulaires au besoin.

    Merci pour votre aide !

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 621
    Points : 56 866
    Points
    56 866
    Billets dans le blog
    40
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    N°Visite	DateDuJour	Conduite	DelaiSurveillance
    123		01/08/2010	xxxx		12
    132		03/08/2010	yyyy		5
    137		12/08/2010	zzzz
    N°visite étant un NumAuto, comment savoir si pour la visite n°137, la première visite était la n°123 où la n°132 ??

    La "1ère" visite est celle qui correspond à la date du jour qui précède juste ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    oui, je vois... et si je rajoute un champ supplémentaire en clé (num auto), et que n° visite devient un champ numérique.
    Après la saisie de la date du jour, je met un n° de visite automatique: 1 puis 2 puis 3 .... pour chaque patient
    Le champ sera plus facilement identifiable...

    ça t'avances ? sinon si tu as une idée derrière la tête, n'hésites pas à m'éclairer, je la développerais et je me débrouillerais... je sèche pour savoir comment procéder

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Points : 470
    Points
    470
    Par défaut
    Citation Envoyé par f-leb Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    N°Visite	DateDuJour	Conduite	DelaiSurveillance
    123		01/08/2010	xxxx		12
    132		03/08/2010	yyyy		5
    137		12/08/2010	zzzz
    N°visite étant un NumAuto, comment savoir si pour la visite n°137, la première visite était la n°123 où la n°132 ??

    La "1ère" visite est celle qui correspond à la date du jour qui précède juste ?
    On peut supposer que le numéro auto est ordonné peut-être.
    Par contre Pulpita, un exemple visuel de ta table serait intéressant.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    ok, la table est sur un portable et mon pc relié à Internet est verrouillé (aucun lecteur externe)... ça donne cela dans ma reqête sur les dates:

    IdPatient IdVisite Date du jour Date de surveillance
    1 1 30/01/2000 30/04/2000
    1 2 02/04/2000 30/05/2000
    1 3 15/06/2000
    2 4 02/04/2000 01/05/2000

    voilà, mais je peux changer Visite pour que le numéro soit unique

  9. #9
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 621
    Points : 56 866
    Points
    56 866
    Billets dans le blog
    40
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IdPatient IdVisite	Datedujour	Datedesurveillance
    1		1	30/01/2000	30/04/2000
    1		2	02/04/2000	30/05/2000
    1		3	15/06/2000
    Le problème reste le même pour le patient n°1.
    Lors de la visite n°3, je dois me référer à la date de surveillance de la visite n°2 ou la date de surveillance de la visite n°1 ? Quelle est la logique ?

    Tu parles d’examen programmé, ne faut-il pas le prendre en compte ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    idVisite IdPatient	IdExamen	DateVisite	Datedesurveillance
    134	1		13		01/07/2010	10/07/2010
    138	1		13		12/07/2010	15/08/2010
    142	1		15		15/07/2010	15/08/2010
    155	1		13		05/08/2010	
    177	1		15		10/08/2010
    190	2		18		15/08/2010	01/10/2010

    Prenons la visite n°155 qui concerne le patient n°1 pour l’examen n°13.
    Si je cherche la visite qui concerne le même patient n°1 et pour le même examen n°13 mais qui précède juste (en se basant sur DateVisite), je tombe sur la visite n°138.

    Bref, pour écrire la requête qui va retrouver la bonne ligne, il faut un indicateur précis (valeur de 1 ou + champs, calcul/tri sur des dates…) qui permet de retrouver pour n’importe quelle visite, la ligne souhaitée où piocher la date de surveillance.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci de votre patience ^-^
    en fait il faut se basé sur votre premier code (examen programmé sans importance).
    à partir de cet exemple (qui correspond bien), je cherche à faire:

    pour la visite 2: 02/04/2000 - 30/04/2000
    pour la visite 3: 15/06/2000 - 30/05/2000
    et ainsi de suite...

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Points : 470
    Points
    470
    Par défaut
    Je n'ai pas tout compris mais si le but est de contrôler que la date du jour est supérieure à une date de surveillance, ne faut-il pas simplement mettre un contrôle lors de la mise à jour des données? En gros, si l'utilisateur renseigne une information, on vérifie les deux dates et si il y a anomalie, on lance de message d'avertissement.
    Mais peut-être que je suis à côté de la plaque...

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    mais c'est ce que je veux faire: comparer les 2 dates et lancer un message si anomalie! sauf que ces 2 dates ne sont pas dans le même enregistrements. Il y en a une à visite x et une à visite x+1.
    mais peut être que je me complique la vie et qu'en abordant le problème autrement on peut tout simplifier!

    donc pour être claire: je saisie par exemple à visite 1 la date de 01/01/2010, avec contrôle à 3 mois (donc date de surveillance au 01/04/2010).
    à visite 2 je mets la date du jour (05/04/2010): un message s'affiche: "le contrôle a bien été fait?"
    voilà en gros

    merci

  13. #13
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 621
    Points : 56 866
    Points
    56 866
    Billets dans le blog
    40
    Par défaut
    'soir

    il s'agit donc du même problème que Rainette dans sa discussion:
    MCD et gestion de données en fonction de dates


    Citation Envoyé par f-leb Voir le message
    par exemple une fonction VBA qui recherche l'index précédent une date pour une station donnée:
    Il suffit de transposer:

    "par exemple une fonction VBA qui recherche la DateSurveillance précédent une DateDuJour pour un patient donné"

    y'a plus qu'à mais tu n'hésite pas à revenir si ça se passe mal...

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci pour toutes ces pistes, ça m'a bien fait mouliner du bocal ^-^

    Bon, finalement je n'ai pas réussi à pister mes enregistrements en vba, et comme j'ai pas mal de tests à faire dessus j'ai fini par feinter en optant pour un export partiel / import complet via Excel (et dans Excel j'ai mis toutes mes formules pour jouer avec mes dates).

    Donc au final en cliquant sur 1 bouton, ça ré-initialise une table de requête-création, ça exporte 4 colonnes: mes 2 types de dates avec IdPatient et IdVisite (triés par ordre croissant pour éviter les mauvaises surprises); puis ça importe 5 colonnes (la même chose + un résultat de plein de test Excel).

    Mon dernier souci (je vous rassure j'en ai eu des pelletés mais me suis débrouillée) c'est qu'en actualisant et en important la feuille Excel, je récupère tout sauf le dernier champ calculé, systématiquement.

    J'ai donc mon résultat de test à toutes les visites, sauf la dernière (toujours un train de retard... )

    Des idées?

  15. #15
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Points : 470
    Points
    470
    Par défaut
    Certainement un problème de format des dernières cellules Excel, qui ne doivent pas être au même format que les lignes précédentes. Compare donc le format des données.

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    l'idée est intéressante mais mais les plages de cellules sont toutes paramétrées de la même manière, au même format...

    il me manque si peu pour réussir totalement!

  17. #17
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Points : 470
    Points
    470
    Par défaut
    A quoi correspond le dernier champ qui ne s'importe pas? As-tu essayé d'importer le dernier champ "manuellement"?

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    en fait dans ma dernière colonne Excel il y a une formule (du type =B3-A2). Toutes les lignes de cette colonne s'importent sans souci sauf la dernière. Si je rajoute un champ, celle qui était dernière s'importe enfin, mais pas la suivante...
    par contre je ne vois pas comment faire une importation manuelle

    c'est bizarre comme problème non ?

  19. #19
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Points : 470
    Points
    470
    Par défaut
    L'importation manuelle se réalise de la même manière que si tu importais une table, mais en changeant le type de fichier (choisir l'extension .xls). Sinon pourrais-tu indiquer la ligne de code qui te permet d'importer le fichier Excel?

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    au départ j'utilisais transfertspreadsheet mais finalement j'ai opté pour une macro (toute faite, pour les feignant ), et dans mon formulaire lorsque je clique sur un bouton les actions réinitialisation / exportation / importation se font à la suite.
    du coup j'exporte de A1: D1000 puis j'importe A1:E1000 (et dans Excel un calcul se fait automatiquement dans la colonne E (dont la dernière ligne non vide ne veut pas s'importer).

    le pire c'est qu'il doit exister une solution bien propre pour faire des calculs entre enregistrements mais après m'être cassée la tête , je contourne ... l'avantage de passer par Excel c'est de pouvoir appliquer des tonnes de formules assez facilement.

    Récap manip (je suis pas sûre d'avoir été globalement claire): mes enregistrements sont dans une table (normal), vont dans une requête triée par ordre croissant. Cette requête retourne dans une table (requête table création). Les 4 1ières colonnes de cette table sont exportées en xls via macro pré déf (là tout est ok quand je contrôle le fichier). La formule sur les lignes de la 5ième colonne s'applique automatiquement. Puis j'importe les 5 colonnes dans une table.

    Voilou...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [WD19] calculs sur les enregistrements d'une rupture dans un état
    Par elscorpio dans le forum WinDev
    Réponses: 3
    Dernier message: 14/11/2014, 14h19
  2. Réponses: 5
    Dernier message: 23/05/2012, 17h51
  3. [AC-2007] Faire des calculs sur un enregistrement et le précédent
    Par cslbcg dans le forum IHM
    Réponses: 3
    Dernier message: 10/02/2010, 08h46
  4. Calcul sur différentes colonnes
    Par climz dans le forum Access
    Réponses: 4
    Dernier message: 22/05/2006, 19h00
  5. Calcul de données present sur des enregistrements different
    Par logistik dans le forum Langage SQL
    Réponses: 6
    Dernier message: 04/05/2005, 16h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo