Comment voir le nombre total d'un article dans une base de donnée

[Résolu]
Signaler
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Bonjour , j'ai une base de donnée avec une table journalier, la dedans ce trouve des articles vendus
j'ai ex:
Codebar,prix,quantité,département,groupe,ect.......
dans la vente de la journée il y a plusieur fois la même chose,
donc je vend peu etre 10 X cocacola 50Xpepsi ect......

j'ai fait le code si dessous pour calculer le nombre total d'article.
comment faire pour aller plus vite ??????
évidament je n'ai pas de référence d'article pour le controle puisque on ne sait pas ce qui vas etre vendu.
Merci

nitul = 0
qqaa = 0
Set db = OpenDatabase(App.Path & "\manager.mdb")
Set rs = db.OpenRecordset("journalier")
If rs.RecordCount > 0 Then
 Set rd = db.OpenRecordset("journalier")
 rs.MoveFirst


 Do Until rs.EOF = True
 nitul = rs!cod_prod
  rd.MoveFirst
 Do Until rd.EOF = True
 If rd!cod_prod = nitul Then
 nitul1 = nitul1 + rd!quantité
 End If
 rd.MoveNext
 Loop
 
Set rt = db.OpenRecordset("journalier_detaille")
If rt.RecordCount > 0 Then
rt.MoveFirst
 Do Until rt.EOF = True
If rt!cod_prod = nitul Then
qqaa = 1
End If
rt.MoveNext
Loop
End If
If qqaa = 0 Then
rt.AddNew
rt!cod_prod = rs!cod_prod
rt!design = rs!design
rt!numero_dep = rs!numero_dep
rt!departement = rs!departement
rt!quantité = nitul1


rt.Update
End If
nitul1 = 0
qqaa = 0
 rs.MoveNext
 Loop
 End If

14 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
t'as pas suivi:

set db = OpenDatabase(App.Path & "\manager.mdb")
set rs = db.OpenRecordset("SELECT cod_prod, SUM(Quantité),design......"

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
14
Je sais c'est php mais le sql n'est qu'à adapter !!
http://www.siteduzero.com/tuto-3-140-1-lire-des-donnees.html#ss_part_4
_______________________________________________________________________
VB.NETis good ...VB6is better
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
clair que l'approche par Recordset est plus lente (tu récupères toutes tes données...)
mais là, elle est particulièrement maladroite (pas une seule requete)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
par exemple:

SELECT cod_prod,SUM(Quantité),design,numero_dep,departement FROM journalier GROUP BY cod_prod,design,numero_dep,departement

te permet de récupérer le cumul d'articles vendus
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
On oublie l'acces a "recordcount" et on fait une requete en  "SELECT Count(*) AS Total
FROM MaTable;"

@+

E.B.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
clair...

me semble même que SELECT COUNT(0) ...

a confirmer par les SQLpros
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
1
Bonjour et Merci de vos réponse, je suis super novice en sql .

pour la requete
db.execute "SELECT cod_prod,SUM(Quantité),design,numero_dep,departement FROM journalier GROUP BY cod_prod,design,numero_dep,departement"
il me dit : impossible de faire une requete de  selection

et le total n'est pas de tout les articles mais le total des articles par numéro 
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
pour un Select, faut un OpenRecordSet
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
1
oui sa je sait et je l'ai fait
avec Set rs = db.OpenRecordset("journalier")
mais c'est le même résultat
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
hein ? il te dit encore "impossible de faire une requete selection ?"
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
1
Bonjour , oui il me mes encore ce message
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
1
Bonjour
Voici ce que j'ai fait


Set db = OpenDatabase(App.Path & "\manager.mdb")
Set rs = db.OpenRecordset("SELECT cod_prod,SUM(quantité),design,numero_dep,departement FROM moi GROUP BY cod_prod,design,numero_dep,departement")


qtt1 = rs!design il me donne COCA-COLA
qtt2 = rs!cod_prod il me donne 1
qtt3 = rs!quantité il me donne élément non trouvé dans c'ette sélection
et pourtant il y est
il  y a 10 X COCA-COLA DANS LA BASE DE DONNEE
ps:le champs rs!quantité est numérique je sait pas si sa fait quelque chose

Merci pour votre aide
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
1
Voila sa fonctionne avec ceci

Set rs = db.OpenRecordset("SELECT cod_prod,SUM(quantité) as total_article,design,numero_dep,departement FROM moi GROUP BY cod_prod,design,numero_dep,departement")
rs.MoveFirst
Do Until rs.EOF = True
 qqt = rs!total_article
qtt1 = rs!design
qtt2 = rs!cod_prod
rs.MoveNext
Loop
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
ok, effectivement un alias de champ peut aider ^^

tu devrais avoir de meilleures performances qu'avec ton ancien code