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 mise à jour avec un champ calculé


Sujet :

Requêtes et SQL.

  1. #21
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 136
    Points : 89
    Points
    89
    Par défaut
    Là, ça marche (en enlevant le WHERE EXISTS proposé précédemment)!!
    Sauf que lorsque je veux lancer ma requete, elle ne se lance pas et j'ai un message: 'l'opération doir utiliser une requête qui peut être mise à jour'...

  2. #22
    Membre habitué Avatar de ancel17
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2007
    Messages : 312
    Points : 178
    Points
    178
    Par défaut
    peux-tu poster le code complet de tes requetes stp pour q je vois où on en est ?

  3. #23
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 136
    Points : 89
    Points
    89
    Par défaut
    Voilà voilà:

    Requete appellant la Somme dans une première table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [Mise en cuve].[id_mise en cuve], [apports de vendange].[id mise en cuve], Sum([apports de vendange].[quantité (en tonnes)]) AS [SommeDequantité (en tonnes)]
    FROM [Mise en cuve] LEFT JOIN [apports de vendange] ON [Mise en cuve].[id_mise en cuve] = [apports de vendange].[id mise en cuve]
    GROUP BY [Mise en cuve].[id_mise en cuve], [apports de vendange].[id mise en cuve]
    HAVING ((([apports de vendange].[id mise en cuve])=[Formulaires]![Gestion des apports de vendange]![id_mise en cuve]));
    Et voilà la requete de mise à jour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE [Mise en cuve] SET [Mise en cuve].[volume total (hl)] = (SELECT Requete1.[SommeDequantité (en tonnes)]
    FROM Requete1, [mise en cuve]
    WHERE [Mise en cuve].[id_mise en cuve]=Requete1.[id_mise en cuve]);

  4. #24
    Membre habitué Avatar de ancel17
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2007
    Messages : 312
    Points : 178
    Points
    178
    Par défaut
    Essaie comme ça pour la requete de mise à jour, et si ça ne passe pas, on essaiera par VBA...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE [Mise en cuve] SET [Mise en cuve].[volume total (hl)] = (SELECT Requete1.[SommeDequantité (en tonnes)]
    FROM Requete1
    WHERE [Mise en cuve].[id_mise en cuve]=Requete1.[id_mise en cuve]);

  5. #25
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 136
    Points : 89
    Points
    89
    Par défaut
    ça ne change rien, j'ai toujours le même message d'erreur...

    Je vois pas où est le problème, car en plus quand je suis dans ma requete, sans la lancer, j'ai tous les 'volume total (hl)' de toutes mes mises en cuves. Comme si le filtre de la première requete ne marchati pas du tout...

    Merci pour ta patience!

  6. #26
    Membre habitué Avatar de ancel17
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2007
    Messages : 312
    Points : 178
    Points
    178
    Par défaut
    Est-ce que tu obtiens ce que tu veux en lançant ta première requete ?

    Si oui on pourra déjà se baser la dessus !

  7. #27
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 136
    Points : 89
    Points
    89
    Par défaut
    Oui, ma première requete m'affiche une seule ligne, avec seulement l'id_mise en cuve concernée par le formulaire (Gestion des apports de vendange)...

  8. #28
    Membre habitué Avatar de ancel17
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2007
    Messages : 312
    Points : 178
    Points
    178
    Par défaut
    Tu as donc Requete1(id_mise en cuve, id mise en cuve, Sommedequantité (en tonnes)) qui sert de base et tu veux mettre à jour le champ "volume total (hl)" de ta table "Mise en cuve".

    Le rapport utilisé est 1 tonne = 1 hl

    Sommes-nous d'accord ?

  9. #29
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 136
    Points : 89
    Points
    89
    Par défaut
    Oui, pour simplifier!
    car le rapport entre tonnes et hl n'est pas de 1 (1hl=0.13tonnes), mais je pense que c'est un 'détail' pour le fonctionnement de ma requete, je pourrais donc le modifier ultérieurement...

  10. #30
    Membre habitué Avatar de ancel17
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2007
    Messages : 312
    Points : 178
    Points
    178
    Par défaut
    Insère ce code pour un bouton de mise à jour de ta table.

    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
    Dim rst1 As QueryDef
    Dim rst2 As Recordset
     
    DoCmd.SetWarnings False
     
    Set rst1 = QueryDef.OpenRecordset("Requete1")
    Set rst2 = CurrentDb.OpenRecordset("Mise en cuve")
     
    While Not rst2.EOF
        If rst2.Fields("id_mise en cuve") = rst1.Fields("id_mise en cuve") Then
            'rempli la table "Mise en cuve"
            rst2.Edit
            rst2.Fields("volume total (hl)") = rst1.Fields("SommeDequantité (en tonnes)")*0.13
            rst2.Update
        End If
    rst2.MoveNext
    Wend
     
    rst1.Close
    rst2.Close
    Set rst1 = Nothing
    Set rst2 = Nothing
     
    DoCmd.SetWarnings True

  11. #31
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 136
    Points : 89
    Points
    89
    Par défaut
    C'est fait, mais quand je clique dessus, j'ai: 'Erreur d'execution 424'
    Et le débogage se porte sur
    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rst1 = QueryDef.OpenRecordset("Requete1")

  12. #32
    Membre habitué Avatar de ancel17
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2007
    Messages : 312
    Points : 178
    Points
    178
    Par défaut
    En remplaçant par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rst1 = CurrentDb.OpenRecordset("Requete1")
    ça donne quoi ?

  13. #33
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 136
    Points : 89
    Points
    89
    Par défaut
    ça donne
    'erreur 3061:
    Trop peu de paramètres. 1 attendu'...

  14. #34
    Membre habitué Avatar de ancel17
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2007
    Messages : 312
    Points : 178
    Points
    178
    Par défaut
    Et là ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rst1 = CurrentDb.OpenRecordset("Requete1", dbOpenDynaset)

  15. #35
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 136
    Points : 89
    Points
    89
    Par défaut
    Salut,
    ça donne exactement la même chose...

  16. #36
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 136
    Points : 89
    Points
    89
    Par défaut
    Salut,
    Finalement, j'ai trouvé une autre solution:
    j'ai ajouté un champ 'Somme' dans ma table 'apportsdevendange'. J'y calcule la somme grâce à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE apportsdevendange SET apportsdevendange.Somme = DSum('quantité','apportsdevendange','id_mise_en_cuve=[Formulaires]![Gestion des apports de vendange]![id_mise_en_cuve]')
    WHERE (((apportsdevendange.id_mise_en_cuve)=Formulaires![Gestion des apports de vendange]!id_mise_en_cuve));
    Et ensuite je n'ai pus qu'à faire une requete mise à jour simple pour avoir le volume en hl dans l'autre table (Mise en cuve).

    Voilà voilà...

    Merci pour l'aide

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Mise à jour d'un champ calculé dans un recordset
    Par pdata dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 21/10/2009, 10h28
  2. Requete Mise à jour avec données décimales
    Par Bernardtapis dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 25/11/2007, 14h47
  3. Pb requete mise à jour avec paramètre issu d'un formulaire
    Par ver_for dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 21/11/2007, 19h23
  4. Mise à jour d'un champs année et calcul d'un âge
    Par Didine1801 dans le forum Toad
    Réponses: 7
    Dernier message: 20/11/2007, 09h16
  5. Réponses: 3
    Dernier message: 08/12/2006, 20h08

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