OVH Cloud OVH Cloud

Mise à jour d'une table

6 réponses
Avatar
Domi
Bonjour à toutes et à tous,

Je sèche sur un problème...

J'ai deux tables liées (Clients et Achats) contenant respectivement environ
2500 et 10000 enregistrements.

Dans la table Achats, il faudrait que je "marque" les enregistrements (avec
un champ Oui/Non) par groupes de 10 terminés par clients.

Exemple :

Un client a 4 achats. Aucun n'est marqué à Oui.

Un client a 17 achats. Les 10 premiers sont marqués à Oui, les 7 suivants à
Non

.....

Un client a 52 achats. Les 50 premiers à Oui, les 2 derniers à Non.

Etc...

Si quelqu'un a une idée...

Merci.

Domi

6 réponses

Avatar
J-Pierre
Bonsoir Domi,

Si tu veux marquer tes achats par paquets de dix, tu dois exécuter une requête de mises à jour dont la source est une requête
où tu sélectionnes les 10 premiers, puis les dix suivants, etc... Ca se fait avec un "top 10" (la liste déroulante dans les
boutons de créer une requête en mode création).


Si tu veux marquer d'un coup les x premiers, x étant un multiple de dix, par exemple 50 sur 52, tu dois d'abord calculer ce
chiffre:
Soit aligner un peu de code VBA:
monRésultat = (DCount("unChamp","maTable","codeClient=" & me.codeClient)) 10
monRésultat = (DCount("unChamp","maTable","nomClient='" & me.nomClient & "'")) 10
Soit créer un champ indépendant "monRésultat " dans ton formulaire dont la source sera:
= (DCount("unChamp","maTable","codeClient=" & me.codeClient)) 10 ou
= (DCount("unChamp","maTable","nomClient='" & me.nomClient & "'")) 10
suivant que le champ est numérique ou caractères.
Le champ est sans doute plus pratique.

puis exécuter une requête MAJ dont la source est une requête sélection extrayant les x premiers records, x étant le résultat
du DCount précédent. Faudra tester que monRésultat n'est pas nul ou égal à zéro pour le cas où il y aurait moins de 10 lignes
ou bien pas de lignes du tout.
if isNumeric(monRésultat ) then
if monRésultat > 0 then.....MAJ.....
if isNumeric(me.monRésultat ) then
if me.monRésultat > 0 then.....MAJ.....
suivant que tu calcules par code VBA ou affiches dans le formulaire

La requête sélection devra être paramétrée:
SELECT TOP [monRésultat] ...................
J'ai un peu la flemme de chercher, mais tu trouveras le code pour exécuter une requête paramétrée sur le site de Raymond
http://OfficeSystem.Access.free.fr/

J'ai dépassé les dix mots autorisés, j'espère que les chefs me pardonneront :-)
J-Pierre

PS: je n'ai pas testé, j'ai écrit comme ça, si ça ne marche pas, tu peux râler....

"Domi" a écrit dans le message de news:
Bonjour à toutes et à tous,

Je sèche sur un problème...

J'ai deux tables liées (Clients et Achats) contenant respectivement environ
2500 et 10000 enregistrements.

Dans la table Achats, il faudrait que je "marque" les enregistrements (avec
un champ Oui/Non) par groupes de 10 terminés par clients.

Exemple :

Un client a 4 achats. Aucun n'est marqué à Oui.

Un client a 17 achats. Les 10 premiers sont marqués à Oui, les 7 suivants à
Non

.....

Un client a 52 achats. Les 50 premiers à Oui, les 2 derniers à Non.

Etc...

Si quelqu'un a une idée...

Merci.

Domi




Avatar
Domi
Merci Jean-Pierre,

Et non, je ne vais pas râler...

Je vais d'abord essayer...

En tout les cas, la piste me semble excellente.

Bonne journée.

Domi


Bonsoir Domi,

Si tu veux marquer tes achats par paquets de dix, tu dois exécuter une requête de mises à jour dont la source est une requête
où tu sélectionnes les 10 premiers, puis les dix suivants, etc... Ca se fait avec un "top 10" (la liste déroulante dans les
boutons de créer une requête en mode création).


Si tu veux marquer d'un coup les x premiers, x étant un multiple de dix, par exemple 50 sur 52, tu dois d'abord calculer ce
chiffre:
Soit aligner un peu de code VBA:
monRésultat = (DCount("unChamp","maTable","codeClient=" & me.codeClient)) 10
monRésultat = (DCount("unChamp","maTable","nomClient='" & me.nomClient & "'")) 10
Soit créer un champ indépendant "monRésultat " dans ton formulaire dont la source sera:
= (DCount("unChamp","maTable","codeClient=" & me.codeClient)) 10 ou
= (DCount("unChamp","maTable","nomClient='" & me.nomClient & "'")) 10
suivant que le champ est numérique ou caractères.
Le champ est sans doute plus pratique.

puis exécuter une requête MAJ dont la source est une requête sélection extrayant les x premiers records, x étant le résultat
du DCount précédent. Faudra tester que monRésultat n'est pas nul ou égal à zéro pour le cas où il y aurait moins de 10 lignes
ou bien pas de lignes du tout.
if isNumeric(monRésultat ) then
if monRésultat > 0 then.....MAJ.....
if isNumeric(me.monRésultat ) then
if me.monRésultat > 0 then.....MAJ.....
suivant que tu calcules par code VBA ou affiches dans le formulaire

La requête sélection devra être paramétrée:
SELECT TOP [monRésultat] ...................
J'ai un peu la flemme de chercher, mais tu trouveras le code pour exécuter une requête paramétrée sur le site de Raymond
http://OfficeSystem.Access.free.fr/

J'ai dépassé les dix mots autorisés, j'espère que les chefs me pardonneront :-)
J-Pierre

PS: je n'ai pas testé, j'ai écrit comme ça, si ça ne marche pas, tu peux râler....

"Domi" a écrit dans le message de news:
Bonjour à toutes et à tous,

Je sèche sur un problème...

J'ai deux tables liées (Clients et Achats) contenant respectivement environ
2500 et 10000 enregistrements.

Dans la table Achats, il faudrait que je "marque" les enregistrements (avec
un champ Oui/Non) par groupes de 10 terminés par clients.

Exemple :

Un client a 4 achats. Aucun n'est marqué à Oui.

Un client a 17 achats. Les 10 premiers sont marqués à Oui, les 7 suivants à
Non

.....

Un client a 52 achats. Les 50 premiers à Oui, les 2 derniers à Non.

Etc...

Si quelqu'un a une idée...

Merci.

Domi









Avatar
J-Pierre
Finalement, j'ai retrouvé le lien pour le site de Raymond, il est dans mes favoris !!!!!!

http://officesystem.access.free.fr/ex_requetes_vba.htm

J-Pierre
Avatar
Pierre CFI [mvp]
des liens pour aller chez raymond, j'en mets partout :o))
tous chez raymond, il a une bonne et vaste cave

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
Access http://www.mpfa.info

"J-Pierre" a écrit dans le message de news: %
Finalement, j'ai retrouvé le lien pour le site de Raymond, il est dans mes favoris !!!!!!

http://officesystem.access.free.fr/ex_requetes_vba.htm

J-Pierre



Avatar
J-Pierre
Voui monsieur, les sites de Raymond et le tien sont de vraies mines remplies de pépites :-)

J-Pierre

Et en plus, ce n'est pas de la pommade, je le pense vraiment.
Avatar
Domi
Merci beaucoup pour le lien...

Domi


Voui monsieur, les sites de Raymond et le tien sont de vraies mines remplies de pépites :-)

J-Pierre

Et en plus, ce n'est pas de la pommade, je le pense vraiment.