cs_pitros
Messages postés45Date d'inscriptionmardi 11 octobre 2005StatutMembreDernière intervention 1 juin 2010
-
20 janv. 2006 à 17:02
cs_pitros
Messages postés45Date d'inscriptionmardi 11 octobre 2005StatutMembreDernière intervention 1 juin 2010
-
29 janv. 2006 à 20:09
Bonjour
J'ai une table produit avec une entité "quantité en stock". J'aimerais
lorsque je valide une facture que les quantités se mette a jour: par
exemple si je commande 6 produit et que j'en ai 10 en stock, j'aimerais
apres avoir valider la facture qu'il y en reste plus que 4 ... Voila.
ps: on m'a dit d'utilisé ce qui suit mais je comprend pas grand chose ...
ufufy
Messages postés46Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention13 avril 2007 20 janv. 2006 à 17:09
Et bien grosso modo la personne te fait executer une requette. dans le strReq il faut mettre une requette SQL qui va bien, cad qui effectue la mise a jour de ta table. il n'y a plus qu'a te renseigner sur la syntaxe du langage sql...
cs_pitros
Messages postés45Date d'inscriptionmardi 11 octobre 2005StatutMembreDernière intervention 1 juin 2010 21 janv. 2006 à 10:37
Private Sub Commande_Click()
Dim Bd As Database, Rs As Recordset
Set Bd = Application.CurrentDb
Dim StrReq As String
Set Rs = Bd.OpenRecordset("SELECT N°PRODUIT From PRODUIT WHERE N°FACTURE=" & CStr(Me.N°FACTURE), dbOpenDynaset)
StrReq = "UPDATE PRODUIT INNER JOIN LIGNE_FACTURE ON
PRODUIT.N°PRODUIT LIGNE_FACTURE.N°PRODUIT SET PRODUIT.QTESTOCK
[QTESTOCK].[LIGNE_FACTURE].[Quantité commandé]" & "WHERE
LIGNE_FACTURE.N°FACTURE=" & Me.N°FACTURE
DoCmd.RunSQL StrReq
End Sub
Voila ce que j'ai reussi a faire mais il me trouve encore une erreur sur cette ligne
Set Rs = Bd.OpenRecordset("SELECT N°PRODUIT From PRODUIT WHERE
N°FACTURE=" & CStr(Me.N°FACTURE), dbOpenDynaset) ... Je ne
comprends pas d'ou vient mon erreur ...
ufufy
Messages postés46Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention13 avril 2007 21 janv. 2006 à 18:49
Private Sub Commande_Click()
Dim Bd As Database, Rs As Recordset -> la tu déclare ta base et ton jeu d'enregistrement
Set Bd = Application.CurrentDb ->la tu dit que c dans la base "courante"
Dim StrReq As String -> la tu déclare la chaine de caractere qui servira de support a ta requette SQL
Set Rs = Bd.OpenRecordset -> la tu ouvres ton jeu d'enregistrement (il ne faut pas mettre la requette ici) StrReq "UPDATE PRODUIT INNER JOIN LIGNE_FACTURE ON PRODUIT.N°PRODUIT LIGNE_FACTURE.N°PRODUIT SET PRODUIT.QTESTOCK =[QTESTOCK].[LIGNE_FACTURE].[Quantité commandé]" & "WHERE LIGNE_FACTURE.N°FACTURE=" & Me.N°FACTURE
-> la tu met ta requette SQL dans strReq
DoCmd.RunSQL StrReq -> la tu execute la requette SQL
End Sub
pas contre je viens de tilter... si tu veux juste faire un nouvel enregistrement dans ta base, ou simplement une mise a jour il te suffit de faire
Private Sub Commande_Clic()
DoCmd.SetWarnings False (pour désactiver les messages d'avertissement de mise a jour de l'enregistrement dans la table)
DoCmd.RunSQL ("UPDATE PRODUIT INNER JOIN LIGNE_FACTURE ON PRODUIT.N°PRODUIT LIGNE_FACTURE.N°PRODUIT SET PRODUIT.QTESTOCK[QTESTOCK].[LIGNE_FACTURE].[Quantité commandé]" & "WHERE LIGNE_FACTURE.N°FACTURE=" & Me.N°FACTURE)
End Sub
Je pense kon se prend le chou pour des cacahuettes quoi...
le set bordel truc muche c pour acceder a ta base, en lecture, si tu veux recuperer des enregistrement pour les afficher dans le formulaire en fait.
tiens moi au courant !
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_pitros
Messages postés45Date d'inscriptionmardi 11 octobre 2005StatutMembreDernière intervention 1 juin 2010 23 janv. 2006 à 12:59
quand je met ton code que tu viens de me donner... je doit entrer la
valeur de " qtestock.ligne_facture.quantité commandé" ...alors que
normalement tout doit se faire tout seul quand je clique sur le bouton
....
ufufy
Messages postés46Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention13 avril 2007 23 janv. 2006 à 14:24
cette ligne pose pbm:
[QTESTOCK].[LIGNE_FACTURE].[Quantité commandé]
je n'avais pas prété attention au contenu de la requette mais ce n'est pas possible un qqchose.untruc.bidule en SQL. D'ou le fait qu'il te demande sa valeur!
Si c'est un controle de ton formulaire il faut ecrire:
DoCmd.RunSQL ("UPDATE PRODUIT INNER JOIN LIGNE_FACTURE ON PRODUIT.N°PRODUIT LIGNE_FACTURE.N°PRODUIT SET PRODUIT.QTESTOCK" & [QTESTOCK].[LIGNE_FACTURE].[Quantité commandé] & " WHERE LIGNE_FACTURE.N°FACTURE=" & Me.N°FACTURE)
Selon quelle type de données renferme le [QTESTOCK].[LIGNE_FACTURE].[Quantité commandé] il faut ajouter des ' de chaque coté (c'est a dire apres le = et avant le WHERE) mais je crois que ce n'est pas la peine pour une valeur numérique.
pour de plus amples informations a propos du SQL: http://membres.lycos.fr/sqlpro/ dans le menu "SQL de A a Z" de gauche tu regardes a "inserer modifier supprimer"
pour vérifier la validité de ta requette, dans access (pas dans VBA) tu crée une nouvelle requette et tu essaye de l'executer avec le point d'exclamation rouge (bien evidemment tu ne peux pas y mettre des valeurs a récuperer dans un formulaire, il faut mettre des valeurs fictives pour tester la structure de la requette). Tant que cela ne donne pas le resultat escompté c'est que la requette pose un pbm, une fois que c'est OK tu fait DoCmd.RunSQL (" ta requette qui va bien") dans don code VBA
ufufy
Messages postés46Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention13 avril 2007 23 janv. 2006 à 14:32
PS:Plus amples explication sur pourquoi la requette ne marche pas et pourquoi maintenant ca devrai rouler
en fait quand tu écrit une requette SQL, VBA lui ne sait pas ce que c'est, pour VBA c'est juste une chaine de caractères, c'est pourquoi on la met entre guillement " ", mais si dans ta requette tu veux récuperer des valeurs de ton formulaire, ca VBA les connait, et il ne faut pas les mettre entre guillement, du coup ca donne du:
DoCmd.RunSQL ("debut de ma requette" & valeur de mon formulaire & "fin de ma requette")
mais valeur de mon formulaire, seul VBA sait ce que c'est... si tu execute une requette DoCmd.RunSQL ("debut de ma requette valeur de mon formulaire fin de ma requette") et bien grosso modo SQL va te dire atta mon gars tu me parle de la valeur de ton formulaire... mais c'est quoi?
Il me semble que dans ta requette un des " etait au mauvais endroit, voila pourquoi ca ne marchait pas.
J'ai été assez claire la??? parceque je viens de faire un roman!!!!!!!
(si apres ca ca ne fonctionne toujours pas je mange mon PC)