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

Requêtes et SQL. Discussion :

requete de mise à jour à partir de controle de form


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 67
    Par défaut requete de mise à jour à partir de controle de form
    Bonjour à tous,

    J'ai un sous-form [SF-composantcommandefournisseur] qui me donne les détails d'une commande et qui me calcule le total de la commande dans le controle [texte11]

    La table [STV-composantcommandefournisseur] qui stocke les données du sousform à un champ [numerotablecommandefournisseur] qui me renvoie à la table principale des commandes [TV-commandefournisseur] dans le champ [numeroauto] qui est mon numéro de commande.

    Donc comme cette table contient un champ [montanttotalcommande] je suis sur que vous me voyez arriver avec mes GROS sabots

    Je cherche à faire une requete ou un bout de code qui me mettrait le total de la commande à jour dans la table tv-commandefournisseur à chaque fois qu'on consulte ou modifie la commande.

    Peut etre un truc sur entrée du sous form mais je me perds dans les références car je ne veux modifier que les données de l'enregistrement de la table qui correspond a la commande ouverte dans le sous form.

    Merci beaucoup de votre aide

    Merci de votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 67
    Par défaut
    J'ai réfléchi de mon mieux (donc pas terrible) et j'ai tenté ca

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE [Tv-CommandeFournisseur] INNER JOIN [STv-ComposantCommandeFournisseur] ON [Tv-CommandeFournisseur].NumeroAuto = [STv-ComposantCommandeFournisseur].NumeroTableCommandeFournisseur SET [Tv-CommandeFournisseur].MontantTotalCommande = [forms]![sf-composantcommandefournisseur]![texte11]
    WHERE ((([Tv-CommandeFournisseur].numeroauto)=[numerotablecommandefournisseur]));
    J'ouvre le form, je vais sur un enregistrement ou le total existe et je lance la requete

    1° il me demande [forms]![sf-composantcommandefournisseur]![texte11] donc il ne doit pas le trouver

    2° quand je rentre une valeur ca me met a jour TOUS les enregistrements de la table tv-commandefournisseur donc la clause where est ignorée

    Merci de votre aide

  3. #3
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Juin 2011
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2011
    Messages : 162
    Par défaut
    Bonjour,

    Pas besoin de requête s'il s'agit de mettre à jour uniquement les enregistrements courants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![CommandeFournisseur]![MontantTotalCommande] = Forms![CommandeFournisseur]![SF-composantcommandefournisseur].Form.[Texte11]
    avec CommandeFournisseur = nom de votre formulaire principal.

    Bcdt

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 67
    Par défaut
    Bonjour,

    J'ai modifié le code d'ouverture du form principal et ca me met un message d'erreur comme quoi il ne peut attribuer cette valeur a cet objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Form_Open(Cancel As Integer)
     
    DoCmd.Maximize
    Forms![F-CommandeFournisseur]![MontantTotalCommande] = Forms![F-CommandeFournisseur]![SF-composantcommandefournisseur].Form.[Texte11]
    DoCmd.GoToRecord , , acLast
     
     
    End Sub
    J'ai bien corrigé le nom du form principal en F-commandefournisseur mais ca ne donne rien de mieux...

    Je me suis trompé ou ?

    Merci

  5. #5
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Juin 2011
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2011
    Messages : 162
    Par défaut
    Bonjour,

    Il est probable que [texte11] qui est un champ calculé (si j'ai bien compris) dans le sous formulaire ai une valeur Null à l'ouverture de votre formulaire principal, ce qui génère l'erreur.

    Il est donc préférable de mettre votre code dans le sous-formulaire, après celui calculant [texte11] ... avec l'avantage qu'à chaque fois que texte11 sera recalculé, le champ [MontantTotalCommande] sera mis à jour.

    Bcdt

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 67
    Par défaut
    Ok, merci, ca marche bcp mieux comme ca

    Par contre maintenant je voudrais mettre les 1000+ enregistrements à jour.

    Pour le moment je peux faire avec le code dans la propriété click du bouton du montant total

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Texte11_Click()
    Forms![F-CommandeFournisseur]![MontantTotalCommande] = Forms![F-CommandeFournisseur]![SF-composantcommandefournisseur].Form.[Texte11]
    End Sub
    Mais bon, s'il faut que je fasse ca sur 1000 enregistrements je suis pas rendu

    Pour un nouvel enregistrement ca devrait se calculer tout seul mais sachant que les calculs sont déja fait pour les 1000 existants dans quelle propriété de quel controle je dois mettre le code magique ?

    J'ai essayé dans form_open ou dans got_focus(du sous-form) mais ca donne rien...

    Merci

Discussions similaires

  1. Requete Mise à jour à partir d'un formulaire
    Par obC++ dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 06/01/2008, 14h09
  2. Mise à jour à partir liste déroulante
    Par Daniel MOREAU dans le forum Access
    Réponses: 4
    Dernier message: 12/05/2006, 15h13
  3. Requete de Mise à Jour
    Par romika dans le forum Access
    Réponses: 6
    Dernier message: 15/03/2006, 14h02
  4. probleme de requete de mise à jour
    Par donny dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 21/06/2005, 17h06
  5. Message d'avertissement requete de mise à jour
    Par Buffiere dans le forum Access
    Réponses: 4
    Dernier message: 24/01/2005, 10h20

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