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

IHM Discussion :

[Formulaire]enregistrer un champ calculé de formulaire dans une table


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 62
    Points
    62
    Par défaut [Formulaire]enregistrer un champ calculé de formulaire dans une table
    Bonjour

    J'ai créé un formulaire lié à une table DONNEES. A partir d'un champ Recette du formulaire, je calcule un champ tvarecette et htrecette.

    La propriété source controle par exemple du champ htrecette est "=[recette]-[TVArecette]".Celle du champ recette est "recette" liée directement à la table DONNEES.

    L'actualisation de la base DONNEES se fait directement pour le champ Recette. Ce n'ai pas le cas pour les champs calculés alors j'ai créé un bouton enregistré avec le code 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
     
    Dim curConn As New ADODB.Connection
    Dim rst As New ADODB.Recordset
     
    Set curConn = CurrentProject.Connection
    rst.Open "DONNEEES", curConn, adOpenDynamic, adLockOptimistic, adCmdTable
    With rst
     
    iRponse = MsgBox("Voulez vous enregistrer ces valeurs ?", vbYesNo, "Enregistrer")
     
    Select Case iRponse
     
    Case vbYes
    .AddNew
    ![DATATION] = Me.DATATION
    ![CATEGORIE] = Me.CATEGORIE
    ![CLIENTS] = Me.CLIENTS
    ![DESCRIPTIF] = Me.DESCRIPTIF
    ![DEPENSES] = Me.DEPENSES
    ![HTDEPENSES] = Me.HTDEPENSES
    ![TVADEPENSES] = Me.TVADEPENSES
    ![RECETTES] = Me.RECETTES
    ![HTRECETTES] = Me.HTRECETTES
    ![TVARECETTES] = Me.TVARECETTES
    ![KMS] = Me.KMS
    ![TAUXTVA] = Me.TVA_liste
     
    .Update
     
     
    Case vbNo
     
    rst.CancelUpdate
    rst.Close
    Set rst = Nothing
    Set curConn = Nothing
    Exit Sub
     
    End Select
     
    End With
     
    DoCmd.GoToRecord acActiveDataObject, , acNewRec
     
    rst.Close
    Set rst = Nothing
    Set curConn = Nothing
    End Sub
    Le problème est que la base DONNEES enregistre 2 fois les champs : une fois avec les champs directement liés au formulaire et sans champ calculés et une autre fois avec tous les champs.

    Comment éviter ce soucis de double enregistrement?

    Comment je peux lier la propriété source controle d'un champ calculé avec un champ correspondant dans la table DONNEES ?

    merci

    christophe

  2. #2
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour et bienvenue sur le Forum......

    Avant toute chose, tu devrais rapidement mettre ton code entre balises....
    Pour cela, réédite ton post et encadre tout ton code VBA avec les balises #...Cela rendra la lecture beaucoup plus aisée....

    [EDIT] Réponse rapide.....
    L'actualisation de la base DONNEES se fait directement pour le champ Recette. Ce n'ai pas le cas pour les champs calculés
    Pourquoi veux tu sauvegarder ces champs calculés
    Généralement cela ne sert à rien.......puisque justement ils seront en permanence calculé lors de la visualisation de ton Formulaire

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 62
    Points
    62
    Par défaut
    j'ai besoin des champs calculés car le formulaire sert à enregistrer des données changeant à chaque saisie. De plus, les calculs effectués sont repris pour la création ultérieure d'état enfin bref ces champs me sont impératifs et je ne trouve pas l'astuce pour les enregistrer dans ma table DONNEES

    merci pour toute piste

  4. #4
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    Tu creer un champ dans la table par Exemple Total_recette
    tu utilse une requete comme source de ton formulaire avec les champ dont tu as de besoin et tu inclut le champ Total_Recette et tu fait ton calcul a partir de cette requete.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Total_Recette:[recette]-[TVArecette]
    (mais il y a surement d'autre solution )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Champ calculé comme valeur dans une requête analyses croisées avec une seule table
    Par The old fool dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/10/2014, 10h15
  2. [AC-2003] champ calculé a envoyer dans la table
    Par marcmarc150 dans le forum IHM
    Réponses: 3
    Dernier message: 25/08/2012, 13h35
  3. Réponses: 0
    Dernier message: 13/08/2009, 17h45
  4. Réponses: 4
    Dernier message: 12/12/2008, 07h28
  5. Réponses: 1
    Dernier message: 11/06/2008, 13h33

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