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

Bases de données Delphi Discussion :

Update et ces variables incorrectes


Sujet :

Bases de données Delphi

Vue hybride

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Par défaut Update et ces variables incorrectes
    Bonjour,

    Voilà mon probleme!

    J'essaie de faire un UPDATE sur des données, j'ai pris la source du code dans le forum et il me retourne l'erreur:

    EDBEngineError avec "nom de champ incorrect CODE"


    Or d'après le code, CODE n'est pas le nom d'un champ mais la variable affectée par la valeur du champ "Code_Piece".

    Sauriez vous quoi faire à ma place???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    WITH DataModule1.QModifPiece DO
    BEGIN
    SQL.Clear;
    SQL.Add('UPDATE Arbo_Test SET CODE=:Code_Piece,');
    SQL.Add('                     NOMBRE=:Nb_Piece,TD=:MTBF,PRIX=:Prix');
    SQL.Add('WHERE CODE=:Code_Piece and NOMBRE=:Nb_Piece and TD=:MTBF and PRIX=:Prix');
    SQL.Add('AND '+ concatener + ' = ' + QuotedStr(SelectedModule)+'');
    ParamByName('Code_Piece').AsString := CodePiece_Edit.Text;
    ParamByName('Nb_Piece').AsInteger := StrToInt(NbPiece_Edit.Text);
    ParamByName('MTBF').AsFloat := StrToFloat(MTBF_Edit.Text);
    ParamByName('Prix').AsCurrency := StrToCurr(Prix_Edit.Text);
    ExecSQL;
    END;

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Fait voir la structure de ta table Arbo_Test

    A mon avis tu as inversé l'utilisation Champ/paramètre dans la requete.
    De pls au vu de la requete , elle sert à rien, car tu recherches à remplacer des valeurs d'un source qui a ces mêmes valeurs
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Par défaut
    Oui, je n'ai pas bien compris la requete UPDATE

    (Je précise, je ne me suis mis qu'à SQL il y a 1 mois car mon stage m'oblige à faire un programme informatique (et je ne fais de formation informatique dans mes études....alors dès fois je peux paraître déroutant dsl... )

    Je te donne ma table:

    ID_Engin_FK3--------Char(15)
    Module_N1-----------Char(60)
    Module_N2-----------Char(60)
    Module_N3-----------Char(60)
    Module_N4-----------Char(60)
    Module_N5-----------Char(60)
    Module_N6-----------Char(60)
    Code_Piece----------Char(25)
    Nb_Piece------------ShotInt
    Nom_Pas_FK1--------Char(15)
    Operation_M---------Char(25)
    Prix-----------------Currency
    MTBF---------------Float
    Duree_Operation----Float
    Nb_MOE------------ShortInt
    Cout_Conso--------Currency

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Ok, c'est bien ce que je pensais, t'as inversé les valeurs

    Ci-dessous un exemple par rapport à ton code en corrigeant les erreurs
    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
     
    WITH DataModule1.QModifPiece DO
    BEGIN
      SQL.Clear;
      SQL.Add('UPDATE Arbo_Test SET Code_Piece=:PCODENew,');
      SQL.Add('                     Nb_Piece=:PNOMBRENew,MTBF=:PTDNew,Prix=:PPRIXNew');
      SQL.Add('WHERE Code_Piece=:PCODEOld and Nb_Piece=:PNOMBREOld and MTBF=:PTDOld and Prix=:PPRIXOld');
      SQL.Add('AND '+ concatener + ' = ' + QuotedStr(SelectedModule)+'');
      ParamCheck := True;
    // Pour les nouvelles valeurs
      ParamByName('PCODENew').AsString := CodePiece_Edit.Text;
      ParamByName('PNOMBRENew').AsInteger := StrToInt(NbPiece_Edit.Text);
      ParamByName('PTDNew').AsFloat := StrToFloat(MTBF_Edit.Text);
      ParamByName('PPRIXNew').AsCurrency := StrToCurr(Prix_Edit.Text);
    // Pour les anciennes valeurs à rechercher
      ParamByName('PCODEOld ').AsString := CodePiece_Edit.Text;
      ParamByName('PNOMBREOld ').AsInteger := StrToInt(NbPiece_Edit.Text);
      ParamByName('PTDOld ').AsFloat := StrToFloat(MTBF_Edit.Text);
      ParamByName('PPRIXOld').AsCurrency := StrToCurr(Prix_Edit.Text);
      ExecSQL;
    END;
    Un Update permet de mettre à jour des enregistrements selon des critères de recherches.
    Faudrait que tu nous dises précisemetn ce que tu veux mettre à jour ca aiderai pour expliquer la requete à faire.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Par défaut
    Tout a fait excuse moi je viens de relire mon post!!!

    alors en gras ceux à modifier ...

    ID_Engin_FK3--------Char(15)
    Module_N1-----------Char(60)
    Module_N2-----------Char(60)
    Module_N3-----------Char(60)
    Module_N4-----------Char(60)
    Module_N5-----------Char(60)
    Module_N6-----------Char(60)
    Code_Piece----------Char(25)
    Nb_Piece------------ShotInt

    Nom_Pas_FK1--------Char(15)
    Operation_M---------Char(25)
    Prix-----------------Currency
    MTBF---------------Float
    Duree_Operation----Float
    Nb_MOE------------ShortInt
    Cout_Conso--------Currency



    Par contre, je me demandais:
    Peut on vérifier d'abord les valeurs qui ont "réellement" ét modifiés, on gagnerait en temps de réponse, car dans notre cas il va tout modifier sans vérifier si c'est différent ou pas non???

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Citation Envoyé par forzaxelah
    Tout a fait excuse moi je viens de relire mon post!!!

    alors en gras ceux à modifier ...

    ID_Engin_FK3--------Char(15)
    Module_N1-----------Char(60)
    Module_N2-----------Char(60)
    Module_N3-----------Char(60)
    Module_N4-----------Char(60)
    Module_N5-----------Char(60)
    Module_N6-----------Char(60)
    Code_Piece----------Char(25)
    Nb_Piece------------ShotInt

    Nom_Pas_FK1--------Char(15)
    Operation_M---------Char(25)
    Prix-----------------Currency
    MTBF---------------Float
    Duree_Operation----Float
    Nb_MOE------------ShortInt
    Cout_Conso--------Currency

    Comment tu sais que c'est tels ou tels articles à mettre à jour ?


    Par contre, je me demandais:
    Peut on vérifier d'abord les valeurs qui ont "réellement" ét modifiés, on gagnerait en temps de réponse, car dans notre cas il va tout modifier sans vérifier si c'est différent ou pas non???
    Pas vraiment, tu fais une requete pour vérifier si tu dois faire une modif pour après faire un update :
    - au mieux tu feras un nombre de select = au nombre d'update(s'il n'y a aucune modif à faire)
    - au pire tu auras 2 fois plus d'actions à faire qu'avec un simple update. Select pour vérifier + Update (dans le cas ou faut tous les modif)

    La clause Where de la requete est la pour faire la selection donc pas besoin de rajouter une couche
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

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

Discussions similaires

  1. Comment déclarer ces variables ?
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 23/10/2007, 14h48
  2. [SQL] Problème Update sql et variable php
    Par MacSIM dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/04/2007, 20h05
  3. UPDATE avec plusieurs variables
    Par melmouj dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/03/2007, 14h51
  4. [Tableaux] comment recuperer ces variables?
    Par jeanfrancois dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 16h35
  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