[ACCESS, VBA] Besoin d'aide pr requêteUpdate
Résolu
Tofd54
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
Tofd54 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Tofd54 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je vous explique la situation :
J'ai créé une base de donnée sur access dont une table va nous intéresser, la table Outillage. Elle se compose de la sorte :
Outillage (CodeMateriel[NuméroAuto], Designation, ..., PrixBase[Monétaire], Remise[Monétaire], MontantHT[Monétaire], TauxTVA[Monétaire], MontantTVA[Monétaire], MontantTTC[Monétaire], ...)
J'ai donc créé un formulaire dans lequel j'ai effectué des calculs pour obtenir les détails des montants par rapport au montant TTC, au taux de TVA et à la remise (donc PrixBase, MontantHT, MontantTVA sont calculés)
Les noms des cellules sont identiques à celles qui leur correspondent dans la table Outillage.
Donc pas de problème jusqu'à là.
[Précisons le, je n'ai encore pas un excellent niveau sur Access et VB, donc si vous trouvé une solution meilleurs je suis preneur]
J'ai voulu exécuter un script VB en appuyant sur un bouton pour qu'il envois les valeurs des 3 cases calculées dans la table correspondante.
Voila mon script tel qu'il est à l'heure actuelle :
J'ai tenté avec ou sans les .value pour mes variables, mais je ne vois pas de changement
J'ai envoyé ma requete dans une msgbox, voila ce qui j'y vois :
(Question subsidiaire : comment dois-je définir mes variable pour qu'elle soit en numérique comme les valeurs dans la table ?)
Quand j'execute mon script, j'ai droit à :
Qu'en pensez vous ?
Pour ma part, je penserais au fait que les virgules de mes variables fassent interférence avec les virgules séparant les SET, mais je ne sais pas comment faire.
Merci d'avance
Je vous explique la situation :
J'ai créé une base de donnée sur access dont une table va nous intéresser, la table Outillage. Elle se compose de la sorte :
Outillage (CodeMateriel[NuméroAuto], Designation, ..., PrixBase[Monétaire], Remise[Monétaire], MontantHT[Monétaire], TauxTVA[Monétaire], MontantTVA[Monétaire], MontantTTC[Monétaire], ...)
J'ai donc créé un formulaire dans lequel j'ai effectué des calculs pour obtenir les détails des montants par rapport au montant TTC, au taux de TVA et à la remise (donc PrixBase, MontantHT, MontantTVA sont calculés)
Les noms des cellules sont identiques à celles qui leur correspondent dans la table Outillage.
Donc pas de problème jusqu'à là.
[Précisons le, je n'ai encore pas un excellent niveau sur Access et VB, donc si vous trouvé une solution meilleurs je suis preneur]
J'ai voulu exécuter un script VB en appuyant sur un bouton pour qu'il envois les valeurs des 3 cases calculées dans la table correspondante.
Voila mon script tel qu'il est à l'heure actuelle :
Private Sub Commande39_Click() Dim MontantTVA As String Dim MontantHT As String Dim PrixBase As String Dim CodeMateriel As String Dim SQL As String MontantTVA = Me.MontantTVA.Value MontantHT = Me.MontantHT.Value PrixBase = Me.PrixBase.Value CodeMateriel = Me.CodeMateriel.Value SQL = "UPDATE Outillage SET MontantTVA=" & MontantTVA & ", MontantHT=" & MontantHT & ", PrixBase=" & PrixBase & " WHERE CodeMateriel = " & CodeMateriel & " ;" DoCmd.RunSQL SQL End Sub
J'ai tenté avec ou sans les .value pour mes variables, mais je ne vois pas de changement
J'ai envoyé ma requete dans une msgbox, voila ce qui j'y vois :
UPDATE Outillage SET MontantTVA=3,277, MontantHT=16,722, PrixBase=33,44481WHERE CodeMateriel = 16 ;
(Question subsidiaire : comment dois-je définir mes variable pour qu'elle soit en numérique comme les valeurs dans la table ?)
Quand j'execute mon script, j'ai droit à :
Erreur 3144 : Erreur de syntaxe dans l'instruction UPDATE
Qu'en pensez vous ?
Pour ma part, je penserais au fait que les virgules de mes variables fassent interférence avec les virgules séparant les SET, mais je ne sais pas comment faire.
Merci d'avance
A voir également:
- [ACCESS, VBA] Besoin d'aide pr requêteUpdate
- Acer quick access - Forum logiciel systeme
- Quick Access service ✓ - Forum PC portable
- Désinstaller ACER QUICK ACCESS - Forum Logiciels
- Access appdata - Guide
- Excel compter cellule couleur sans vba - Guide
5 réponses
Bonjour Tofd54,
L'orthodoxie prescrit de privilégier les calculs dynamiques afin d'automatiser les éventuelles MàJ tarifaires.
A ce propos, j'attire votre attention sur le tutoriel ACCESS "Northwind" à Télécharger depuis le site Microsoft.
- La problématique de la facturation y est bien traitée
http://www.microsoft.com/downloadS/details.aspx?FamilyID=c6661372-8dbe-422b-8676-c632d66c529c&displaylang=en
Cordialement
L'orthodoxie prescrit de privilégier les calculs dynamiques afin d'automatiser les éventuelles MàJ tarifaires.
A ce propos, j'attire votre attention sur le tutoriel ACCESS "Northwind" à Télécharger depuis le site Microsoft.
- La problématique de la facturation y est bien traitée
http://www.microsoft.com/downloadS/details.aspx?FamilyID=c6661372-8dbe-422b-8676-c632d66c529c&displaylang=en
Cordialement
Salut,
Cependant qu'entendez vous par les calculs dynamiques ?
Ca consiste à ne pas mettre un taux de TVA dans l'enregistrement, par exemple, mais de le mettre dans une table à part qui sera en relation avec les données s'y rapportant.
En cas de mise à jour du taux de TVA, une seule ligne sera à modifier, contre toutes les lignes de la table produits, dans l'autre cas.
Cependant qu'entendez vous par les calculs dynamiques ?
Ca consiste à ne pas mettre un taux de TVA dans l'enregistrement, par exemple, mais de le mettre dans une table à part qui sera en relation avec les données s'y rapportant.
En cas de mise à jour du taux de TVA, une seule ligne sera à modifier, contre toutes les lignes de la table produits, dans l'autre cas.
Et pour les champs numériques, il suffit de transformer la virgule en point-decimal car le SQL est en langue anglaise...
Merci Jean_Jacques pour cette réponse,
Cependant qu'entendez vous par les calculs dynamiques ? Pourriez-vous développer votre explication svp
En ce qui concerne l'exemple de microsoft, je vais l'étudier.
Je vous remercie de votre aide
Cependant qu'entendez vous par les calculs dynamiques ? Pourriez-vous développer votre explication svp
En ce qui concerne l'exemple de microsoft, je vais l'étudier.
Je vous remercie de votre aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci Blux,
J'ai donc fait une table avec les taux de TVA et j'ai fai remplacer les virgules par un point décimal.
ça marche mais maintenant j'ai le message suivant quand je lance le script une seconde fois :
Quand je change d'enregistrement et que je reviens là sa remarche.
Voici mon code actuel, si ça peut vous aider :
Comment parrer ce problème ?
Merci d'avance
EDIT : Nan, en faite j'ai pensé qu'en actualisant ça marcherait et j'ai eu raison en actualisant le formulaire ça marche impek, donc c'est bon , je vous remercie tous les deux.
J'ai donc fait une table avec les taux de TVA et j'ai fai remplacer les virgules par un point décimal.
ça marche mais maintenant j'ai le message suivant quand je lance le script une seconde fois :
erreur 3188 : Impossible de mettre à jour; actuellement verrouillé(e) par une autre session sur cette machine
Quand je change d'enregistrement et que je reviens là sa remarche.
Voici mon code actuel, si ça peut vous aider :
Private Sub Commande39_Click() Dim MontantTVA As String Dim MontantHT As String Dim PrixBase As String Dim CodeMateriel As String Dim SQL As String MontantTVA = Replace(Me.MontantTVA, ",", ".") MontantHT = Replace(Me.MontantHT.Value, ",", ".") PrixBase = Replace(Me.PrixBase.Value, ",", ".") CodeMateriel = Replace(Me.CodeMateriel.Value, ",", ".") SQL = "UPDATE Outillage SET MontantTVA=" & MontantTVA & ", MontantHT=" & MontantHT & ", PrixBase=" & PrixBase & " WHERE CodeMateriel = " & CodeMateriel & " ; " MsgBox SQL DoCmd.RunSQL (SQL) End Sub
Comment parrer ce problème ?
Merci d'avance
EDIT : Nan, en faite j'ai pensé qu'en actualisant ça marcherait et j'ai eu raison en actualisant le formulaire ça marche impek, donc c'est bon , je vous remercie tous les deux.