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

Access Discussion :

calcul de valeurs présentes dans une liste de résultat


Sujet :

Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut calcul de valeurs présentes dans une liste de résultat
    Bonjour,

    J'ai créé un formulaire de recherche multi-critère sur le modèle du tuto de Caféine et cela fonctionne correctement (MERCI CAFEINE!!!)

    Ma liste de résultat fait apparaitre l'historique des mouvements d'échange de palettes entre une société et mon entreprise de transport.
    Dans cette liste, il y à un champ SOLDE qui calcule le solde entre le nombre de palette ENTREE et le nombre de palette SORTIE du camion pour chaque enregistrement.

    Après avoir fait ma recherche pour un entreprise , j'aimerais afficher dans une zone de texte, le total du Solde (somme des valeurs présentes dans la colonne SOLDE).

    Merci pour votre aide!

  2. #2
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Essaye avec la fonction DSum (voir aide VBA), à laquelle tu passeras le même string SQL (=critères de sélection) que tu as passé à la liste.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txtTotalSolde = DSum("NomDuChampSolde", "NomTableOuRequeteSource", strSqlCriteres)
    où, bien sûr, tu mettras les vrais noms de champ, de table ou de requête et de la variable qui contient les critères de sélection.
    Développement Office, support technique, assistance, sur place (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci pour ta réponse,

    Le calcul fonctionne correctement mais

    un message d'erreur ai apparu lorsque je clique sur un controle de mon formulaire:
    Erreur d'execution '3075':
    Erreur de syntaxe dans la date dans l'expression 'CompteMouvements!N°MOUVEMENT <>0 And CompteMouvements!NOM = " And CompteMouvements!DATE <= ##'.

    Mon code:
    Private Sub RefreshQuery()


    Dim SQL As String
    Dim SQLWhere As String
    SQL = "SELECT N°MOUVEMENT, NOM, DATE, TYPE_MOUVEMENT, ENTREE, SORTIE, SOLDE, NOM_SOCIETE, N°LETTRE_VOITURE FROM CompteMouvements Where CompteMouvements!N°MOUVEMENT <> 0 "
    If Not Me!chkSociété Then
    SQL = SQL & "And CompteMouvements!NOM = '" & Me.CmbRechSociété & "' "
    End If
    If Not Me!ChkTransporteur Then
    SQL = SQL & "And CompteMouvements!NOM_SOCIETE = '" & Me.CmbRechTransporteur & "' "
    End If
    If Not Me!ChkFinPériode Then
    SQL = SQL & "And CompteMouvements!DATE <= #" & Format(Me.TxtFinPériode, "mm/dd/yyyy") & "# "
    End If

    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
    SQL = SQL & ";"

    CurrentDb.QueryDefs("RequeteTest").SQL = SQL

    TxtSoldeTotal = DSum("SOLDE", "CompteMouvements", SQLWhere)

    Me.LstResultatRech.RowSource = SQL
    Me.LstResultatRech.Requery
    Et lorsque je met
    TxtSoldeTotal = DSum("SOLDE", "CompteMouvements", "SQLWhere")

    j'ai le message "erreur 2001: opération annulée" avec la meme ligne de surligné.

  4. #4
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Bon, dans l'ordre :

    - faut absolument que tu modifies tes tables tout de suite (+ tu attends, + ça va te coûter cher de tout refaire).
    Remplace tous les champs qui contiennent un "N°" par des "No", avec la lettre 'o' minuscule. Voir les conventions de nommage (article de Jean-Phil. Ambrosino, si ma mémoire est bonne). Sinon, gros bobo difficile à déboguer plus tard.

    - ton bug paraît clair. Je cite :
    Erreur de syntaxe dans la date [...]And CompteMouvements!DATE <= ##'.
    Effectivement, si y a pas de date, SQL va faire une tête

    Donc, si ton string SQL ne contient pas de date, c'est qu'elle est vide (valeur nulle).
    Donc, à toi de choisir :
    - si ChkFinPériode est vrai et que TxtFinPériode est null, qu'est-ce que tu veux faire :
    1- engueuler l'utilisateur (MsgBox "Faut indiquer une date..." > Exit Sub)
    2- ou bien, ignorer le critère sans rien dire
    3- ou bien remplacer le critère par " AND CompteMouvements!DATE Is Null"

    C'est toi le chef, c'est toi qui décide.
    Développement Office, support technique, assistance, sur place (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    bonjour,

    Merci pour tes réponses PapyTurbo,
    -j'ai modifié mes tables comme tu me l'a conseillé.

    -pour le bug, j'ai eu une idée, j'ai mis la date du jour par défaut dans la textBox de Fin de période.
    J'ai plus de problème sauf si on efface la valeur...
    ça te semble correct comme sollution?

  6. #6
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Non.

    Ca ne répond pas à la question ci-dessus :
    si [...] et TxtFinPériode est null, qu'est-ce que tu veux faire ?
    La date du jour par défaut, c'est excellent, mais ça n'empêche pas l'utilisateur de la vider, puis cliquer sur ChkFinPériode et envoyer le bouzin (à la casse !)

    Je pense que tu es toujours obligé de traiter le cas où la date est nulle.
    Développement Office, support technique, assistance, sur place (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    bon d'accord....
    alors, je vais choisir la réponse 2 "Ignorer le critère sans rien dire" !

    Aurais-tu un de code à me proposer?

  8. #8
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Tu sais pas faire un test ?
    Genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If isnull(TxtFinPériode) Then
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsNull(TxtFinPériode) Then
    Mais, ach, lequel prendre, et où le mettre ?
    Je te laisse faire ça. C'est ton programme.
    Développement Office, support technique, assistance, sur place (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci pour ton aide Papy!!

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 03/10/2012, 14h51
  2. Réponses: 1
    Dernier message: 28/07/2006, 09h17
  3. Réponses: 2
    Dernier message: 17/05/2006, 18h19
  4. Tester qu'une valeur existe dans une "liste"
    Par Oluha dans le forum Langage
    Réponses: 12
    Dernier message: 04/08/2005, 23h01
  5. [Liste] Savoir si un élément est présent dans une liste
    Par Wookai dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 02/05/2005, 20h44

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