[VBA] Calcul a partir de deux requetes SQL.

Fermé
Alwayz Messages postés 2 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 13 décembre 2009 - 13 déc. 2009 à 11:15
 Ah que coucou! - 14 déc. 2009 à 09:47
Bonjour,

Je vous expose mon probleme :
Ma base de donnée contient les tables suivante :
- ALBUMS (IdAlbum (KEY), #IdFamille, ...)
- FAMILLES (IdFamille (KEY), CoefVente, TauxTVA, PrixAchatHT, TauxRemise, ...)

Dans un formulaire (F_FACTURES_VENTE), on selectione le numero de produit voulu (IdAlbum) dans une zone de liste (ListeIdProduit).
Ensuite, on choisi la quantité souhaitée dans une zone de texte (ValeurQuantiteVente).
Puis, dans une autre zone de texte (ValeurPrixUnitaireFV), le calcul du prix unitaire du produit devrais s'automatisé sur reception du focus.

Le Calcul est le suivant : PrixAchatHT * CoefVente * (1 - TauxRemise) * (1 + TauxTVA).

ListeIdProduit, ValeurQuantiteVente et ValeurPrixUnitaireFV font tout les 3 partie du sous formulaire SF_SORTIES_STOCK.

Tout ce passe donc dans ValeurPrixUnitaireFV :

Private Sub ValeurPrixUnitaireFV_GotFocus()


Rem Déclaration des variables
Dim MaBase As Database
Dim MaTable1 As Recordset
Dim MonSql1 As String
Dim MonCritere1 As Long
Dim MonCritere2 As String
Dim MonSql2 As String
Dim MaTable2 As Recordset
Dim MonCalcul1 As Single

Rem Gestion des erreurs
10 On Error Resume Next

Rem Chargement de la base de données en cours en mémoire
20 Set MaBase = CurrentDb()

Rem Sélection de l'identifiant de la famille du produit sélectionné dans la zone de liste
30 If IsNull(Me.ListeIdProduit.Value) Then
40 Exit Sub
50 Else:
60 MonCritere1 = Me.ListeIdProduit.Value
70 MonSql1 = "SELECT ALBUMS.IdFamille, ALBUMS.IdAlbum "
80 MonSql1 = MonSql1 & "FROM ALBUMS "
90 MonSql1 = MonSql1 & "WHERE ALBUMS.IdAlbum=" & MonCritere1 & ";"
100 Set MaTable1 = MaBase.OpenRecordset(MonSql1)
110 MonCritere2 = MaTable1!IdFamille
120 MaTable1.Close

Rem Sélection du prix de la famille auquel appartient le produit
130 MonSql2 = "SELECT FAMILLES.PrixAchatHT, FAMILLES.TauxTVA, FAMILLES.TauxRemise, FAMILLES.CoefVente"
140 MonSql2 = MonSql2 & "FROM FAMILLES"
150 MonSql2 = MonSql2 & "WHERE FAMILLES.IdFamille=" & MonCritere2 & ";"
160 Set MaTable2 = MaBase.OpenRecordset(MonSql2)
Rem Calcul du prix de vente pour l'article
170 MonCalcul1 = MaTable2!PrixAchatHT * MaTable2!CoefVente
180 MonCalcul1 = MonCalcul1 * (1 - MaTable2!TauxRemise)
190 MonCalcul1 = MonCalcul1 * (1 + MaTable2!TauxTVA) * Me!ValeurQuantiteVente
200 MaTable2.Close
Rem Mise a jour du contrôle prix de vente
210 Me!ValeurPrixUnitaireFV.Value = MonCalcul1
220 MaBase.Close
230 End If

Rien ne ce passe lors de la reception de focus, la valeur du prix reste à 0, et lors d'un pas a pas détaillé, je constate que l'erreur est peut etre ligne 160 et +.
En effet, MaTable2 prend la valeur "Nothing" et les champs de MaTable2 me dise que la variable n'est pas spécifié (ou quelque chose comme sa).

Merci d'avance de votre aide, ceci est asser urgent.

Ps: Je suis dans l'incapacité de modifier les champs de ma base de données.

2 réponses

J'ai absolument besoin d'aide =S.
0
Ah que coucou!
14 déc. 2009 à 09:47
Affiche sql2 dans un msgbox et tu comprendras :D
0