75ROLLER
Messages postés40Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention19 octobre 2007
-
15 déc. 2006 à 13:42
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 2007
-
19 déc. 2006 à 16:28
Bon la dernière fois je n'ai pas été clair dans ma demande d aide, alors je vais essayé de l être.
Je me sers de VB6, avec une base access,pour aceder a cette base je me sers du contrôle ADO.
L interface graphique contien deux datacombo le premier pour les fournisseurs le deuxième pour le mode de paiement (cheque,CB…etc). l interface à un label pour faire la somme de tous les produits d’un fournisseur sélectionné dans un datacombo (tous mode de paiement confondus) la deuxieme etape et quand je selectionne le mode de paiement donc (cheque ou CB ou especes) que la somme de ce meme fournisseur avec le mode de paiement selectionne me face le somme et me l inscrive dans le label.
Je vais mettre un exemple
Fournisseur = TOTO et TITI TOTO= 2 produits 1 à 10€ avec un mode de paiement par cheque et l autre a 20€ en CB,
TITI = trois produits le premier a 12€ en cheque le second a 24€ en CB le troisieme a 12€ aussi en CB
Quand je choisi dans le datacombo fournisseur TOTO dans le label il m affiche la somme de 30€ et dans la deuxieme datacombo (mode de paiement) quand je choisi CB il m affiche 20€ bien sur dans le meme label
La meme chose pour titi.
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 15 déc. 2006 à 23:27
Bonsoir,
A chaque modification du text de ta combo mode de paiement,
tu appelle une procédure avec :
xFournisseur =ComboFournisseurs.Text
cMode=ComboMode.Text
>° ° liaison d' un recordset à une requête de type:
"SELECT TaTable.IdFournisseur, " -
& "Sum(IIf([TaTable]![ModePaiement]='cheque', " _
& "[TaTable]![SommeVersee],0)) AS cheque, " _
& "Sum(IIf([TaTable]![ModePaiement]='CB', " _
& "[TaTable]![SommeVersee],0)) AS CB, " _
& "Sum(IIf([TaTable]![ModePaiement]='especes', " _
& "[TaTable]![SommeVersee],0)) AS especes " _
& "FROM TaTable GROUP BY TaTable.IdFournisseur;"
>
MonRs.FindFirst "[IdFournisseur] LIKE '" & xFournisseur & _
"' AND [ModePaiement] LIKE '" & cMode & "'"
> tu testes
If MonRs.NoMatch 'pas d' enregistrement
Label.Caption=0
Else
If cMode="cheque" Then
Label.Caption=MonRs![cheque]
ElseIf cMode="CB" Then
Label.Caption=MonRs![CB]
ElseIf cMode="especes" Then
Label.Caption=MonRs![especes]
ElseIf cMode="Tout" Then
'pour le ^^tout mode de paiement confondu
Label.Caption=MonRs![cheque]+MonRs![CB]+MonRs![especes]
End If
End If
75ROLLER
Messages postés40Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention19 octobre 2007 16 déc. 2006 à 13:36
bon,j ai testé ton code il ne fonctionne pas,
peut-être je peux te montrer la source?? ça en inspire certains.
Private Sub afficheRequete()
'fair la somme en fonction du fournisseur
On Error GoTo erreur1
sql = "SELECT fournisseur, Sum(prix_achat)AS Totalachat FROM table_achat WHERE fournisseur= '" & DataCombo2.Text & "'GROUP by fournisseur"
Set rst = conn.Execute(sql)
Totalachat = Val(rst("Totalachat"))
Label15.Caption = rst("Totalachat")
rst.Close
erreur1:
If Err = "3021" Then
Label15.Caption = ""
MsgBox "Plus d 'enregistrement pour ce mode de paiment", vbExclamation
End If
End Sub
je peus envoyer plus de code source ci vous voulez
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 16 déc. 2006 à 15:37
Ou est le Mode règlement ?
Private Sub afficheRequete() '
fair la somme en fonction du fournisseur
On Error GoTo erreur1
sql = "SELECT fournisseur, Sum(prix_achat) AS Totalachat " _
FROM table_achat WHERE fournisseur = '" & DataCombo2.Text & _
"'GROUP by fournisseur"
Set rst = conn.Execute(sql)
? Totalachat = Val(rst("Totalachat"))
Label15.Caption = rst("Totalachat")
rst.Close
Exit Sub 'manquant ; normal qu' il ne t' affiche rien en plus du msgbox
erreur1:
If Err = "3021" Then
Label15.Caption = ""
MsgBox "Plus d 'enregistrement pour ce mode de paiment", vbExclamation
End If
End Sub
...
plutôt...
sql="SELECT [table_achat]![Fournisseur], " _
& "Sum([table_achat]![prix_achat]) AS Totalachat " _
& "Sum(IIf([table_achat]![ModePaiement]='cheque', " _
& "[table_achat]![prix_achat],0)) AS cheque, " _
& "Sum(IIf([table_achat]![ModePaiement]='CB', " _
& "[table_achat]![prix_achat],0)) AS CB, " _
& "Sum(IIf([table_achat]![ModePaiement]='especes', " _
& "[table_achat]![prix_achat],0)) AS especes " _
& "FROM table_achat GROUP BY table_achat.Fournisseur;"
résultat pour fournisseur F1
>champs de la table > champs générés
Fournis prix_achat Mode cheque CB especes
F1 25.00 CB 0.00 25.00 0.00
F1 80.00 especes 0.00 0.00 80.00
F1 55.00 cheque 55.00 0.00 0.00
F1 90.00 CB 0.00 90.00 0.00
F1 75.00 cheque 75.00 0.00 0.00
F1 30.00 especes 0.00 0.00 30.00
-------------------------------------------------------------------------------------------
F1 355.00 130.00 115.00 110.00
---------------------------------------------------------------------------------------------
En plus avec cette requête tu peux avoir tout les modes
d' un coup et sans passer par la sélection du DataComboMode
Il suffit de sélectionner un fournisseur et puis c' est tout...
xFournisseur =ComboFournisseur.Text
'revoir la synthaxe si le fournisseur est numérique
rs.FindFirst "[Fournisseur] LIKE '" & xFournisseur & "'"
If Not (rs.NoMach)
Lable1.caption=rs![Totalachat]
Lable2.caption=rs![cheque]
Lable3.caption=rs![CB]
Lable4.caption=rs![especes]
End If
Vous n’avez pas trouvé la réponse que vous recherchez ?
75ROLLER
Messages postés40Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention19 octobre 2007 16 déc. 2006 à 16:08
Ha ha, je sens que la solution ce rapprochée.
je te renvois la source, j ai un message d'erreur
comme quoi la reqete et mal orthographié.je cheche de mon cote, je t envois le code avec ta requete
'requete composé pour le Produit
requeteProduit = "SELECT table_achat.* FROM table_achat WHERE table_achat.mode_p "
ResultatCritereProduit
End Sub
Private Sub ResultatCritereProduit()
'Critere sur fournisseur
If Not DataCombo2.Text = "" Then
reqfourni "AND table_achat.fournisseur '" & DataCombo2.Text & "'"
afficheRequete
Else
reqfourni = ""
End If
'critere sur le mode de paiment
If Not DataCombo1.Text = "" Then
categProduit "AND table_achat.mode_p '" & DataCombo1.Text & "'"
Else
categProduit = ""
End If
'sert a passer la variable combotext au sous programme afficheRequete
If Not DataCombo1.Text = "" Then
combotext = DataCombo1.Text
afficheRequete
Else
combotext = ""
End If
'critere sur le prix mini
If Not Text1.Text = "" Then
If Asc(Text1.Text) >= 48 And Asc(Text1.Text) <= 57 Then
prixMinProduit = " AND prix_achat >= " & Text1.Text
Label15.Caption = ""
Else
MsgBox "Entrée des chiffres", vbExclamation
Text1.Text = ""
Text1.SetFocus
End If
Else
prixMinProduit = ""
End If
'critere sur le prix max
If Not Text2.Text = "" Then
If Asc(Text2.Text) >= 48 And Asc(Text2.Text) <= 57 Then
prixMaxProduit = " AND prix_achat <= " & Text2.Text
Label15.Caption = ""
Else
MsgBox "Entrée des chiffres", vbExclamation
Text2.Text = ""
Text2.SetFocus
End If
Else
prixMaxProduit = ""
End If
'Affectation de la requete a l'ado lié a la table_achat pour le tri
AdoAchat.RecordSource = requeteProduit + categProduit + reqfourni + prixMinProduit + prixMaxProduit
AdoAchat.Refresh
Label13.Caption = AdoAchat.Recordset.RecordCount
End Sub
Private Sub afficheRequete()
'fair la somme en fonction du fournisseur
'On Error GoTo erreur1
' sql = "SELECT fournisseur, Sum(prix_achat)AS Totalachat FROM table_achat WHERE fournisseur= '" & DataCombo2.Text & "'GROUP by fournisseur"
sql = "SELECT [table_achat]![Fournisseur], " _
& "Sum([table_achat]![prix_achat]) AS Totalachat " _
& "Sum(IIf([table_achat]![Mode_Paiement]='cheque', " _
& "[table_achat]![prix_achat],0)) AS cheque, " _
& "Sum(IIf([table_achat]![Mode_Paiement]='CB', " _
& "[table_achat]![prix_achat],0)) AS CB, " _
& "Sum(IIf([table_achat]![Mode_Paiement]='especes', " _
& "[table_achat]![prix_achat],0)) AS especes " _
& "FROM table_achat GROUP BY table_achat.Fournisseur;"
75ROLLER
Messages postés40Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention19 octobre 2007 16 déc. 2006 à 16:16
ha oui, je t ait répondu un peu vite par rapport a mon interface graphique je prefere ma solution
(que le mode de paiement sa dans la combo) donc si tu peus
'requete composé pour le Produit
requeteProduit = "SELECT table_achat.* FROM table_achat WHERE table_achat.mode_p "
ResultatCritereProduit
End Sub
Private Sub ResultatCritereProduit()
'Critere sur fournisseur
If Not DataCombo2.Text = "" Then
reqfourni "AND table_achat.fournisseur '" & DataCombo2.Text & "'"
afficheRequete
Else
reqfourni = ""
End If
'critere sur le mode de paiment
If Not DataCombo1.Text = "" Then
categProduit "AND table_achat.mode_p '" & DataCombo1.Text & "'"
Else
categProduit = ""
End If
'sert a passer la variable combotext au sous programme afficheRequete
If Not DataCombo1.Text = "" Then
combotext = DataCombo1.Text
afficheRequete
Else
combotext = ""
End If
'critere sur le prix mini
If Not Text1.Text = "" Then
If Asc(Text1.Text) >= 48 And Asc(Text1.Text) <= 57 Then
prixMinProduit = " AND prix_achat >= " & Text1.Text
Label15.Caption = ""
Else
MsgBox "Entrée des chiffres", vbExclamation
Text1.Text = ""
Text1.SetFocus
End If
Else
prixMinProduit = ""
End If
'critere sur le prix max
If Not Text2.Text = "" Then
If Asc(Text2.Text) >= 48 And Asc(Text2.Text) <= 57 Then
prixMaxProduit = " AND prix_achat <= " & Text2.Text
Label15.Caption = ""
Else
MsgBox "Entrée des chiffres", vbExclamation
Text2.Text = ""
Text2.SetFocus
End If
Else
prixMaxProduit = ""
End If
'Affectation de la requete a l'ado lié a la table_achat pour le tri
AdoAchat.RecordSource = requeteProduit + categProduit + reqfourni + prixMinProduit + prixMaxProduit
AdoAchat.Refresh
Label13.Caption = AdoAchat.Recordset.RecordCount
End Sub
Private Sub afficheRequete()
sql = "SELECT Table_achat.Fournisseur, " _
& "Sum(IIf([Table_achat]![Mode_Paiement]='cheque', " _
& "[Table_achat]![SommeVersee],0)) AS cheque, " _
& "Sum(IIf([Table_achat]![ModePaiement]='CB', " _
& "[Table_achat]![SommeVersee],0)) AS CB, " _
& "Sum(IIf([Table_achat]![ModePaiement]='especes', " _
& "[Table_achat]![SommeVersee],0)) AS especes " _
& "FROM TaTable GROUP BY TaTable.IdFournisseur;"
rst.Find "[Fournisseur] LIKE '" & DataCombo2.Text & _
"' AND [Mode_Paiement] LIKE '" & DataCombo1.Text & "'"
'tu testes
If rst.NoMatch Then
'pas d' enregistrement
Label.Caption = 0
Else
If DataCombo1.Text = "cheque" Then
Label15.Caption = rst![cheque]
ElseIf DataCombo1.Text = "CB" Then
Label15.Caption = rst![CB]
ElseIf DataCombo1.Text = "especes" Then
Label15.Caption = rst![especes]
ElseIf DataCombo1.Text = "Tout" Then
'pour le ^^tout mode de paiement confondu
Label15.Caption = rst![cheque] + rst![CB] + rst![especes]
End If
End If
erreur1:
If Err = "3021" Then
Label15.Caption = ""
MsgBox "Plus d 'enregistrement pour ce mode de paiment", vbExclamation
75ROLLER
Messages postés40Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention19 octobre 2007 17 déc. 2006 à 12:06
je n arrive pas a bien presenter mon texte ta raison vraiment décourageant un vrai charabia
desoler je ne sais pas comment les autres fond pour biens le presenter leur code
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 17 déc. 2006 à 18:35
Si tu utilises AdoAchat pour la sélection
c' est donc lui que tu dois lier à ta requête.
Le rst que j' ai mis dans mon code c' était pour l' exemple.
et ou cas tu veux déclarer un recordset privé à la procédure.
Private Sub afficheRequete()
Dim sQuery As string
sQuery = "SELECT Table_achat.Fournisseur,Sum(IIf([Table_achat]![Mode_P]='cheque', " _
& "[Table_achat]![prix_achat],0)) AS cheque,Sum(IIf([Table_achat]![Mode_P]='CB', " _
& "[Table_achat]![prix_achat],0)) AS CB,Sum(IIf([Table_achat]![Mode_P]='especes', " _
& "[Table_achat]![prix_achat],0)) AS especes,FROM Table_achat " _
& "GROUP BY Table_achat.Fournisseur " _
& "WHERE Table_achat.Fournisseur LIKE '" & DataCombo2.Text & "'"
With AdoAchat
.RecordSource=sQuery
'pas besoin de FindFirst car il ne retourne que les Achats
'du fournisseur choisi
.Refresh
'tu testes
If .Bof And .Eof Then
MsgBox "Pas d' enregistrement courant"
Else
If DataCombo1.Text = "cheque" Then
Label15.Caption = .Recordset![cheque]
ElseIf DataCombo1.Text = "CB" Then
Label15.Caption = .Recordset![cb]
ElseIf DataCombo1.Text = "especes" Then
Label15.Caption = .Recordset![especes]
ElseIf DataCombo1.Text = "Tout" Then
'pour le tout mode de paiement confondu
Label15.Caption = .Recordset![cheque] + .Recordset![cb] + .Recordset![especes]
End If
End If
End With
End sub
nb/
-Utilises des variables au lieu de DataCombo1 et 2
-Pourquoi tu n' affiches pas tout les modes d' un coup
(comme dans l' exemple précédent) et pas besoin de tester
-Pour la mise en page, personnellement j' utilise le Bloc-notes
pour mes réponses...
75ROLLER
Messages postés40Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention19 octobre 2007 18 déc. 2006 à 12:58
Oui j’ai sais pourquoi que je me sers d un combo pour le mode de paiement.
Car dans ma base j ai des commentaires sur les produits que je met dans une datagrid et comme tu as pu le voir j ai des requetes composees
Et la combo mode de paiement me sert a fair un tri par cheque, especes,cb et il est plus sympas d affiché dans un label la somme qui a ete choix en fonction du mode de paiement que d avoir 3 labels qui affiche la somme de tout les mode de paiement et de toute facon j ai besion d un tri mode de paiement .
J ai encors une erreur dans la requete ? ?
75ROLLER
Messages postés40Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention19 octobre 2007 18 déc. 2006 à 13:53
en faite j ai 1 colonne prix_achat et 1 colonne mode_P dans cette colonne il y a cheque,dépot,cb,especes.
je n ai pas une colonne pour chaque mode de paiement comme je croix le voir dans t as requete
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 18 déc. 2006 à 19:53
Bonsoir,
j' ai jamais dis que tu devrais avoir des champs cheque, cb et espèses
si tu regardes bien dans l' exemple détaillé, tu constateras que j' ai distigué
les champs de ta table et les colonnes générées par la requête
>champs de la table > champs générés
Fournis prix_achat Mode cheque CB especes
générés ==> ne sont crées qu' au moment de l' exécution et sont
identifiables par l' alias qu' on leur attribue
(AS cheque..., AS cb..., AS especes)
si tu spécifie Mode => colonne Mode issue de la table
si tu indique cheque => colonne cheque générée par la requete