[ACCESS, VBA] Besoin d'aide pr requêteUpdate

Résolu/Fermé
Tofd54 Messages postés 5 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 12 juin 2009 - 2 juin 2009 à 21:05
Tofd54 Messages postés 5 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 12 juin 2009 - 3 juin 2009 à 21:09
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 :

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

5 réponses

Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
3 juin 2009 à 07:54
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
1
blux Messages postés 26031 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 12 mai 2024 3 289
3 juin 2009 à 15:40
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.
1
blux Messages postés 26031 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 12 mai 2024 3 289
3 juin 2009 à 15:58
Et pour les champs numériques, il suffit de transformer la virgule en point-decimal car le SQL est en langue anglaise...
1
Tofd54 Messages postés 5 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 12 juin 2009
3 juin 2009 à 13:11
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tofd54 Messages postés 5 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 12 juin 2009
3 juin 2009 à 21:09
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 :
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.
0