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.NET Discussion :

Trier deux champs distincts en ordre décroissant en vb.net


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 7
    Par défaut Trier deux champs distincts en ordre décroissant en vb.net
    Bonjour,
    Je travail sur un projet de gestion des compétitions d'un établissement scolaire. Jusque-là tout marche à merveille, l'utilisateur peut créer un calendrier, y ajouter des résultats, définir les horaires, etc.
    Mon souci maintenant est de classer les équipes selon l'ordre des points obtenus après toutes les journées d'une phase. J'ai créé dans la table résultat quatre champs différents les deux premiers pour conserver les équipes (Eqp1 et Eqp2) c'est-à-dire la première équipe, celle qui évolue à la maison et la seconde, celle qui se déplace. Chaque équipe gagne des points après chaque rencontre disputée. Ces points sont stockées dans deux champs également (point1 et point2).
    Je voudrais maintenant classer eqp1 et eqp2 selon le point1 et point2 pour avoir l'équipe ayant engrangé le plus des points.
    J'ai cherché partout, je n'ai pas trouvé de solutions.
    Prière de m'apporter votre assistance.

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Il faut nous en dire plus sur ton code. Par exemple, lorsque tu parles de tables, s'agit-il de table en mémoire, ou de DataTable, ou bien parles-tu des tables dans une base de données ?

    Dans ce dernier cas (table en DB), ton problème devrait être solutionné rapidement par la clause SQL "... ORDER BY ...". Pour te répondre mieux sur cette posibilité, il nous faudrait ton code de lecture de la DB.
    S'il ne s'agit pas de tables en DB, il faut nous donner le code concerné.

    A bientôt,


  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 7
    Par défaut
    Voilà ma table. J'ai ajouté le code suivant pour espérer obtenir le résultat voulu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dim myCmd as new oledbcommand("SELECT SUM(point1 + point2) as som FROM TResultat WHERE eqp1 AND eqp2 = '" & me.cbEqpComp.selectedItem & " AND numComp = " & me.lblNumComp.text, maCon)
     
    dim myReader as oledbdatareader = myCmd.executereader
     
    if (myReader.Read()) then
    me.txtPoint1.text = myReader("som").ToString
    end if
    myReader.close
    maCon.close
    Le résultat qui est retourné ne reflète pas la réalité de la table.
    Merci d'avance de votre réponse.

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Suite ...

    Cela fonctionne aussi avec le DataReader, de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            Dim cmd As New OleDbCommand("SELECT SUM(Points) FROM ( SELECT SUM(point1) AS Points FROM TResultats WHERE eqp1 = '" & Me.cbEqpComp.SelectedItem & "' AND numComp = " & Me.lblNumComp.Text & " UNION SELECT SUM(point2) AS Points FROM TResultats WHERE eqp2 = '" & Me.cbEqpComp.SelectedItem & "' AND numComp = " & Me.lblNumComp.Text & ")", MaConexion)
     
            Dim rd As OleDbDataReader = cmd.ExecuteReader
     
            While rd.Read
                MessageBox.Show(rd.Item(0))
            End While
    Dis-moi comment ça va ...


  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 7
    Par défaut
    Merci à vous @phil Rob et @Thumb down de l'aide et surtout du temps accordé à ma requête. J'ai enfin réussi...
    Voici la requête complète :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim cmd As New OleDbCommand("SELECT SUM(Points) FROM ( SELECT SUM(point1) AS Points FROM TResultats WHERE eqp1 = '" & Me.cbSel.SelectedItem & "' 
    AND numComp = " & Form17.lblNumComp.Text & " UNION SELECT SUM(point2)  AS Points FROM TResultats WHERE eqp2 = '" & Me.cbSel.SelectedItem & "' AND numComp = " & Form17.lblNumComp.Text & ")", maCon)
    Dim rd As Object = cmd.ExecuteScalar
    msgbox("L'équipe : " & "a obtenue " & rd & " point (s)")
    #Affect33

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour Affect33,

    Ce n'est pas la requête qui est en cause (du moins si tes variables sont bien nommées, pourquoi Form17 te non Me comme pour les autres zones de texte ?).

    Problème viendrait plutôt de ta façon de lire les données ou de la manière d'utiliser le rd.

    Ta requête ne pouvant donner qu'un seul résultat par sélection, je te propose d'exécuter un ExecuteScalar.
    Je viens de faire ce test et ça fonctionne (attention, ma ComboBox est n'est nommée comme dans ta requête, et la connection se nomme MaConexion. Tu dois modifier si tu fais un copier-coller) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Dim cmd As New OleDbCommand("SELECT SUM(Points) FROM ( SELECT SUM(point1) AS Points FROM TResultats WHERE eqp1 = '" & Me.cbEqpComp.SelectedItem & "' AND numComp = " & Me.lblNumComp.Text & " UNION SELECT SUM(point2) AS Points FROM TResultats WHERE eqp2 = '" & Me.cbEqpComp.SelectedItem & "' AND numComp = " & Me.lblNumComp.Text & ")", MaConexion)
            MessageBox.Show(cmd.ExecuteScalar)
    Si ça ne va pas, envoie le code complet de la procédure.


  7. #7
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Désolé, je ne comprends pas ce que tu veux comme résultat (je reconnais que je particulièrement nul en matière de classements sportifs).

    Ta question initiale est "Trier deux champs distincts en ordre décroissant en vb.net". Je vois que tu traites des champs d'une table dans une DB et qu'effectivement tu as écrit une requête de lecture d'une table TResultat. A première vue, il suffirait d'y ajouter une clause ORDER BY. Mais de ta requête, tu tentes seulement d'afficher une seule valeur numérique qui est la somme de 2 champs (point1 et point2) choisis selon les valeurs données (...me.cbEqpComp.selectedItem & " AND numComp = " & me.lblNumComp.text). Il ne s'agit pas vraiment de tri.

    Si tu veux obtenir la somme des sommes des Point1 et Point2 correspondant au contenu d'un ComboBox et d'un Label, peut-être que tu devrais écrire ta requête comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ' Attention de ne pas oublier de ' de part et d'autre des expressions me.cbEqpComp.selectedItem
    ' A noter encore que dans cette requête, eqp1 et eqp2 sont identiques. Il s'agit donc de calculer la somme de tous les points obtenus par une même équipe (je commence peut-être à comprendre ce que tu veux ...  :D)))
    "SELECT SUM(point1 + point2) as som FROM TResultat WHERE eqp1 = '" & me.cbEqpComp.selectedItem & "' AND eqp2 = '" & me.cbEqpComp.selectedItem & "' AND numComp = " & me.lblNumComp.text
    J'espère que ceci te fera avancer. Si cela ne fonctionne pas, tu peux nous envoyer un extrait (ou toute) ta DB avec un exemple concret du résultat que tu souhaites.

    Bonne journée,



    Je reprends le message après réflexions, je pense qu'une équipe séléctionnée ne peut être à la fois en eqp1 et en eqp2. Elle sera soit en eqp1, soit en eqp2, mais pas dans les 2.
    Dans ce cas, ma requête ci-dessus doit être corrigée comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "SELECT SUM(point1 + point2) as som FROM TResultat WHERE eqp1 = '" & me.cbEqpComp.selectedItem & "' OR eqp2 = '" & me.cbEqpComp.selectedItem & "' AND numComp = " & me.lblNumComp.text

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 7
    Par défaut
    Citation Envoyé par Phil Rob Voir le message
    Bonjour,

    Désolé, je ne comprends pas ce que tu veux comme résultat (je reconnais que je particulièrement nul en matière de classements sportifs).

    Ta question initiale est "Trier deux champs distincts en ordre décroissant en vb.net". Je vois que tu traites des champs d'une table dans une DB et qu'effectivement tu as écrit une requête de lecture d'une table TResultat. A première vue, il suffirait d'y ajouter une clause ORDER BY. Mais de ta requête, tu tentes seulement d'afficher une seule valeur numérique qui est la somme de 2 champs (point1 et point2) choisis selon les valeurs données (...me.cbEqpComp.selectedItem & " AND numComp = " & me.lblNumComp.text). Il ne s'agit pas vraiment de tri.

    Si tu veux obtenir la somme des sommes des Point1 et Point2 correspondant au contenu d'un ComboBox et d'un Label, peut-être que tu devrais écrire ta requête comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ' Attention de ne pas oublier de ' de part et d'autre des expressions me.cbEqpComp.selectedItem
    ' A noter encore que dans cette requête, eqp1 et eqp2 sont identiques. Il s'agit donc de calculer la somme de tous les points obtenus par une même équipe (je commence peut-être à comprendre ce que tu veux ...  :D)))
    "SELECT SUM(point1 + point2) as som FROM TResultat WHERE eqp1 = '" & me.cbEqpComp.selectedItem & "' AND eqp2 = '" & me.cbEqpComp.selectedItem & "' AND numComp = " & me.lblNumComp.text
    J'espère que ceci te fera avancer. Si cela ne fonctionne pas, tu peux nous envoyer un extrait (ou toute) ta DB avec un exemple concret du résultat que tu souhaites.

    Bonne journée,



    Je reprends le message après réflexions, je pense qu'une équipe séléctionnée ne peut être à la fois en eqp1 et en eqp2. Elle sera soit en eqp1, soit en eqp2, mais pas dans les 2.
    Dans ce cas, ma requête ci-dessus doit être corrigée comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "SELECT SUM(point1 + point2) as som FROM TResultat WHERE eqp1 = '" & me.cbEqpComp.selectedItem & "' OR eqp2 = '" & me.cbEqpComp.selectedItem & "' AND numComp = " & me.lblNumComp.text
    Nom : resul.PNG
Affichages : 119
Taille : 12,1 Ko
    Ce tableau présente les résultats enregistrés dans une compétition particulière (ici, le football). Lorsque j'applique la requête que vous m'avez proposé, j'obtiens le résultat ci-après :
    Nom : class.PNG
Affichages : 119
Taille : 6,5 Ko
    Autant dire que la requête marche bien mais ne ramène pas le résultat réél de chaque équipe. Prière de m'apporter une assistance quant à ce.
    Je vous en remercie encore une fois de plus pour votre aide...

  9. #9
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    bonsoir,
    a ma connaissance l'équipe qui gagne prends 3 points celle qui perd 0 en ca d'égalité chaque équipe prend 1 point!
    donc pour faire un tri décroisant il faut faire une union des points et des équipes!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Sql as string="SELECT sum(point) as points,eqp
     from(SELECT point1  as point,eqp1 as eqp
    union all
    SELECT point2  as point,eqp2 as eqp)
    group by eqp
    order by sum(point) desc"

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 7
    Par défaut
    Merci à vous tous !
    Au fait, au début je voulais classer toutes les équipes dans une même opération mais vu que les points sont engrangés par les équipes séparément, je me suis donc décider de les afficher par équipe.
    De même, une même équipe peut se trouver dans le champ eqp1 et 2. Dans eqp1 si elle évolue à domicile et dans eqp2 si elle est en déplacement.
    Je vais essayer tous les codes proposés pour vérifier si vous avez apporté une solution à ma préoccupation
    Encore une fois merci ...

  11. #11
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Désolé mais je ne suis pas doué pour la gestion sportive ...

    Peux-tu m'envoyer le tableau de ton illustration avec toutes ses colonnes (en XLS ?)(ou mieux la DB Access, elle me permettrait de tester) et le résultat que tu veux obtenir par la requête sur ces quelques lignes du tableau ?

    Je réviserai la requête. Je dois avoir du temps cet après-midi ...



    Suite : J'ai compris le calcul ! Tout peu arriver ...
    Je me crée une DB pour tester ...

  12. #12
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonjour,
    Ici on trouve deux équipes équipe1 est lié aux points1 et équipe2 est lié aux points2

    On ne peut pas additionner les points de l'équipe2 à celui de l'équipe1 mais il faut faire une union comme je l'ai précisé dans mon poste précédent !

  13. #13
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    @Thumb down
    Tu as raison, il n'y a pas d'autre solution. Maintenant que j'ai compris comment on comptait les points ...
    Mais ta requête, telle que tu l'as envoyée ne peut être exécutée, notamment parce que manque ... FROM TResultat.

    @Affect33
    Voici donc la requête UNION dont tu as besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "SELECT SUM(Points) FROM ( SELECT SUM(point1) AS Points FROM TResultat WHERE eqp1 = '" & me.cbEqpComp.selectedItem & "' AND numComp = " & me.lblNumComp.text & " UNION SELECT SUM(point2)  AS Points FROM TResultat WHERE eqp2 = '" & me.cbEqpComp.selectedItem & "' AND numComp = " & me.lblNumComp.text  & ")"
    A toutes fins utiles, et pour le cas je me serais un peu planté en plaçant les guillemets et apostrophes, voici la requête telle que testée sous Access :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT SUM(Points) FROM
    (
    SELECT SUM(point1)  AS Points
    FROM TResultat
    WHERE eqp1 = 'JULIETTA' AND numComp = 1
    UNION
    SELECT SUM(point2)  AS Points
    FROM TResultat
    WHERE eqp2 = 'JULIETTA' AND numComp = 1
    )
    Bonne après-midi à vous deux.


  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 7
    Par défaut
    Citation Envoyé par Phil Rob Voir le message
    @Thumb downTu as raison, il n'y a pas d'autre solution. Maintenant que j'ai compris comment on comptait les points ...Mais ta requête, telle que tu l'as envoyée ne peut être exécutée, notamment parce que manque ... FROM TResultat.@Affect33Voici donc la requête UNION dont tu as besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT SUM(Points) FROM ( SELECT SUM(point1) AS Points FROM TResultat WHERE eqp1 = '" & me.cbEqpComp.selectedItem & "' AND numComp = " & me.lblNumComp.text & " UNION SELECT SUM(point2)  AS Points FROM TResultat WHERE eqp2 = '" & me.cbEqpComp.selectedItem & "' AND numComp = " & me.lblNumComp.text  & ")"
    A toutes fins utiles, et pour le cas je me serais un peu planté en plaçant les guillemets et apostrophes, voici la requête telle que testée sous Access :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(Points) FROM(SELECT SUM(point1)  AS PointsFROM TResultatWHERE eqp1 = 'JULIETTA' AND numComp = 1UNIONSELECT SUM(point2)  AS PointsFROM TResultatWHERE eqp2 = 'JULIETTA' AND numComp = 1)
    Bonne après-midi à vous deux.
    J'ai appliqué à la lettre votre requête (sauf que le nom de la table est plutôt TResultats) mais je n'arrive pas afficher le résultat comme c'était le cas avant. On m'affiche le message Points dans mon datareader.Voici la requête en VB.NET :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim cmd As New OleDbCommand("SELECT SUM(Points) FROM ( SELECT SUM(point1) AS Points FROM TResultats WHERE eqp1 = '" & Me.cbSel.SelectedItem & "' AND numComp = " & Form17.lblNumComp.Text & " UNION SELECT SUM(point2)  AS Points FROM TResultats WHERE eqp2 = '" & Me.cbSel.SelectedItem & "' AND numComp = " & Form17.lblNumComp.Text & ")", maCon)Dim rd As OleDbDataReader = cmd.ExecuteReader

  15. #15
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bien vu Phil on était pas loin que j'écrive un mot sur deux !

  16. #16
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    juste pour la frime!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $"SELECT SUM(Points) FROM ( SELECT SUM(point1) AS Points FROM TResultat WHERE eqp1 = '{me.cbEqpComp.selectedItem}' AND numComp = {me.lblNumComp.text} UNION SELECT SUM(point2)  AS Points FROM TResultat WHERE eqp2 = '{me.cbEqpComp.selectedItem}' AND numComp = {me.lblNumComp.text})"
    attention au apostrophe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     WHERE eqp1 = '{me.cbEqpComp.selectedItem.replace("'","''")}' 

  17. #17
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    OK Thumb down mais sur quel système exécute-tu cette requête ? Access ? Je ne m'en sors pas avec les {} !
    Voici ma DB de tests (si tu veux mettre ta requête au point) : DBTest.zip


  18. #18
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    vu que nous somme sur le forum VB.net j'imagine que la requête s'exécute en VB.net!

    Code Dotnet : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim Sql as string=$"SELECT SUM(Points) FROM ( SELECT SUM(point1) AS Points FROM TResultat WHERE eqp1 = '{me.cbEqpComp.selectedItem}' AND numComp = {me.lblNumComp.text} UNION SELECT SUM(point2)  AS Points FROM TResultat WHERE eqp2 = '{me.cbEqpComp.selectedItem}' AND numComp = {me.lblNumComp.text})"

  19. #19
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Désolé mais ça ne fonctionne pas et cela ne peut.
    Le caractère $ est rejeté dès le départ et puis, le contenu des zones de texte reprises dans la requête n'est pas intégré à la phrase SQL. La concaténation des variables et du texte SQL n'est pas bonne, il manque des guillemets.

    Voici le TXT de la requête envoyée à Access :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT SUM(Points) FROM ( SELECT SUM(point1) AS Points FROM TResultat WHERE eqp1 = '{me.cbEqpComp.selectedItem}' AND numComp = {me.lblNumComp.text} UNION SELECT SUM(point2)  AS Points FROM TResultat WHERE eqp2 = '{me.cbEqpComp.selectedItem}' AND numComp = {me.lblNumComp.text})

  20. #20
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    Imports System.Data.OleDb
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim selectedItem As String = "KINGAKATI"
            Dim a As SqlMetier = New SqlMetier("C:\Myrep\DBTest.mdb")
            a.OpenConnexion()
            Dim Sql As String = $"SELECT frm.eqp, Sum(frm.score) AS SommeDescore
    FROM (SELECT TResultat.eqp1 AS eqp, TResultat.score1 AS score
    FROM TResultat
    union all
    SELECT TResultat.eqp2 AS eqp, TResultat.score2 AS score
    FROM TResultat)  AS frm
    WHERE frm.eqp='{selectedItem}'
    GROUP BY frm.eqp;"
            Me.DataGridView1.DataSource = a.ToDatatable(a.Execute(Sql))
     
     
            a.CloseConnexion()
        End Sub
    End Class
    Class Connexion
        Public Structure ParmCmd
            Public Name As String
            Public Type As VarAdodb
            Public Direction As VarAdodb
            Public Size As Long
            Public Value As String
        End Structure
        Public Enum VarAdodb
            adAddNew = 16778240
            adAffectAllChapters = 4
            adAffectCurrent = 1
            adAffectGroup = 2
            adApproxPosition = 16384
            adArray = 8192
            adAsyncConnect = 16
            adAsyncExecute = 16
            adAsyncFetch = 32
            adAsyncFetchNonBlocking = 64
            adBigInt = 20
            adBinary = 128
            adBookmark = 8192
            adBookmarkCurrent = 0
            adBookmarkFirst = 1
            adBookmarkLast = 2
            adBoolean = 11
            adBSTR = 8
            adChapter = 136
            adChar = 129
            adClipString = 2
            adCmdFile = 256
            adCmdStoredProc = 4
            adCmdTable = 2
            adCmdTableDirect = 256
            adCmdText = 1
            adCmdUnknown = 8
            adCollectionRecord = 1
            adCompareEqual = 1
            adCompareGreaterThan = 2
            adCompareLessThan = 0
            adCompareNotComparable = 4
            adCompareNotEqual = 3
            adCopyAllowEmulation = 4
            adCopyNonRecursive = 2
            adCopyOverWrite = 1
            adCopyUnspecified = -1
            adCreateCollection = 8192
            adCreateNonCollection = 0
            adCreateOverwrite = 67108864
            adCreateStructDoc = -2147483648
            adCriteriaAllCols = 1
            adCriteriaKey = 0
            adCriteriaTimeStamp = 3
            adCriteriaUpdCols = 2
            adCRLF = -1
            adCurrency = 6
            adDate = 7
            adDBDate = 133
            adDBTime = 134
            adDBTimeStamp = 135
            adDecimal = 14
            adDefaultStream = -1
            adDelayFetchFields = 32768
            adDelete = 16779264
            adDouble = 5
            adEditAdd = 2
            adEditDelete = 4
            adEditInProgress = 1
            adEditNone = 0
            adEmpty = 0
            adErrBoundToCommand = 3707
            adErrCannotComplete = 3732
            adErrCantChangeConnection = 3748
            adVarChar = 200
            adParamInput = 1
        End Enum
        Public Enum CommAdo
            adCmdFile = 256
            adCmdStoredProc = 4
            adCmdTable = 2
            adCmdTableDirect = 521
            adCmdText = 1
            adCmdU
            nknown = 8
        End Enum
        Private cnx As OleDbConnection = Nothing
        Private _Fichier As String
        Public Sub New(ByVal Fichier As String)
            _Fichier = Fichier
        End Sub
        Public Sub OpenConnexion()
            Dim GenereCSTRING As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _Fichier & ";"
            cnx = New OleDbConnection(GenereCSTRING)
            Try
                cnx.Open()
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
        Public Function Execute(ByVal Sql As String) As Object
            Dim myObject As New Object
            Using cmd As New OleDb.OleDbCommand(Sql, cnx)
                Try
                    Return cmd.ExecuteReader()
                Catch ex As Exception
                    Return Nothing
                End Try
            End Using
        End Function
        Public Function Execute(ByVal Sql As String, ByVal Param As Object) As Object
            Dim myObject As New Object
            Using cmd As New OleDb.OleDbCommand(Sql, cnx)
                For Each c As Object In Param
     
     
                    If c.Size <> 0 Then cmd.Parameters.Add(c.Name, c.Type, c.Size).Value = c.Value
                Next
                Try
                    Return cmd.ExecuteReader()
                Catch ex As Exception
                    Return Nothing
                End Try
            End Using
        End Function
        Public Sub CloseConnexion()
            cnx.Close()
            cnx.Dispose()
            cnx = Nothing
        End Sub
     
     
    End Class
    Class SqlMetier
        Inherits Connexion
        Public Sub New(ByVal Fichier As String)
            MyBase.New(Fichier)
        End Sub
        Public Function ToDatatable(ByVal dr As OleDb.OleDbDataReader) As DataTable
            Dim dt As New DataTable()
            dt.Load(dr)
            Return dt
        End Function
    End Class

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

Discussions similaires

  1. GROUP BY : doublons et deux champs distincts
    Par glorieuxduc dans le forum Langage SQL
    Réponses: 13
    Dernier message: 01/07/2015, 16h51
  2. Trier un tableau dans l'ordre décroissant
    Par jminjmin dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/06/2014, 16h04
  3. Fonctions sur deux champs distincts
    Par Jordan62 dans le forum jQuery
    Réponses: 4
    Dernier message: 25/02/2014, 10h38
  4. Trier un champ VARCHAR par ordre numérique
    Par boteha dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/12/2007, 15h30
  5. [8.5] Trier des champs dans un ordre bien précis!
    Par Gotch59 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 25/05/2007, 15h02

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