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 :

code vb avec BD sql


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 8
    Points
    8
    Par défaut code vb avec BD sql
    Bonjour,
    j'essaie de calculer, avec vb, la moyenne des valeurs de chaque ligne dans une table sql. le problème c'est que j'obtiens pour toutes les lignes la dernière valeur obtenu ( la valeur de la dernière ligne). le code est le suivant:
    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
    Private Sub TCP_DataArrival(ByVal bytesTotal As Long)
     
    Dim somme(20) As Double
    Dim moyenne(20) As Double
    k = 1
     
    Set rs = data.prevision.Execute("SELECT v.qte_reelle as xr,p.valeur_cl1  as xp1,p.valeur_cl2 as xp2,p.valeur_cl3 as xp3,p.valeur_cl4 as xp4 FROM prevision p,vente v where p.session = " & session & " and v.annee_vente+1=p.annee and v.semaine_vente=p.semaine and v.ref_gamme='" & Main.p_refgamme & "' and v.id_article= " & Main.p_idarticle)
     
    While Not rs.EOF
    With rs
      somme(k) = rs!xp1 + rs!xp2 + rs!xp3 + rs!xp4
      moyenne(k) = somme(k) / 4
     
    End With
    k = k + 1
    rs.MoveNext
    Wend
     
    For i = 1 To (k - 1)
    data.prevision.Execute "update prevision set fusion=" & Str(moyenne(i)) & " where session=" & session
    Next
    est ce que quelqu'un peut m'aider svp,

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Points : 216
    Points
    216
    Par défaut
    as-tu vérifier qu'est ce qu'il contient ton rs et les valeurs retourner dans

    l'instruction rs!xp1 + rs!xp2 + rs!xp3 + rs!xp4 ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    oui j'ai bien vérifier avec des msgbox

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Points : 216
    Points
    216
    Par défaut
    Difficile à t'aider sans voir exactement ce qu'elle retourne ta requete et si les valeurs retourner changes bien à chaque rs ou pas !

    Essaye de faire

    somme(k) = CDbl(rs!xp2) + CDbl(rs!xp2) + CDbl(rs!xp3) + CDbl(rs!xp4)


    Peux-tu aussi enlever le Wtih Rs et le End With ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    j'ai essayé votre proposition mais toujours avec le même résultat

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Points : 216
    Points
    216
    Par défaut
    Vérifie bien la requête sql si vraiment elle retourne le bon résultat je ne suis pas convaincu qu'elle le fait !!!
    utilise l'espion pour voir ce que contient ton rs et tes variables

  7. #7
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Bonjour,
    Déjà la clause Where est incorrectement écrite
    la syntaxe correcte => "... Where my field='" & myVal & "' ..."
    ensuite, je ne sais pas comment sont construites tes données dans la base
    mais AVG devrait te permettre d'obtenir la moyenne demandée directement depuis la requête sql.

  8. #8
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    je veut avoir la moyenne de 4 colonnes différentes et non pas de lignes.
    Pour chaque ligne de l'ensemble des enregistrements choisit je veux calculer la moyenne des 4colonnes et mettre le résultat dans la 5eme colonne (par exemple 20 lignes )

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Points : 216
    Points
    216
    Par défaut
    Citation Envoyé par mannana Voir le message
    je veut avoir la moyenne de 4 colonnes différentes et non pas de lignes.
    Pour chaque ligne de l'ensemble des enregistrements choisit je veux calculer la moyenne des 4colonnes et mettre le résultat dans la 5eme colonne (par exemple 20 lignes )
    Oui, mais ce que je souhaite savoir est : As tu vérifié le contenu de tes requêtes SQL ?

    essayes de lancer ta requete directe dans SQL server et vérifie ça donne quoi ou utilise l'espion sur VB pour voir le contenu !

  10. #10
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    avec MySql queru browser la nouvelle colonne mise à jour "fusion" contient les même valeurs pour toutes les lignes. ( la moyenne calculée pour la dernière ligne )
    les msgbox que j'ai affiché pour vérifier le calcul de la somme et la moyenne sont correcte.
    mon problème se situe au niveau de la requête de la mise à jour mais je n'arrive pas à l'identifier

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Points : 216
    Points
    216
    Par défaut
    C'est ce que je supposais dès le début, ta requete n'est pas bonne !!
    Je crois que tu as pour toutes les lignes la meme session, du coup ton SQL met à jour toutes les lignes ce qui est normal et ton erreur n'est pas technique mais fonctionnelle ou logique ....
    Ainsi je te conseille le suivant :

    -Tu changes ta condition where : si tu es obligée à avoir la mise à jour pour une session spécifique, alors crée toi une colonne additionnelle dans ta table (FLAG), qui contient des chiffres du genre : 1 pour la premiere ligne, 2 pour la deuxieme ligne etc....

    et ta boucle devient qqch du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To (k - 1)
    data.prevision.Execute "update prevision set fusion=" & Str(moyenne(i)) & " where session=" & session & " AND FLAG = " & k 
    Next i

  12. #12
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    ok. merci beaucoup. ca marche très bien avec votre proposition. merci beaucoup

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Points : 216
    Points
    216
    Par défaut
    De rien

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

Discussions similaires

  1. probleme avec requete SQL dans code VB6
    Par captainamerica75 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 30/05/2007, 21h36
  2. Pb avec requetes SQL
    Par Furtif_00 dans le forum Bases de données
    Réponses: 15
    Dernier message: 22/03/2004, 20h14
  3. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45

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