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
COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|