Affichage consommation

Signaler
Messages postés
152
Date d'inscription
samedi 11 novembre 2006
Statut
Membre
Dernière intervention
5 décembre 2014
-
bonjour,
j'ai une table dans ma BD constituée des champs suivants: (ref_article,designation,mois_vente,qte_vendu,stock), et j'ai un datagridview que je veux remplir par la consommation des trois derniers mois mais le chargement et très lent car j'exécute 3 requètes (une requète pour chaque mois) dans la première je remplie mon datagridview avec les référence articles , les designations et la quantitée en stock, puis pour chaque mois je parcours tout le datagridview et je vérifie les référence pour mettre dans le champs des consommation les données convenables, y'a t'il une autre solution plus rapide:

Dim s As Date
        Dim mois_courant As String
        s = Now
        If s.Month = 1 Then
            mois_courant = 10
        ElseIf s.Month = 2 Then
            mois_courant = 11
        ElseIf s.Month = 3 Then
            mois_courant = 12
        Else
            mois_courant = s.Month - 3
        End If
       cnx.ConnectionString = chaine
       
        Try
            cnx.Open()
            Dim cmd As New SqlCommand("SELECT dbo.DP_ARTICLES.ART_NUM,dbo.DP_ARTICLES.ART_LIB,ISNULL(sum(dbo.DP_VENTES_LIGNES.QteVendues),0),ISNULL(dbo.DP_STOCKS.STO_QTE, 0) FROM (((dbo.DP_ARTICLES LEFT JOIN  dbo.DP_VENTES_LIGNES ON dbo.DP_VENTES_LIGNES.VL_ART_UK=dbo.DP_ARTICLES.ART_UK) LEFT JOIN  dbo.DP_STOCKS ON dbo.DP_STOCKS.STO_ART_NUM=dbo.DP_ARTICLES.ART_NUM)LEFT JOIN  dbo.DP_VENTES ON dbo.DP_VENTES.V_DOCNUMBIN=dbo.DP_VENTES_LIGNES.VL_DOCNUMBIN) where (dbo.DP_VENTES.V_DOCMOIS  =  '" & "M" + mois_courant & "') GROUP BY dbo.DP_ARTICLES.ART_NUM, dbo.DP_ARTICLES.ART_LIB, dbo.DP_STOCKS.STO_QTE ORDER BY dbo.DP_ARTICLES.ART_LIB", cnx)
            Dim reader As SqlDataReader
            reader = cmd.ExecuteReader()
            If reader.HasRows Then
                While reader.Read()

                    Dim ref As String = reader.GetString(0)
                    Dim M1 As Decimal = reader.GetDecimal(2)
                    For x As Integer = 0 To ConsomFourn.DataGridView1.Rows.Count - 1
                        If (ref = ConsomFourn.DataGridView1.Rows.Item(x).Cells(0).Value) Then
                            ConsomFourn.DsDocVente.Tables("Consommation").Rows(x).Item(4) = M1
                        End If
                    Next

                End While
                reader.Close()
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical)
        End Try
        cnx.Close()