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 :

chiffres d’affaires Erroné


Sujet :

VB 6 et antérieur

  1. #1
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut chiffres d’affaires Erroné
    Salut mes frères
    Je suis entrain de terminer un projet (gestion des locations voiture).
    J’ai un module pour afficher les statistiques financières (la caisse).
    C’est un module pour afficher le chiffre d’affaire entre deux date définir.
    La requête qui exécute est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Command9_Click()
    Set rs = New ADODB.Recordset
    sql = "SELECT Sum(factureClient.mentantfacture) AS SommeDementantfacture From factureClient HAVING (((factureClient.dateFacture) Between #" & txtDateOne.Text & "# And #" & txtDeteTow.Text & "#));"
    rs.Open sql, "dsn=OdbcLocation"
    lblCAdeuxDate.Caption = rs(0)
    rs.Close
    End Sub
    Mais le problème que la somme des chiffres d’affaires entre les 2 dates défirent de la somme
    Des chiffres affaire réel.
    Merci

    Balises Code ajoutées par zazaraignée

  2. #2
    Membre éclairé Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Par défaut
    salut,
    tu dois ajouter la clause Group by dans ta requete avant Having et tu choisi un champ de ta table. De préférence utilise le numéro de client. Tu mets ce champs dans le select sinon ca marche pas.

  3. #3
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut format date
    Merci frère, mais le critère (prédicat) de recherche c’est les 2 dates.
    explication:
    On a plusieurs facturas alors on veux savoir quelles la somme des montants des facturas pendant les 2 dates.
    Par exemple entre le 01/02/2005 et 06/08/2005 la somme des montants facturas est 23500 $.
    (Ici on ignore le client).

    ==========
    Ok je croix il y a un problème au niveau de la lecteur des formats « date »
    Car quand je tape 30/01/2005 et 15//3/2005 sa marche bien car bien sur le 30 signifier
    Le jour et le 3 le mois mars, mais quand je tape 04/03/2005 sa marche pas il fait pas la déférence pas entre les jours et le mois

    merci

  4. #4
    Membre éclairé Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Par défaut
    salut,
    d'accord je vois. mais est ce ke ta rajouté le group by? group par date si tu veux.

  5. #5
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    oui meme si sa marche pas

  6. #6
    Membre Expert
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Par défaut
    je presume que ta base de donnees est access. Si c'est le cas alors voici un code qui devrais t'aider


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Command9_Click()
    Set rs = New ADODB.Recordset
    sql = "SELECT Sum(factureClient.mentantfacture) AS SommeDementantfacture From factureClient HAVING (((factureClient.dateFacture) Between #" & _
     format(txtDateOne.Text,"mm/dd/yyyy") & _
    "# And #" & format(txtDeteTow.Text,,"mm/dd/yyyy")  & "#));"
    rs.Open sql, "dsn=OdbcLocation"
    lblCAdeuxDate.Caption = rs(0)
    rs.Close
    End Sub

  7. #7
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut Type incompatible
    Merci sovo mais toujours un problème de compatibilité
    ==================Message erreur===========
    Erreur d’exécution ‘13’
    Type incompatible

    ========================================

  8. #8
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Bonsoir

    Le code suivant affiche dans txtTotal le total des montant des factures entre les dates saisies dans txtDebut et txtFin. Et, cerise sur le gateau, ce total est bon . Remarques dans la chaîne SQL la fonction DateValue.
    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
     
    Private Sub Command1_Click()
     
      Dim strConnex As String
      Dim SQL As String
      Dim DateDeb As Date
      Dim DateFin As Date
     
      Set cn = New ADODB.Connection
      Set rs = New ADODB.Recordset
     
      strConnex = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Developpez.com\Data\Facturation.mdb"
      cn.Open strConnex
     
      DateDeb = txtDateDeb
      DateFin = txtDateFin
     
      SQL = "SELECT SUM(TotalFact) AS Expr1 " & _
            "From EnTetesFact WHERE DateValue(DateFact) BETWEEN '" & DateDeb & "' AND '" & DateFin & "'"
     
      rs.CursorLocation = adUseClient
      rs.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
     
      txtTotal = rs!Expr1
     
    End Sub

  9. #9
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut merci
    Merci frère de me expliquer les deux ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rs.CursorLocation = adUseClient
    rs.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
    Balises code ajoutées encore une fois par zazaraignée...

  10. #10
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    Avec le nom de dieu j arrive pas a comprendre se code là.
    Merci frère jacma sa marche bien ton code mais seulement pour certain dates, mais avec des autres dates il me affiche pas la somme correcte wawwwwwwww

  11. #11
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Bonjour

    La propriété CursorLocation définit ou renvoit la position de la bibliothèque de curseurs. La valeur adUseClient indique l'utilisation d'une bibliothèque de curseurs locale. Ces curseurs permettent souvent des fonctions non accessible avec un curseur externe.

    Pour rs.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText, on ouvre un recordset avec la chaîne SQL, la connexion cn. La propriété adOpenDynamic définit le type de curseur, le dit curseur permettant ainsi ajouts, modifications et suppressions tous les déplacements. La propriété adLockOptimistic concerne le vérouillage. Cette propriété permet de ne vérouiller l'accès d'un enregistrement que lors d'un appel update.

    Mais tu devrais regarder de plus près MSDN où tout ceci est expliqué.

    Quant à ton problème de dates, quelle sont les dates qui "fonctionnent" et celles qui ne fonctionnent pas?

  12. #12
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    Salut :
    entre 10/01/2005 et 11/01/2005 sa marche Bien toujours.
    Mais entre le 06/08/2005 et 28/08/2005 sa marche pas .

  13. #13
    Membre émérite
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Par défaut
    Citation Envoyé par amazircool
    Salut :
    entre 10/01/2005 et 11/01/2005 sa marche Bien toujours.
    Mais entre le 06/08/2005 et 28/08/2005 sa marche pas .
    Salut,

    Tu devrais contrôler le format de tes dates car il est possible qu'au niveau de ton programme, il se passe la chose suivante:

    10/01/2005 => 1er octobre 2005
    11/01/2005 => 1er novembre 2005.

    Tu en déduiras donc à quel niveau cela peut poser problème ...

    +

    Théo

  14. #14
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Bonjour

    J'ai testé sur tes dates, et tout est OK. Est-ce que tu as utilisé le code tel quel, avec pour la saise des TextBox sans précision de format. La fonction DateValue est censée résoudre ces problèmes de date selon le contexte régionnal.

    Comment est paramétré le champ Date de ta base? En ce qui me concerne: type de donnée Date/Heure et format Date abrégé. Sait-on jamais...

    Je t'invite également à consulter la page "Requêtes SQL liées aux paramètres régionaux et portant sur des dates" de MSDN. Tu y trouvera sans doute des informations intéressantes.

  15. #15
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    Citation Envoyé par Theocourant
    Salut,

    Tu devrais contrôler le format de tes dates car il est possible qu'au niveau de ton programme, il se passe la chose suivante:

    10/01/2005 => 1er octobre 2005
    11/01/2005 => 1er novembre 2005.

    Tu en déduiras donc à quel niveau cela peut poser problème ...
    +
    Théo
    Theocourant non je croix pas.
    ===========
    Oui frère jacma j’utilisé le code tel quel sans précision de format
    Les champs de ma base sont paramétré comme « Date, abrégé »

    "Requêtes SQL liées aux paramètres régionaux et portant sur des dates" il est ou’ sa ?

  16. #16
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Citation Envoyé par amazircool
    "Requêtes SQL liées aux paramètres régionaux et portant sur des dates" il est ou’ sa ?
    Dans MSDN, c'est le titre. Saisi le comme tel avec une recherche sur les titres. Tu peux également rechercher sur le terme "DateValue" et tu trouveras ce chapitre parmis les résultats.

  17. #17
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut type format date
    Salut. Je suis en cors déborder.
    Quand je tape la date 10/01/2005 (le 10 janvier) il m’afficher le chiffre d’affaire de 01/10/2005 (le premier octobre).
    Après g assai de utiliser la format suivant :
    ====================================
    SQL = "SELECT Sum(factureClient.mentantfacture) AS SommeDementantfacture,factureClient.dateFacture From factureClient GROUP BY factureClient.dateFacture HAVING factureClient.dateFacture=#" & Format(VarDateCaisse, "dd/mm/yyyy") & "#"
    =====================================
    Même problème.
    Le générateur access ne comprendre pas je croix que les format date américain : mois/jour/année, si non sur le formulaire « chiffre d’affaire » je dois forcer la saisie avec une format américain.
    Merci mes frères

  18. #18
    Membre Expert
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Par défaut
    cecomme je te l'ai dit dans mon precedent post tu doit faire une conversion de tes dates dans la requette.

    Dans ta base tes donnes sont (je suppose) dd/mm/yyyy
    Dans ton appli tes donnes sont (je suppose) dd/mm/yyyy

    ne change donc rien mais ecris ta requette comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SQL = "SELECT Sum(factureClient.mentantfacture) AS " & _ 
    "SommeDementantfacture,factureClient.dateFacture From factureClient " & _
    "GROUP BY factureClient.dateFacture HAVING factureClient.dateFacture=#" & _ 
    Format(VarDateCaisse, "mm/dd/yyyy") & "#"
    chez moi c'est comme ca que je fait et ca marche.

  19. #19
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    Tout a fait raison frère sovo merci et c’est bien marche maintenant
    Chapeau frère et merci pour toi jacma

  20. #20
    Membre émérite
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Par défaut
    Citation Envoyé par amazircool
    Salut. Je suis en cors déborder.
    Quand je tape la date 10/01/2005 (le 10 janvier) il m’afficher le chiffre d’affaire de 01/10/2005 (le premier octobre).

    Donc j'avais raison ...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/04/2014, 21h32
  2. Réponses: 13
    Dernier message: 15/01/2014, 00h05
  3. Smile enregistre une croissance de 20 % de son chiffre d’affaires
    Par Hinault Romaric dans le forum Forum général Solutions d'entreprise
    Réponses: 0
    Dernier message: 27/02/2013, 15h41
  4. Réponses: 0
    Dernier message: 20/10/2010, 10h27
  5. Réponses: 0
    Dernier message: 14/05/2010, 14h30

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