rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Moulinette sous Access

Posté par microsoluces, le dimanche 8 octobre 2006 à 07:57:07
Salut à tous...
Je suis tout nouveau sur Access et je viens chercher un peu d'aide ici n'en ayant pas trouvé dans mes bouquins...
Voila j aimerai mettre à jour toutes les semaines une table "PRODUITS"(code[clé primaire], libelle,Q_stock, HT) à partir d'une autre table "FOURNISSEUR"(structurée par mes soins dans le même format).
J ai crée en SQL une requête qui ajoute les nouveaux articles "FOURNISSEUR"(j’ai juste un message d'erreur sur les articles déjà existants dans ma table "PRODUITS"= Doublons, mais ça marche)

INSERT INTO PRODUITS ( CODE, LIBELLE, STOCK, HT )
SELECT CODE, LIBELLE, STOCK, HT
FROM FOURNISSEUR
WHERE HT>0;

J ai crée en SQL également une requête suppression pour ne pas mettre à jour les articles de ma table "PRODUITS" que j avais en stock (>=1) et éviter de vendre à perte...

DELETE STOCK
FROM PRODUITS
WHERE STOCK>=1;


Mais les requêtes qui me posent le plus de problèmes sont celles des mises à jour : J aimerai mettre à jour les articles de "PRODUITS" en cas de hausse du HT "FOURNISSEUR" ou en cas de baisse (donc sur 2 requêtes distinctes pour mieux contrôler mes tarifs).

J'espère avoir été clair. Merci par avance à tous ceux pouvant me donner une piste.

Quant à moi j'y retourne ...
Répondre à microsoluces  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le lundi 9 octobre 2006 à 11:13:05
Salut,

il faut utiliser UPDATE :
UPDATE PRODUITS SET HT = HT*1,05 WHERE LIBELLE LIKE "toto*";
Cette requête augmente les prix de 5% de tous les articles dont le libellé commence par "toto"...

Pour une baisse de tarif, c'est la même chose, seule l'opération à faire change : HT=HT*0,95...
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
microsoluces, le lundi 9 octobre 2006 à 11:42:25
Je te remercie pour l'info mais la requète que tu me donnes augmente ou diminue TOUS les HT de ma table "PRODUIT". Or je cherche à mettre à jour uniquement les produits ayant subit soit une hausse, soit une baisse depuis la table que me donne mon fournisseur chaque semaine !

Je dois comparer les articles d'une table à une autre par l'intermédiaire de leur code article (clé primaire). Quand le code est identique on compare les HT... La mise à jour se fait SI la quantité en stock de "PRODUIT" est =0 (pour éviter de modifier les prix des articles déjà en stock).

Simple à dire, mais à faire sous ACCESS ! ! !

Je me demande si je n'aurai pas intérêt à faire ça avec un langage de programmation (Windev, VisualBasic)

A +
Et merci d'avance à mon sauveur !
Répondre à microsoluces

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le lundi 9 octobre 2006 à 12:59:45
UPDATE PRODUITS SET HT = HT.FOURNISSEURS WHERE STOCK = 0 AND CODE = CODE.FOURNISSEURS ;

Ca marcherait pas un truc comme ça ?
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
microsoluces, le lundi 9 octobre 2006 à 14:43:37
On avance... La syntaxe me plait bien, ca ressemble à ce que je veux faire, mais ACCESS lui, il n aime pas du tout !
Un pop up me demande de saisir le HT.FOURNISSEUR, puis le HT, puis le CODE et enfin me dit que les champs n a pas pu etre mis à jour.....
Répondre à microsoluces

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le lundi 9 octobre 2006 à 15:33:54
Rajoute FOURNISSEURS dans la liste des tables à mettre à jour, même si on ne fait rien dessus, ça lui indique qu'elle fait partie du bin's qu'on essaie de faire :
UPDATE PRODUITS, FOURNISSEURS SET HT = HT.FOURNISSEURS WHERE STOCK = 0 AND CODE = CODE.FOURNISSEURS ;

J'ai testé chez moi (ACCESS 2002), ça marche...
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
microsoluces, le lundi 9 octobre 2006 à 17:21:45
Merci pour toute la peine que tu te donnes pour moi, mais hélas cela ne fonctionne pas. J ai également ACCESS 2002. Voila mes tables :

PRODUITS
CODE__LIBELLE____STOCK_____ HT_________ TYPE
__1___Produit 1_____ 1______ 100,00_____Carte mère
__2___Produit 2_____ 1______ 100,00_____Processeur
__3___Produit 3_____ 1 ______100,00_____Mémoire



FOURNISSEUR
CODE____LIBELLE________ HT
__1___ Pdt 1___________200,00 (hausse)
__3___ Produitsxxx 3____ 50,00 (article 2 disparu)(Baisse pour le 3)
__4___Produit 4________ 700,00 (nouvel article)




RESULTAT ATTENDU =>



PRODUITS
CODE__LIBELLE____STOCK_____ HT_________ TYPE
__1___Produit 1_____ 1______ 200,00_____Carte mère
__3___Produit 3_____ 1_______ 50,00_____Processeur
__4___Produit 4_____ 0 ______700,00_____0



L'interet de la moulinette c'est :
1- On ne touche pas aux libelles de PRODUITS que j'ai modifié 1 par 1.
(Suppression abréviations, libelles plus clairs)
2- Chaque article de "PRODUIT" à un type. Si je balancais la table "FOURNISSEUR" dans ma gestion commerciale, je devrais ré affecter un type à chacun de mes 3800 produits ! ! !


Je demande l'impossible non ?
A +
Répondre à microsoluces

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le lundi 9 octobre 2006 à 17:33:28
Faudrait juste me dire quel est le résultat que tu obtiens, car ça devrait logiquement marcher... à l'exception près qui est qu'on ne crée pas de nouveau produit, c'est une requête de mise à jour de champs dans une ligne existante (UPDATE), pas une requête ajout (INSERT INTO)...

Je demande l'impossible non ?
Non, c'est facile à faire ,et si en SQL classique ça marche pas, on fera du VBA...
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
microsoluces, le lundi 9 octobre 2006 à 17:40:52
J'ai recopié ta requete dans access. Il me dit =
"Le champ spécifié 'CODE' peut designer plusieurs tables listées dans la clause FROM de votre instruction SQL"

Késako ?


Au fait :
Je n'ai crée aucun lien entre mes tables. C'est bon ?
Répondre à microsoluces

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le lundi 9 octobre 2006 à 17:53:04
Je n'ai pas mis de FROM dans ma requête...
UPDATE PRODUITS, FOURNISSEURS SET HT = HT.FOURNISSEURS WHERE STOCK = 0 AND CODE = CODE.FOURNISSEURS ;


Sinon tu modifies :
UPDATE PRODUITS, FOURNISSEURS SET HT.PRODUITS = HT.FOURNISSEURS WHERE STOCK.PRODUITS = 0 AND CODE.PRODUITS = CODE.FOURNISSEURS ;

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
microsoluces, le lundi 9 octobre 2006 à 18:21:29
Je n ai pas mis FROM, c est ACCESS qui corrige seul la syntaxe à la manière de FRONTPAGE qui corrigeait mes pages html ! ! !

Quand je rentre ton dernier SQL j ai à l'execution de la requete une box qui s ouvre et me demande :
"Entrez la valeur du paramètre"
"HT.FOURNISSEUR"

Je rentre 1 par exemple, une autre fenetre s ouvre

"Entrez la valeur du paramètre"
"HT.PRODUIT"

Idem stock, idem code et tout cela fini par
"L'opération doit utiliser une requete qui peut etre mise à jour"


JE COMMENCE A DOUTER QU ON PUISE LE FAIRE AVEC ACCESS pourtant cela ne semble pas tres compliqué au premier abord !
Répondre à microsoluces

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mardi 10 octobre 2006 à 09:16:38
JE COMMENCE A DOUTER QU ON PUISE LE FAIRE AVEC ACCESS pourtant cela ne semble pas tres compliqué au premier abord !
On peut le faire, je l'ai testé chez moi...

Comment saisis-tu ta requête ? (assistant, mode sql...). Je pense que le problème vient de là...

Sinon, tu peux m'envoyer ta base, je regarderai...
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
microsoluces, le mardi 10 octobre 2006 à 16:27:29
Salut,

Effectivement je m y prend peut etre mal. Je crée une requete en mode création, je ferme la fenetre qui s ouvre "Afficher la table" puis je clic sur le menu affichage et choisi l option SQL...
Ensuite je fais un copier/coller de ton code puis enregistrer...

Comment puis-je t'envoyer ma base ?

Merci d'avance.
Répondre à microsoluces

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mardi 10 octobre 2006 à 16:37:05
Tu la zippes, tu l'envoies à denis point mail point list chez free point fr...

Et c'est tout...
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
microsoluces, le mardi 10 octobre 2006 à 17:35:17
Un tel dévouement : j peux rien ajouter. Le must de l'assistance !
Je viens de te l'envoyer.

Bah on dit merci j'crois !

Merci
Répondre à microsoluces

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
microsoluces, le mercredi 11 octobre 2006 à 10:35:23
Bonjour,
Nous approchons du but Blux...
J'avais fait plein de fautes d'inattention (celles du débutant trop pressé) dans la syntaxe de mon SQL... Ca marche beaucoup mieux effectivement si on respecte le nom des champs.
La requete fonctionne maintenant sans ouvrir de Box pour me demander des valeurs, mais elle ne change aucun élément dans ma table "PRODUIT"

Pour ceux qui nous suivent depuis le début voici comment blux m'a corrigé mon SQL :


UPDATE PRODUIT, FOURNISSEUR SET PRODUIT.HT = FOURNISSEUR.HT
WHERE PRODUIT.STOCK=0 And PRODUIT.CODE=FOURNISSEUR.CODE;
Répondre à microsoluces

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mercredi 11 octobre 2006 à 12:38:06
Sur la base que tu m'as envoyée, j'arrive à mettre à jour si le stock est à 0...

Donc je ne comprends pas ce qui peut se passer...

Te dit-il combien de ligne il va mettre à jour ou alors te contentes-tu de cliquer sur la requête, provoquant un simple affichage...
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 microsoluces, le mercredi 11 octobre 2006 à 13:38:31
Honte à moi... Ca marche bien sur ! ! !

Il faut que les quantités soient à 0.

Je te remercie mille fois pour le boulot ET surtout de ta patience avec un bleu comme moi.... ;-)

Tu n'imagines même pas le temps que va me faire gagner cette chtite moulinette !

A + (dans un prochain post)
Salut.
Répondre à microsoluces
Logiciels pertinents trouvés dans les téléchargements
Télécharger OpenOffice.org 2.4.1OpenOffice.org - OpenOffice est une suite bureautique complète entièrement gratuite, compatible avec la suite Microsoft Office. Elle...Catégorie: Suite bureautique
Licence: Open Source
Télécharger PowerISO 4.2PowerISO - PowerISO est un outil de gestion d'images de CD et DVD, capable d'ouvrir, d'extraire, de créer, d'éditer, de compresser et...Catégorie: Gravure
Licence: Demo
Télécharger SSH Secure Shell 3.0 build 203SSH Secure Shell - SSH secure shell for workstations est un client SSH flexible permettant de se connecter de façon sécurisée à des...Catégorie: Telnet/SSH
Licence: Open Source
Télécharger Aide-mémoire 2.3Aide-mémoire - Ce logiciel permet de coller des aides mémoires (post-it) sur votre bureau. Son but est simple, éviter de décorer votre...Catégorie: Organisation
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « Moulinette sous Access »