Aide Sur Access

olivier -  
 solje -
Bonjour @ Tous,

Je souhaiterai envoyé par mail, à tous les clients de la société, les reliquats de commande suppérieur à 2 mois afin de savoir s'ils veulents toujours recevoir leurs Reliquats.

Reliquat de commande = Articles non livré pour cause de stock indisponible.

Je ne sais pas comment procédé.

Ex :

Je peux créer une requête permettant de trouver tous les reliquats supérieurs a 2 mois en indiquant à l'intérieur pour chaque commande le numéro de client le numéro de commande ainsi que l'email.

Je ne sais pas comment procéder pour créer un code ou une macro permettant à chaque changement de numéro de commande d'envoyer un état (ou les lignes de la commande figureraient) au client correpondant à la commande.

Merci par avance pour toutes pistes ou info que vous pouvez me donner.

Cordialement

Olivier

19 réponses

Utilisateur anonyme
 
Salut !
La méthode sendobject (ou EnvoyerObjet) doit faire cela...
Regardes dans l'aide d'access...
@+
0
Olivier
 
J'utilise cette fonction lorsque je souhaite envoyer une commande mais je en sais pas comment faire pour genérer une boucle et que le programme envoit automatiquement toute les commandes et chaqu'une au bon destinataire...

Si vous avez une piste, merci de m'informer.

Salutation

Olivier
0
Utilisateur anonyme
 
Là pas bien le temps de regarder, mais je pense qu'avec un For Each (pour chaque numéro de client), ça doit pouvoir faire l'affaire.
@+
0
olivier
 
Ok je faire le test :

For Each (Num de Commande)

De facon à supprimer par la suite les commandes que les clients ne veulent pas.

Merci pour ton aide. Je te tiendrais a courant si je n'y arrive.

Olivier
0
Olivier
 
La syntaxe For Each n'existe.

Si quelqu'un à une autre idée ca me serait très utile.

Cordialement

Olivier
0
Utilisateur anonyme
 
C'est quelle version d'access ??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
OLI0001 Messages postés 10 Statut Membre
 
Access 2002
0
OLI0001 Messages postés 10 Statut Membre
 
La fonction For Each apparait en effet mais je ne sais pas comment lui dire de prendre tel ou tel champs dans la requete ...

Je en sais pas selectionner des champs à partir du VB

Olivier
0
Utilisateur anonyme
 
Je ne connais pas du tout cette fonction non plus, c'est pas gagné. Il y a surement un autre moyen, en particulier l'utilisation de tables temporaires, ce qui m'a permis de me dépatouiller de pas mal de problèmes ces temps d'ailleurs...

Je m'explique : crées une table qui contient les champs que tu veux voir apparaitre dans ton état.
Tu crées un formulaire basé sur la reqûte 'commandes_non_honorées' qui contient uniquement les commandes non honnorées en totalité.
Pour chaque commande, tu ajoutes les champs à la table temporaire.
Ton état est basé sur cette table, tu l'ouvres et l'envoies. Tu referme, et efface ta table.
Tu recommence avec l'enregistrement suivant...

Voici un bout de code :

Dim dbs As Database, rst As Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("commandes_non_honorées")

For i = 0 To Forms!ton formulaire commandes non honorées.Count - 1
With rst
Ta procédure : ajout de l'enregistrement à la table temporaire, ouverture de l'état (qui lui gère l'envoi), effacement de la table
rst.MoveNext
End With
Next i

Ca doit te donner un bon début, mais sans ta base sous les yeux, c pas évident.

Tiens nous au courant...
0
OLI0001 Messages postés 10 Statut Membre
 
C'est sympa je testerai sans doute demain.

Merci pour ton aide

Je te tiendrais au courant.
0
Utilisateur anonyme
 
Pas de mal, par contre, demain soir je suis en vacances, alors si t'as besoin d'aide, essaies pas trop tard...
@+
0
Olivier
 
Salut HDU,

J'ai compris le principe.
Je t'explique ce dont j'ai fait :
J'ai une table ou sont stockés le nom des clients et le numéro de commande (trié par ordre croissant)+un champ "Envoyé ?"

Mon formulaire pointe sur une requête qui sélectionne la première commande et indique le nom l'email le numéro de commande et la référence commande.

Une table temporaire est créer en fonction de cette première commande et contient toutes les infos nécessaires.
Mon état pointe sur cette table.

J'ai boutton commande qui permet d'envoyer par mail à partir du formulaire l'état et vient indiquer dans "à envoyer" = oui de facon à créer la nouvelle table temporaire qui ne tient pas compte des enregistrements pour lesquels est renseigné oui.

Comme ca ca marche la seul chose est que je ne sais pas comment intégrer au boutton commande une boucle de facon à envoyé toutes les commandes une par une sans que je n'ai besoin de le faire manuellement.
et j'avou la fonction DO LOOP je ne la connais pas trop et je n'ai pas bien compris dans l'aide Access.

Si tu peux m'aiguiller.

En tout cas merci beaucoup pour ton aide :)

Olivier
0
Utilisateur anonyme
 
Salut !
tu me dis que ton formulaire affiche les enr. d'une requête qui sélectionne la 1ere commande. En fait, comme je te l'ai dit plus haut, la source de ton formulaire doit être une requête qui liste les commande non honnorées.
A l'ouverture, ton formulaire affichera forcément le 1er enr. de cette requête. Tu crées un bouton (ou ce que tu veux) qui te lancera le code suivant :

Dim dbs As Database, rst As Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("commandes_non_honorées")

For i = 0 To Forms!ton formulaire commandes non honorées.Count - 1
With rst
Ta procédure : ajout de l'enregistrement à la table temporaire, ouverture de l'état (qui lui gère l'envoi), effacement de la table
rst.MoveNext
End With
Next i

Et voili, ça doit fonctionner.
@+
0
olivier
 
Le problême en passant comme ca est que je ne sais pas comment créer la table correspondant à l'enregistrement sélectionné sur le formulaire.

En fait il faudrait que le code soit exécuter tant que dans la table, ou il y a les numéros de commande, est présent des enregistrements pour lesquels le champ "à envoyer" est vide

Olivier
0
Utilisateur anonyme
 
Le code est exécuter pour le formulaire en cours, ce dernier affichant uniquement les enr. pour lesquels "à envoyer" est vide (c'est le boulot de la requête qui est la source de ton formulaire).

Ta table temporaire doit contenir les mêmes champs que ton formulaire. On l'appelle ici 'table_temp'.

Voici le code que tu mets dans ton formulaire 'commandes_non_envoyees' (basé sur la requête portant le même non).

Dim dbs As Database, rst As Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("table_temp")

For i = 0 To Forms!commandes_non_envoyees.Count - 1
With rst
.addnew
![ton_champ1]=me![ton_champ1]
![ton_champ2]=me![ton_champ2]
....
....
....
.update

docmd.openreport "ton_etat_a_envoyer",.......

.delete

End With

DoCmd.GoToRecord , , acNext

Next i

Là ça doit être good !

@+
0
olivier
 
C'était cool de ta part que tu m'aides autant et je t'en remerci.

@ +

Olivier
0
Utilisateur anonyme
 
Pas de mal !
Alors ça tourne ou pas ??
0
olivier
 
Je n'ai pas essayer ta méthode.

J'essayerai, mais pas aujourd'hui.

Je n'ai plus le temps.

Merci et bon Week end =)

Olivier
0
Utilisateur anonyme
 
OK, bon week à toi aussi.
Mais, j'essaierai de "passer" la semaine prochaine, mais je suis en vacances, alors si tu as encore des questions / pb pas résolus le week-end prochain, fais remonter ce post que je le vois le 03/05 en rentrant. Quoique, j'aurais reçu par mails les <> messages de ce post, alors je serai au courant.

Bon courage et @+
0
Solje
 
bonjour.
je compte mettre au point une base de données sous access2000 (et éventuellement utiliser vb) pour les besoins de gestion interne(actuellement on papote avec des fichiers excel) . on a un petit réseau de cinq postes(win98) . forcément la bdd sera multi-utilisateurs .
quelqu'un peut-il m'orienter(conseils, doc, site... pour bien penser les choses).
remerciements anticipés.
0
Utilisateur anonyme
 
Salut !
Il aurait mieux fallu créer un nouveau message pour ta question, mais bon, voici une piste :
http://access.developpez.com/
et + particulièrement
http://access.developpez.com/faq/

Au fait, tous les postes qui utiliseront la BdD devront avoir Access (la même version tant qu'à faire). Si ce n'est pas le cas, au lieu d'investir dans des licences access, regardes si ça ne vaut pas plus le coup d'investir dans un Office Developper...

@+
0
solje
 
merci, et bonne journée!
0