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 :

Calculs dans VB???


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Calculs dans VB???
    Chers tous,

    Suis débutant en VB. J'ai une petite application dont la base de données est gérée par access. J'ai créé un form avec une zone de texte, je voudrais qu'il m'affiche la "SOMME" des données qui se trouvent dans la colonne d'une table. Quel est le code qui convient? La connexion à cette base de données est réalisée par le code ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim cn As ADODB.Connection
     
    Set rs = New ADODB.Recordset
    Set cn = New ADODB.Connection
     
    ConString = "provider=msdasql;dsn=facturation2"
    cn.Open ConString
    sql = "select * from DetailFacture"
    rs.CursorType = adOpenKeyset
    rs.LockType = adLockOptimistic
    rs.Open sql, cn, , , adCmdText
    Merci à tous

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je ne connais pas le sql mais j'ai trouvé ça (par hasard, hier) dans l'aide VBA. Si ça peut t'aider...

    Extrait
    Renvoie la somme d'une série de valeurs contenues dans un champ spécifié dans une requête.

    Syntaxe

    Sum(expr)

    L'argument expr représente une expression de chaîne qui identifie le champ contenant les données numériques dont vous souhaitez calculer la somme ou une expression qui exécute un calcul sur la base des données contenues dans ce champ. Les opérandes associés à expr peuvent comprendre le nom d'un champ de table, une constante ou une fonction (qui peut être soit intrinsèque, soit définie par l'utilisateur, à l'exclusion de toute autre fonction de regroupement SQL).

    Remarques

    La fonction Sum totalise les valeurs contenues dans un champ. Par exemple, vous pouvez utiliser la fonction Sum pour déterminer le coût total des frais de transport.

    La fonction Sum ignore les enregistrements contenant des champs avec la valeur Null. L'exemple suivant montre comment calculer la somme des produits contenus dans les champs Prix unitaire et Quantité.

    SELECT
    Sum([Prix unitaire] * Quantité)
    AS [Rapport Total] FROM [Détails commandes];

    Vous pouvez utiliser la fonction Sum dans une expression de requête. Vous pouvez également utiliser cette expression dans la propriété SQL d'un objet QueryDef ou lorsque vous créez un objet Recordset basé sur une requête SQL.
    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
    Sub SumX()
     
    	Dim dbs As Database, rst As Recordset
     
    	' Modifiez cette ligne pour préciser le chemin de 
    	' la base de données Comptoir sur l'ordinateur.
    	Set dbs = OpenDatabase("Comptoir.mdb")
     
    	' Calcule les ventes totales correspondant aux 
    	' commandes livrées au Royaume-Uni.  
    	Set rst = dbs.OpenRecordset("SELECT" _
    		& " Sum([Prix unitaire]*Quantité)" _
    		& " AS [Ventes RU totales] FROM Commandes" _
    		& " INNER JOIN [Détails commandes] ON" & " Commandes.[N° commande] = " _
     
    & "[Détails commandes].[N° commande]" _
    		& " WHERE ([Pays livraison] = 'Royaume-Uni');")
     
    	' Remplit l'objet Recordset.
    	rst.MoveLast
     
    	' Appelle la procédure EnumFields pour imprimer le 
    	' contenu de l'objet Recordset. Passe ce dernier et
    	' la largeur de champ désirée.
    	EnumFields rst, 15
     
    	dbs.Close
     
    End Sub
    A toutes fins utiles

    A+

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Calculs dans VB???
    Merci ouskel'n'or pour ces pistes de solution. J'ai essayé, mais je me rends compte que le code ne marche, la syntaxe devrait être différente.
    J' ai écrit ceci : Text1 = sum([Qte])
    je reçois ce message d'erreur : "erreur de compilation: nom externe non défini".

    A +

  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
    bien si tu as suivi le code à ouskel'n'or ... tu devrai écrire quelque chose du genre :

    aprés l'openRecodset.........


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

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

    La procédure ci-dessous devrait t'aider. Elle calcule et affiche la somme des montants contenus dans la colonne 'CA' d'une table nommée 'Clients'.

    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
    Private Sub cmdCount_Click()
    'Effectue la somme d'une sélection
     
      Dim SQL As String
      Dim cn As ADODB.Connection
      Dim rsClients As ADODB.Recordset
     
      Set cn = New ADODB.Connection
      Set rsClients = New ADODB.Recordset
     
      SQL = "SELECT SUM(CA) AS Expr1 From Clients"
      cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Developpez.com\Essais réponses\Essai4Tables.mdb"
     
      rsClients.CursorLocation = adUseClient
      rsClients.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
     
      MsgBox rsClients("Expr1")
     
    End Sub
    Au besoin, tu peux faire des totaux sur un regroupement (par exemple tous les clients de la zone xx). Mais c'est quant tu auras un peu avancé

    Bon courage

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Bonjour
    Tu trouveras ci-après une procédure te permettant d'obtenir au choix le total des chiffres d'affaire (dans la textbox), le total des chiffres d'affaire (dans la datagrid) ou le total du chiffre d'affaire pour une zone déterminée (dans la textbox), zone choisie dans une boite de dialogue.

    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
    Private Sub cmdCount_Click(Index As Integer)
    'Effectue la somme d'une sélection
     
      Dim SQL As String
      Dim cn As ADODB.Connection
      Dim rsTotauxZone As ADODB.Recordset
      Dim strMessage As String
      Dim strResponse As String
     
      Set cn = New ADODB.Connection
      Set rsTotauxZone = New ADODB.Recordset
     
      Select Case Index
        Case 0  'affiche le total des chiffres d'affaires dans la textbox
          SQL = "SELECT SUM(CA) AS Expr1 From Clients"
          cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Developpez.com\Essais réponses\Essai4Tables.mdb"
          rsTotauxZone.CursorLocation = adUseClient
          rsTotauxZone.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
          txtTotal = rsTotauxZone("Expr1")
        Case 1  'affiche le total des chiffres d'affaire dans la datagrid
          SQL = "SELECT ID_Zone, SUM(CA) AS Expr1 From Clients GROUP BY ID_Zone"
          cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Developpez.com\Essais réponses\Essai4Tables.mdb"
          rsTotauxZone.CursorLocation = adUseClient
          rsTotauxZone.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
          Set dgTotauxZones.DataSource = rsTotauxZone
        Case 2  'affiche le total d'une zone déterminée dans la textbox
          strMessage = "Quelle zone: N, S, E ou O?"
          strResponse = InputBox(strMessage, "Choix zone à totaliser", "N")
          SQL = "SELECT ID_Zone, SUM(CA) AS Expr1 From Clients GROUP BY ID_Zone HAVING (ID_Zone = '" & strResponse & "')"
          cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Developpez.com\Essais réponses\Essai4Tables.mdb"
          rsTotauxZone.CursorLocation = adUseClient
          rsTotauxZone.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
          txtTotal = rsTotauxZone("Expr1")
      End Select
     
    End Sub
    La table Access de cet exemple est la suivante:
    ID_Client , NomClient , ID_Categorie , ID_Zone,ID_Representant , CA
    CA , CARTONNAGE DE L'ALLIER , IND , S , DUP , 100
    CDL , CHARCUTERIE DE LENS , COM , N , DUC , 150
    CGV , CONSEIL GÉNÉRL DE VENDÉE,ADM , E , PET ,2 22
    GL , GALERIE LAFAYETTES , COM , E , DUR , 85
    PAL , PÊCHERIES ARTISANNALE DE LORIE , IND , O , PET , 12
    SIE , SOCIÉTÉ INFORMATIQUE DE L'EST , SERV , E , DUR , 518
    TC , TRANSPORTS DE CALAIS , SERV , N , DUC , 189
    USR , USINE DU RHÔNE , IND , S , DUP , 18
    Tu devra ajouter à une feuille un groupe de 3 boutons de commande (nommés cmdCount), une datagrid (dgTotauxZones) et une zone de text (txtTotal).
    Avec cela, je pense que tu peux aller assez loin. Pour des info concernant ces requêtes d'intégration, regarde dans MSDN
    Synthèse des valeurs de toutes les lignes d'une table
    et les sections complémentaires.

    Bon Dimanche

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/09/2005, 21h07
  2. Calcul dans un triggers : problème du +
    Par eXiaNazaire dans le forum Oracle
    Réponses: 3
    Dernier message: 07/01/2005, 10h14
  3. Recuperer un champ calculé dans une variable....
    Par vijeo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 21/12/2004, 14h57
  4. Calcul dans des champs de saisie
    Par leeloo076 dans le forum ASP
    Réponses: 4
    Dernier message: 07/04/2004, 10h09
  5. calcul dans une requête
    Par blaz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/12/2003, 10h31

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