Accueil > Forum > > > > Recordset, Pour mise à jour d'un champ, Probleme
Recordset, Pour mise à jour d'un champ, Probleme
dimanche 30 mars 2008 à 12:29:33 |
Recordset, Pour mise à jour d'un champ, Probleme

good speed
|
Bonjour, je travails sous ACCESS 2003 J'essais de mettre à jour le champ [MAJ Quantite] de la table "Taille Stock" avec du vb code mais rien ne se produit, ni le resultat escompté, ni erreur signalée par access. Ci-dessous les deux tables Vente et " Taille stock" ainsi que le code vb A signaler que le code est placer dans le formulaire Vente sur " apres mise à jour" event Vente| SaleID | Date | Reference | Taille | Quantite |
|---|
| 1 | 02/03/2008 | Ref1 | 3940 | 1 | | 2 | 02/03/2008 | Ref2 | 2 | 2 | | 3 | 02/03/2008 | Ref2 | 4 | 1 | | 4 | 03/03/2008 | Ref1 | 3940 | 2 | | 5 | 03/03/2008 | Ref3 | 40 | 1 | | 6 | 03/03/2008 | Ref2 | 3 | 1 | | 7 | 03/03/2008 | Ref2 | 3 | 1 | | 8 | 04/03/2008 | Ref2 | 2 | 1 | | 9 | 15/03/2008 | Ref3 | 44 | 2 | | 10 | 15/03/2008 | Ref1 | 4142 | 3 | | 11 | 15/03/2008 | Ref3 | 44 | 1 | | 12 | 18/03/2008 | Ref2 | 4 | 2 | | 13 | 18/03/2008 | Ref1 | 4344 | 1 | | 14 | 18/03/2008 | Ref2 | 2 | 1 | Taille Stock| ID | Reference | Taille | Quantite | MAJ Quantite |
|---|
| 1 | Ref1 | 3738 | 5 | 5 | | 2 | Ref1 | 3940 | 8 | 8 | | 3 | Ref1 | 4142 | 10 | 10 | | 4 | Ref1 | 4344 | 8 | 8 | | 5 | Ref2 | 2 | 10 | 10 | | 6 | Ref2 | 3 | 6 | 6 | | 7 | Ref2 | 4 | 12 | 12 | | 8 | Ref2 | 5 | 9 | 9 | | 9 | Ref3 | 40 | 10 | 10 | | 10 | Ref3 | 42 | 8 | 8 | | 11 | Ref3 | 44 | 6 | 6 | | 12 | Ref3 | 46 | 8 | 8 |
Le code:
------------------------------------------------------------------------------
Private Sub Form_AfterUpdate()
' If an error occurs, jump down to the DataAccessError section. On Error GoTo DataAccessError
' Create a SELECT command. Dim Query As String Query = "SELECT Reference, Taille, Quantite FROM Vente" ' Get a recordset using this command. Dim RS As DAO.Recordset Set RS = CurrentDb.OpenRecordset(Query) ' Move through the recordset, looking at each record. ' Each record is a separate item in the order. Do Until Recordset.EOF ' For each item, get the product ID and quantity details. Dim vReference As String Dim vTaille As String Dim vQuantite As Long vReference = Recordset("Reference") vTaille = Recordset("Taille") vQuantite = Recordset("Quantite")
' Using this information, create an UPDATE command that ' changes the Size and stock levels. Dim UpdateCommand As String UpdateCommand = UpdateCommand = "UPDATE Taille_Stock SET [MAJ Quantite] = Quantite -" & vQuantite & " WHERE Reference =" & vReference And "Taille =" & vTaille
' Run the command. CurrentDb.Execute UpdateCommand ' Move to the next order item (if there is one). Recordset.MoveNext Loop ' Time to clean up. Recordset.Close Exit_Block: Exit Sub DataAccessError: ' You only get here if an error occured. ' Show the error. MsgBox Err.Description Resume Exit_Block End Sub -------------------------------------------------------------------------
Quelqu'un pourrais me dire ou se trouve le problem SVP?
Merci à toute les bonnes volontés
Health & Peace
|
|
dimanche 30 mars 2008 à 12:44:05 |
Re : Recordset, Pour mise à jour d'un champ, Probleme

DARKSIDIOUS
|
Salut, Si tu travaille sous Access (et donc en VBA), pourquoi tu poste dans le forum VB2005 qui n'a absolument rien à voir ???
Je déplace vers le forum approprié ! ______________________________________ DarK Sidious
|
|
dimanche 30 mars 2008 à 13:58:52 |
Re : Recordset, Pour mise à jour d'un champ, Probleme

Exploreur
|
Salut, Est-ce normal cela : UpdateCommand = UpdateCommand = "UPDATE.......... ? A+ Exploreur
Linux a un noyau, Windows un pépin 
|
|
dimanche 30 mars 2008 à 14:06:07 |
Re : Recordset, Pour mise à jour d'un champ, Probleme

LIBRE_MAX
|
Bonjour, aucune idée sur le problème mais une suggestion. Si tu comptes utiliser un recordset, autant en utiliser deux. L' un vers TaillesStock, tu récupère la reference et la taille. (vRefernce, vTaille) L' autre vers Selection de vente where Reference=vRefernce et Taille=vTaille order by Date. Et dans une boucle tu parcours Rs1 , et dans une autre Rs2, et tu met à jour TailleStock.MAJQte à chaque itération
ps: n' oublies pas ma réponse dans l' ancien topic.
... Y'en a même qui disent qu'ils l'ont vu voler. /PRE>
|
|
dimanche 30 mars 2008 à 14:22:06 |
Re : Recordset, Pour mise à jour d'un champ, Probleme

sbeihassen
|
sbeihassen  les mot en gras sont les codes correctes Private Sub Form_AfterUpdate() ' If an error occurs, jump down to the DataAccessError section. On Error GoTo DataAccessError
' Create a SELECT command. Dim Query As String Query = "SELECT Reference, Taille, Quantite FROM Vente ici il vous monque la codition WHERE" ' Get a recordset using this command. Dim RS As DAO.Recordset Set RS = CurrentDb.OpenRecordset(Query) ' Move through the recordset, looking at each record. ' Each record is a separate item in the order. Do Until Recordset.EOF ' For each item, get the product ID and quantity details. Dim vReference As String Dim vTaille As String Dim vQuantite As Long vReference = Recordset.fields("Reference") vTaille = Recordset.fields("Taille") vQuantite = Recordset.fields("Quantite")
' Using this information, create an UPDATE command that ' changes the Size and stock levels. Dim UpdateCommand As String UpdateCommand = "UPDATE Taille_Stock SET [MAJ_Quantite] = Quantite -" & vQuantite & " WHERE Reference =" & vReference And "Taille =" & vTaille
' Run the command. CurrentDb.Execute UpdateCommand ' Move to the next order item (if there is one). Recordset.MoveNext Loop ' Time to clean up. Recordset.Close Exit_Block: Exit Sub DataAccessError: ' You only get here if an error occured. ' Show the error. MsgBox Err.Description Resume Exit_Block End Sub
|
|
dimanche 30 mars 2008 à 15:02:46 |
Re : Recordset, Pour mise à jour d'un champ, Probleme

Exploreur
|
Re, Rajoutons pour être plus clair : Recordset .fields("Reference") .Value
A+ Exploreur
Linux a un noyau, Windows un pépin 
|
|
dimanche 30 mars 2008 à 15:46:34 |
Re : Recordset, Pour mise à jour d'un champ, Probleme

LIBRE_MAX
|
SELECT Reference, Taille, Quantite FROM Vente ici il vous monque la codition WHERE... te renvoie plusieurs lignes. TaillesStock quantité va être mise à jour par quelle quantité de vente avec ta requete "Update TailleStock.... ??? vReference=Reference And vQuantité=Quantite ne suffisentt pas.
... Y'en a même qui disent qu'ils l'ont vu voler. /PRE>
|
|
lundi 31 mars 2008 à 20:21:42 |
Re : Recordset, Pour mise à jour d'un champ, Probleme

good speed
|
Salut, Merci pour vos reponses, Malheureusement, j'ai fais les modifications suggérées de votre part mais toujours pareil, càd, ni erreur, ni changement sur [Taille Stock]![MAJ Quantite] voici le code, en rouge les modifications:--------------------------------------------------------------------------------------------------- Private Sub Form_AfterUpdate() ' If an error occurs, jump down to the DataAccessError section. On Error GoTo DataAccessError ' Create a SELECT command. Dim Query As String Query = "SELECT Reference, Taille, Quantite FROM Vente WHERE Reference =" & Me.Reference & "and Taille =" & Me.Taille
' Get a recordset using this command. Dim RS As DAO.Recordset Set RS = CurrentDb.OpenRecordset(Query) ' Move through the recordset, looking at each record. ' Each record is a separate item in the order. Do Until Recordset.EOF ' For each item, get the product ID and quantity details. Dim vReference As String Dim vTaille As String Dim vQuantite As Long vReference = Recordset .Fields("Reference") .Value vTaille = Recordset .Fields("Taille") .Value vQuantite = Recordset .Fields("Quantite") .Value ' Using this information, create an UPDATE command that ' changes the Size and stock levels. Dim UpdateCommand As String ' de moi meme j'ai aussi changé Taille_Stock en [Taille Stock]UpdateCommand = "UPDATE [Taille Stock] SET [MAJ Quantite] = Quantite -" & vQuantite & " WHERE Reference =" & vReference And "Taille =" & vTaille ' Run the command. CurrentDb.Execute UpdateCommand ' Move to the next order item (if there is one). Recordset.MoveNext Loop ' Time to clean up. Recordset.Close Exit_Block: Exit Sub DataAccessError: ' You only get here if an error occured. ' Show the error. MsgBox Err.Description Resume Exit_Block End Sub --------------------------------------------------------------------------------------------------- Libre_Max: j'ai pas compris comment utiliser deux recordset pour mon cas. Aussi, la requete mise à jour ... UpdateCommand = "UPDATE Taille_Stock SET [MAJ Quantite] = Quantite -" & vQuantite & " WHERE Reference =" & vReference And "Taille =" & vTaille
Est sensée mettre à jour [Taille Stock]![MAJ Quantite] en deduisant le recordset vQuantite de [Taille Stock]![Quantite] et ce, seulement quand les deux conditions sont reunies càd WHERE Reference =" & vReference And "Taille =" & vTaille
Exple: Voir les tables du projets plus haut...
Quand : Vente.Reference = Ref1 et Vente.Taille = 3940 ( c'est la taille d'une chemise, juste pour info) on voit que Quantite = 1 et à ce stade dans le code ces données sont sensées etre regroupées ainsi : vReference = Ref1 vTaille = 3940 vQuantite = 1 Alors Apres que le rcordset a parcouru cet enregistrement
Mise à jour requise de ACCESS ( s'il veut bien)
Je demande à access de mettre à jour [MAJ Quantite] comme suit:
[Taille Stock]![MAJ Quantite] = [Taille Stock]![Quantite] - vQuantite numeriquement: = 8 - 1
Voilà j'espere que ca vous aidera afin que vous me aidiez à resoudre cette enigme que j'ai posté meme dans des forums anglais en vain.
Merci à toutes les bonnes volontées.
Health & Peace
|
|
lundi 31 mars 2008 à 20:39:50 |
Re : Recordset, Pour mise à jour d'un champ, Probleme

LIBRE_MAX
|
Bonsoir, "SELECT Reference, Taille, Quantite FROM Vente WHERE Reference =" & Me.Reference & "and Taille =" & Me.Taille te renvoies 1 02/03/2008 Ref1 3940 1 4 03/03/2008 Ref1 3940 2 si vReference=Ref1 et vTaille=3940 Quand tu lui dis de mettre à jour TaillesStock en ajoutant Quantité, il ne sait pas si c' est celle de la première ligne ou la deuxième. (imagines ensuite si tu as plusieurs ventes de la même Ref et la même taille.) Et donc tu dois trier le résultat de ta requete sur l' ordre de vente TdVente.Puis parcourir cette requete et lire lire par ligne et mettre à jour TailleStock avec la quantité de la ligne courante. C' est ça le RS2 dont je parlais. Au lieu donc de ta requete mise à jour tu fais un Edit puis update à chaque itération de la boucle RS2 imbriquée. ps: tu te souviens de SommeDeQte ? Eh bien la requete regroupement te renvoie une ligne par ref et taille. Mais question: Pourquoi tu ne mets pas à jour TailleStock.Quantité au moment de la vente ? Quand tu es sur un BL, tu n' as qu' une ligne par Ref et Taille.
... Y'en a même qui disent qu'ils l'ont vu voler. /PRE>
|
|
jeudi 3 avril 2008 à 20:27:03 |
Re : Recordset, Pour mise à jour d'un champ, Probleme

good speed
|
Bonsoir, Justement comme tu me l'as preconisé en dernier, c'est comme ca que j'ai procedé, car sur mon formulaire j'ai Reference, Taille, Quantite et autres données et donc les enregistrements sont traités un par un or la procedure n'est appelées à s'executer qu'apres validation de chaque operation, et qu'apres avoir seulement appuyé sur le bouton suivant lequel marque l'evenement " Mis à Jour" et moi j'appel la procedure sur l'evenement " Apres mise à jour" Donc sur Apres mise à jour j'ai qu'une seule ligne d'enregistrement or je precise à ACCESS de selectionner : Query = "SELECT Reference, Taille, Quantite FROM VenteWHERE Reference =" & Me.Reference & "and Taille =" & Me.Taille
et en utilisant les donnés de cette selection de mettre à jour la table taille_Stock : UpdateCommand = "UPDATE [Taille Stock] SET [MAJ Quantite] = Quantite -" & vQuantite & " WHERE Reference =" & vReference And "Taille =" & vTaille
Et comme tu peux bien le voir la condition where est la meme pour la Requete selection et Requete mise à jour, et comme je l'ai mentionné plus haut, sur le formulaire les données sont Affichées et traitées ligne par ligne, et enregistrement par enregistrement.
Pour la requete Tdvente que tu me preconise de créer j'ai bien compris comment faire, mais pour l'utiliser dans un 2em RS j'ai du mal à voir surtout que je comprends pas ...à chaque itération de la boucle RS2 imbriquée, et puis entre nous, un RS ca passe pas alors deux!  Merci mon ami PS: c'est par erreur si j'ai pas posté mon probleme sur le bon forum, mais comme la discussion est déjà entammée et que c'est souvent notre ami Libre_Max qui repond alors je prefere rester enocre sur se forum, si ca vous derange pas biensur.Health & Peace
|
|
Cette discussion est classée dans : taille, recordset, jour, stock, quantite
Répondre à ce message
Sujets en rapport avec ce message
Mise à jour d'une table à partire d'un formulaire avec VB [ par good speed ]
Bonjour,Voilà je suis entrain de preparer une modeste application pour la gestion du magasin de pret à porter dans lequel je travails, et je trouves
Temps de mise a jour d'un recordset [ par SYL666 ]
Bonjour et merci de lire ceci.Voila mon probleme:une met a jour une base de donnees en passant par un recordset. le probleme, c'est que la base de don
mise à jour automatique du stock [ par perso2008 ]
automatiser la mise a jour automatique du stock après saisie des quantités achats ou vents. la saisie de la qteachat ou la qtevente doit incrementer l
vergule [ par fakass ]
salut ,j'ai un probleme avec ma base donne acces j'ai un tableau stock et un champ quantite_s qui donne la quantite existe de stock alors le probleme
pb mise à jour d'un champ à partir du recordset [ par william the new ]
Je voudrais mettre à jour un champ de ma tablemais avec mon code g droit à l'erreur3021, qui me dit :BOF ou EOF = true ou l'enregistrement actuel a ét
Mise à jour de données sous SQLSERVEUR via un Recordset ADODB [ par YopMaster ]
Voici le code que j'utilise pour créer un enregistrement dans un table SQL serveur via un objet recordset :Public CoLilas As New ADODB.Connection 'P
Filter et AbsolutePosition [ par JRN ]
Bonjour,Comment faire pour mettre a jour l' AbsolutePosition d'un recordset lorsqu'on effectue un Filter ?ExempleJ'ouvre un recordset sur 10 enregistr
Acceder à un champ recordset paramétré [ par jyvaut75 ]
Bonjour,Dans une appli en cours de développement, je créé une table dont les noms de champ peuvent varier. J'explique déjà cette partie: je rentre une
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|