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

MS SQL Server Discussion :

Update avec des colonnes calculées


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 19
    Points : 17
    Points
    17
    Par défaut [RESOLU]Update avec des colonnes calculées
    Bonjour,

    J'ai une base (SQLSERVEUR) avec une table avec plusieurs colonnes dont une qui est le calcule de deux autres. C'est à dire la colonne a1,a2 et a3.
    Donc a3 = (a1-a2).

    Donc voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try
                {
                    this.Validate();
                    this.XXXXBindingSource.EndEdit();
                    XXXXTableAdapter.Update(XXXXXXXXDataSet.AGENTS);
                }
                catch (Exception Ex)
                {
                    MessageBox.Show("ERREUR : " + Ex + ". Si le probleme persiste veuillez contacter l'administrateur.");
                }
    Et le message d'erreur :

    ERREUR : System.Data.SqlClient.SqlException: La colonne "a3" ne peut pas être modifiée, car elle est soit une colonne calculée, soit le résultat d'un opérateur UNION.
    Comment contourner mon problème 'proprement' ???
    Donc faire un nouveau update non merci en faite je voudrai exclure la colonne (a3) pendant l'update.

    Merciiii de votre aide

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Le problème c'est qu'on ne voit pas la commande SQL que vous avez envoyée au serveur SQL.
    Vous vous éviteriez ce genre de désagréments si vous écriviez la procédure stockée adéquate, pour les raisons que j'ai évoquées ici

    @++

  3. #3
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut
    Bonsoir,

    Tout à fait d'accord avec elsuket en ce qui concerne les base de données "épaisses". Néanmoins, puisque c'est manifestement une question de culture/formation et de code applicatif déjà existant, si ce n'est pas possible, modifiez votre table adapter pour ne pas inclure cette colonne en lecture seule dans l'insert/update.

    @+

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 19
    Points : 17
    Points
    17
    Par défaut re
    Tout d'abord merci de vos réponses, et veuillez m'excuser du retard (les vacances)...

    Pour ce qui est de la réponse de "elsuket" je connais bien la différence en T-SQL et procédure stocké et j'ai déjà procédé avant de commencer le développement à une analyse. Bref la question n'est donc pas là.
    De plus la requête est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XXXXTableAdapter.UPDATE(XXXXXXXXDataSet.AGENTS);
    Et pour la réponse de "agemis31", Oui j'ai bien pensé d'enlever la colonne de mon tableAdapter mais comment ?
    J'ai testé avec des commandes comme celles-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    XXXXDataSet.AGENTS.Columns.Remove(XXXDataSet.AGENTS.a3Column);
    aGENTSTableAdapter.Update(XXXXDataSet.Tables.("AGENTS").Select();
                   this.aGENTSBindingSource.Remove(XXXXDataSet.AGENTS.a3Column);
    Mais sans résultat. Je pense ne pas être bien loin de la solution...

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 19
    Points : 17
    Points
    17
    Par défaut re Solution
    Bon finalement j'ai choisi de procéder autrement.

    Mais pour ceux qui le veulent voici un lien qui explique la démarche :
    http://faqcsharp.developpez.com/?page=adonet

    Merci pour vos réponses

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

Discussions similaires

  1. table avec des colonnes calculées (table qui stocke des formules)
    Par messi1987 dans le forum Développement
    Réponses: 15
    Dernier message: 13/01/2014, 17h16
  2. [XL-2003] Calcul de moyenne avec des colonnes contenant des formules
    Par filsdepub dans le forum Excel
    Réponses: 20
    Dernier message: 03/08/2012, 16h36
  3. DataTable avec des colonnes dynamiques
    Par PrinceDeLu dans le forum JSF
    Réponses: 5
    Dernier message: 15/04/2011, 10h54
  4. Réponses: 4
    Dernier message: 28/07/2006, 08h31
  5. UPDATE avec des variables Delphi ...
    Par Kokito dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/03/2004, 22h35

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