IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Transformer une facture en avoir


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 102
    Points : 57
    Points
    57
    Par défaut Transformer une facture en avoir
    Bonjour,

    Dans ma base j'ai un formulaire intervention dans lequel j'ai un sous-formulaire détail. Lorsque je sélectionne les lignes du S/F Détail, je clique sur "transférer en facture" et la facture est créée. Le code que j'utilise est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Private Sub Commande211_Click()
    On Error GoTo Err_Commande211_Click
     
    Dim NumFAC As String
    Dim stDocName As String
     
        stDocName = "FORM-FACTURE FI"
        DoCmd.OpenForm stDocName, acNormal, "", "", acAdd, acNormal
     
        Forms![FORM-FACTURE FI]![ID_Devis] = IDDevis
        Forms![FORM-FACTURE FI]![id_FI] = IDFiche
        Forms![FORM-FACTURE FI]![ID_Client] = IDClient
        Forms![FORM-FACTURE FI]![ID_Site] = IDSites
        Forms![FORM-FACTURE FI]![ID_Analaytique] = IDAnalytique
        Forms![FORM-FACTURE FI]![ID_Categorie] = IDCategorie
        Forms![FORM-FACTURE FI]![Objet] = Observations
        Forms![FORM-FACTURE FI]![ID_TVA Double] = [TVA FI]
        Forms![FORM-FACTURE FI]![Texte] = Observ2
        Forms![FORM-FACTURE FI]![Type facture] = Typefacture
        Forms![FORM-FACTURE FI]![AcompteFI] = C - Acompte
        Forms![FORM-FACTURE FI].Refresh
     
     
        'Récupérer le numéro de fiche intervention en cours
        NumFAC = Forms![FORM-FACTURE FI]!IDFACTUREFI
     
        monsql = "INSERT INTO [RQ-DETAIL FAC] ([ID_Facture FI], ID_FI, [ID_ARTICLE], TVA, SOUSARTICLE, [PVHT Fac], [QteDetailFac])" _
            & " SELECT [Formulaires]![FORM-FACTURE FI]![IDFACTUREFI] AS NumFAC,[RQ-DETAIL FI].id_FI," _
            & " [RQ-DETAIL FI].id_article, [RQ-DETAIL FI].TVA, [RQ-DETAIL FI].SousArticle, [RQ-DETAIL FI].[PVHT FI], [RQ-DETAIL FI].[Qte DetailFI]" _
            & " From [RQ-DETAIL FI]" _
            & " WHERE [RQ-DETAIL FI].id_FI ='" & Me.IDFiche _
            & "' AND [RQ-DETAIL FI].[Select]=-1 AND [RQ-DETAIL FI].Facture=0;"
     
        DoCmd.RunSQL monsql
        monsql = "UPDATE [RQ-DETAIL FI] SET [RQ-DETAIL FI].Facture = -1" _
            & " WHERE [RQ-DETAIL FI].id_FI ='" & Me.IDFiche _
            & "' AND [RQ-DETAIL FI].[Select]=-1 AND [RQ-DETAIL FI].Facture=0;"
     
         DoCmd.RunSQL monsql
         Forms![FORM-FACTURE FI].[S/FORM-DETAIL FAC].Form.Requery
    Exit_Commande211_Click:
        Exit Sub
     
    Err_Commande211_Click:
        MsgBox Err.Description
        Resume Exit_Commande211_Click
     
     
    End Sub
    A présent, je souhaite pouvoir transformer une facture en avoir en sélectionnant toutes les lignes du sous-formulaire détail fac ou quelques unes. Donc j'ai créé une case oui/non "Selec" et une case oui/non "Avoir" dans le détail fac. Lorsque je transfère les lignes, je souhaite que la quantité soit négative (ou positive si elle était négative dans la facture).
    Donc j'ai utilisé le code ci-dessus et je l'ai adapter ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Private Sub Commande87_Click()
    Dim NumFAC As String
    Dim stDocName As String
     
        stDocName = "FORM-FACTURE FI"
        DoCmd.OpenForm stDocName, acNormal, "", "", acAdd, acNormal
     
        Forms![FORM-FACTURE FI]![ID_Devis] = ID_Devis
        Forms![FORM-FACTURE FI]![id_FI] = id_FI
        Forms![FORM-FACTURE FI]![ID_Client] = ID_Client
        Forms![FORM-FACTURE FI]![ID_Site] = ID_Site
        Forms![FORM-FACTURE FI]![ID_Analaytique] = id_analytique
        Forms![FORM-FACTURE FI]![ID_Categorie] = IDCategorie
        Forms![FORM-FACTURE FI]![Objet] = Objet
        Forms![FORM-FACTURE FI]![ID_TVA Double] = [ID_TVA Double]
        Forms![FORM-FACTURE FI]![Texte] = Texte
        Forms![FORM-FACTURE FI]![AcompteFI] = AcompteFI
        Forms![FORM-FACTURE FI].Refresh
     
     
     
        'Récupérer le numéro de fiche intervention en cours
        NumFAC = Forms![FORM-FACTURE FI]!IDFACTUREFI
     
        monsql = "INSERT INTO [RQ-DETAIL FAC] ([ID_Facture FI], ID_FI, [ID_ARTICLE], TVA, SOUSARTICLE, [PVHT Fac], [QteDetailFac])" _
            & " SELECT [Formulaires]![FORM-FACTURE FI]![IDFACTUREFI] AS NumFAC,[RQ-DETAIL FAC].ID_Facture FI," _
            & " [RQ-DETAIL FAC].ID_ARTICLE, [RQ-DETAIL FAC].TVA, [RQ-DETAIL FAC].SOUSARTICLE, [RQ-DETAIL FAC].[PVHT Fac], [RQ-DETAIL FAC].[Qte DetailFac]" _
            & " From [RQ-DETAIL FAC]" _
            & " WHERE [RQ-DETAIL FAC].ID_Facture FI ='" & Me.IDFACTUREFI _
            & "' AND [RQ-DETAIL FAC].[Selec]=-1 AND [RQ-DETAIL FAC].Avoir=0;"
     
        DoCmd.RunSQL monsql
        monsql = "UPDATE [RQ-DETAIL FAC] SET [RQ-DETAIL FAC].Avoir = -1" _
            & " WHERE [RQ-DETAIL FAC].ID_Facture FI ='" & Me.IDFACTUREFI _
            & "' AND [RQ-DETAIL FAC].[Selec]=-1 AND [RQ-DETAIL FAC].Avoir=0;"
     
         DoCmd.RunSQL monsql
         Forms![FORM-FACTURE FI].[S/FORM-DETAIL FAC].Form.Requery
    Exit_Commande87_Click:
        Exit Sub
     
    Err_Commande87_Click:
        MsgBox Err.Description
        Resume Exit_Commande87_Click
     
    End Sub
    Alors d'une part ça ne crée pas un nouveau document, le 1er "DoCmd.RunSQL monsql" est jaune et de plus je ne sais pas comment ni où mettre la notion "quantité négative" de l'avoir.

    Merci pour vos conseils.
    Cordialement,
    Kanin

  2. #2
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonjour,

    Pour savoir ce qui ne marche pas et avoir un message d'erreur compréhensible lorsque l'on travaille avec des clause SQL reconstruite, avant ton "DoCmd.RunSQL monsql"

    Ajoute la ligne :
    Ainsi ta chaine SQL reconstruire apparaitra dans ta fenêtre d'exécution.
    Ensuite tu fais un copier coller dans une nouvelle requête et tu l'exéute.
    La tu auras un message d'erreur clair et tu saura ou est le problème

    deuxièmement,
    Pourquoi faire une requête "Insert" dans la table "[RQ-DETAIL FAC]" et ensuite mettre à jour ces mêmes ligne que tu viens d'ajouter avec ta seconde requête "UPDATE" ?
    Pourquoi ne pas mettre à jour ce champ directement dans la première requête ?

    du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     monsql = "INSERT INTO [RQ-DETAIL FAC] ([ID_Facture FI], ID_FI, [ID_ARTICLE], TVA, SOUSARTICLE, [PVHT Fac], [QteDetailFac], [Facture])" _
            & " SELECT [Formulaires]![FORM-FACTURE FI]![IDFACTUREFI] AS NumFAC,[RQ-DETAIL FI].id_FI," _
            & " [RQ-DETAIL FI].id_article, [RQ-DETAIL FI].TVA, [RQ-DETAIL FI].SousArticle, [RQ-DETAIL FI].[PVHT FI], [RQ-DETAIL FI].[Qte DetailFI],-1" _
            & " From [RQ-DETAIL FI]" _
            & " WHERE [RQ-DETAIL FI].id_FI ='" & Me.IDFiche _
            & "' AND [RQ-DETAIL FI].[Select]=-1 AND [RQ-DETAIL FI].Facture=0;"
    Et ne manque t'il pas dans ta clause INSERT le premier Champ NumFAC ??

    Et pour la quantité négative de la même manière dans ta requete insert tu rajoute ton champ "Quantité" apres "Facture" et dans ta clause select, apres le "-1" tu rajoute le champ "- [Quantité]
    @+


    Pensez au tag

Discussions similaires

  1. [java - SQL] transformer une Image en BLOB ?
    Par pierre.zelb dans le forum JDBC
    Réponses: 3
    Dernier message: 04/07/2005, 15h04
  2. [DEBUTANT] Transformer une variable Double en STring
    Par Battosaiii dans le forum Langage
    Réponses: 6
    Dernier message: 13/06/2005, 16h43
  3. [Débutant] Transformer une appli locale en servlet
    Par msquall dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 05/04/2005, 16h10
  4. Réponses: 2
    Dernier message: 14/01/2005, 15h40
  5. Transformer une ligne en polygone
    Par bl4d3 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 02/09/2003, 09h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo