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

VB 6 et antérieur Discussion :

[VB6] Comparaison de deux dates dans une requête


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut [VB6] Comparaison de deux dates dans une requête
    Salut,
    J'ai dans ma table concernant des vaccins des enregistrement qui peuvent se répéter mais avec des dates de MAJ différentes. Dans mon code, je teste si vraiment un meme vaccin se répete plusieurs fois. si c'est le cas, je dois laisser dans la table que celui qui a une date de MAJ la + récente par une requete de suppression. Je vous informe que la date de MAJ est un champs de ma table.

    J'ai essayé la requete suivante mais ca marche pas :

    select * from NomTAble t1 where t1.cde=" & code & " and t1.vaccin like '"&vaccin&"' and dteMAJ <= ( select t2.dteMAj from NomTAble t2 where t2.cde=" & code & " and t2.vaccin like '"&vaccin&"')

    pour la valeur " & code & ", c'est le code de la personne concernée par le vaccin.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    .. merci de modifier ton titre en y rajoutant un tag ... [VB...

    Quand tu dis cela ne marche pas, cela ve dire quoi ? message d'erreur ?..?

    & code & : est bien une valeur numérique..?

  3. #3
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    avant de mettre la requete dans mon code, je lai testé directement dans SQL Server, mais ca marchce pas, il m'affiche le message suivant : "la sous requete a retourné plusieurs valeurs. cela n'est pas autorisé lorsque la sous requête suit =, !=, <, =<, >, >= ou quand elle est utilisée en tant qu'expression.

    pour & code &, effectivement c'est une valeur numérique. C'est le code de la personne qui a ces vaccins.

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    alors c'est pas trop .. du VB ..?
    bon à priori ton message d'erreur est clair il faut que tu te débrouille pour que ta sous requête ne renvoi qu'un seul élément...! peu-être en utilisant la fonciton max pour avoir la date la plus récente.

  5. #5
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    salut,
    LA requete que j'ai voulu faire sincerement ne m'a pas servi de grande chose.
    la j'ai pensé à une autre solution mais qui me préente un grand risque. en fait, j'ai créé un objet "OBJ1" qui me permet de sélectionner la ligne qui a la date de MAJ la plus recente en utilisant le Mot Clef Top dans ma requete puisque j'ai des lignes qui ont la meme Date de MAJ. Après, il me reste a supprimer les autres lignes du vaccin en question. Alors j'ai pensé à créer un autre objet "Obj2" qui va me supprimer toutes les lignes de la BD y compris celui que j'ai séléctionné avec "Obj1", puis je vais réinsérer la ligne de l'objet "obj1" dans la table. les inconvéniants de cette facon c'est la lenteur d'execution parce que ce bloc se trouve dans une boucle. 2èment si l'application plante après la suppresion alors j'aurais perdu toutes les lignes de la table. Est ce que vous avez une idée ou une autre solution pour régler ce prob??

  6. #6
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    je crois tu pourras trouver une réponse purement Sql. Il faudra cependant poser ton problème sur le forum prévu à cet effet
    Pour avoir la date de mise à jour la plus récente (si elle est unique) tu peux faire quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM nomTable WHERE DateMAJ = SELECT MAX(DateMAJ) FROM nomTable

  7. #7
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    le problème c'est qu'elle n'est pa unique. j'ai des lignes pour le meme vaccin qui ont la meme date de maj.

  8. #8
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Et laquelle de ces lignes choisir ?
    Par hasard ?

  9. #9
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    je choisi la première en utilisant la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select Top 1 * from NomTable where vaccin like 'Nom_vaccin'
    et me rerste a supprimer les autres lignes qui restent.

  10. #10
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Pour la selection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT top 1 * FROM nomTable WHERE DateMAJ = SELECT MAX(DateMAJ) FROM nomTable

  11. #11
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    Oui je l'ai deja fait en utilisant Order By dteMAj desc et me donne directement la date recente. MAis le prob c'est dans la suppresion des autres lignes en doublons.

  12. #12
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Je crois qu'il y 'a un tutoriel sur la gestion des doublons quelque part sur le site .

  13. #13
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    oui je l'ai trouvé et j'ai trouvé une bonne solution que j'ai commencé d'implémenter dans mon code. Merci de votre aide. Bon reste de journée. Abientot

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Comparaison de date dans une requête sql
    Par tadresse dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 28/08/2013, 15h26
  2. Réponses: 8
    Dernier message: 17/07/2012, 14h43
  3. Problème de comparaison de deux dates dans une requête
    Par amira88 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/12/2010, 09h02
  4. recherche entre deux dates dans une requête
    Par emmanuel4945 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/11/2006, 21h42
  5. Comparaison entre deux dates dans une table
    Par Biskot75 dans le forum Access
    Réponses: 6
    Dernier message: 19/09/2006, 11h16

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