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

 Delphi Discussion :

difference de type dans une expression


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut difference de type dans une expression
    salut tous j'ai encore le même type de problème que je ne comprends toujours pas. j'ai une table avec un champ monétaire une valeur 28,00€ je voudrais modifier la Valeur par 30,50€ avec une requette Update ,si je place un Edit sur ma form et ma requette update pas de probleme tous fonctionne je remplace juste le '.' par ',' .Maintenant si je remplace mon Edit par un DBLookupComboBox alimenté par une autre table et une valeur type 28,00€
    quand je lance ma requette j'ai une erreur( différence de type dans une expresion) ??
    et la pige pas pourquoi .
    Merci de votre aide

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    On peut voir ta requête Update qui ne fonctionne pas ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut requête
    Citation Envoyé par philnext Voir le message
    On peut voir ta requête Update qui ne fonctionne pas ?
    oui bien sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DataModule1.Query1.Close;
    DataModule1.Query1.SQL.Clear;
    DataModule1.Query1.SQL.Add('Update Amicalistes.DB set Paiement = '+ QuotedStr(NouvelleCotise.Text)
    +',ModePAmi = '+ QuotedStr(ComboBox1.Text)
    +' where IdAmicaliste ='+ QuotedStr(Id.caption)+'');
    DataModule1.Query1.ExecSQL;

  4. #4
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Pour les dev. BDD je te conseille de systématiquement écrire un fichier de log, sur exception de l'execSQL, avec la requête que tu stocke dans une string.

    Du coup quand ça plante tu peux voir à quoi ressemble la requête en faute.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut
    Citation Envoyé par philnext Voir le message
    Pour les dev. BDD je te conseille de systématiquement écrire un fichier de log, sur exception de l'execSQL, avec la requête que tu stocke dans une string.

    Du coup quand ça plante tu peux voir à quoi ressemble la requête en faute.

    excuse moi mais la je ne sais vraiment pas comment faire

  6. #6
    Membre habitué
    Inscrit en
    Avril 2005
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 123
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par tarmo57 Voir le message
    oui bien sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DataModule1.Query1.Close;
    DataModule1.Query1.SQL.Clear;
    DataModule1.Query1.SQL.Add('Update Amicalistes.DB set Paiement = '+ QuotedStr(NouvelleCotise.Text)
    +',ModePAmi = '+ QuotedStr(ComboBox1.Text)
    +' where IdAmicaliste ='+ QuotedStr(Id.caption)+'');
    DataModule1.Query1.ExecSQL;
    Paiement est de quel type dans la base des données? Si c'est de type Float ou real, je ne pense pas que ce soit nécessaire de faire un quotedstr. Aussi, est ce que NouvelleCotise contient le caractère "€"?

  7. #7
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Citation Envoyé par tarmo57 Voir le message
    excuse moi mais la je ne sais vraiment pas comment faire
    et bien un truc dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    try
       DataModule1.Query1.ExecSQL;
    except
       DataModule1.Query1.SQL.saveToFile('trace.txt');
    end;

  8. #8
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    @tarmo57

    PLZZZZZZZZZZ utilise les parameters...

    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
    With DataModule1.Query1 do
    Begin
      Close;
      SQL.Clear;
      SQL.Add('UpDate AMicalists Update Amicalistes.DB ')
      SQL.Add('Set Paiement = :xPaiement, ModePAmi = :xModePAmi ');
      SQL.Add('Where idAmicaliste = :xIdAmicaliste ');
      Parameters.Parambyname('xPaiement').Value := NouvelleCotise.Text;
      Parameters.Parambyname('xModePAmi').Value := ComboBox1.Text;
      Parameters.Parambyname('xIdAmicaliste').Value := Id.caption;
      Try
        Try
          ExecSQL;
         Except
           // Ta gestion d'erreur
         end;
      Finally
        Close;
      end;
    end;
    Apres il faut voir le type de tes champs, par exemple si Paiement est Currency remplace :
    Parameters.Parambyname('xPaiement').Value := NouvelleCotise.Text;

    Par

    Parameters.Parambyname('xPaiement').Value := StrToFloat(NouvelleCotise.Text);

    Parameters.Parambyname('xPaiement').Value := StrToCurr();
    Voir StrToCurr pour le format

    Bye

Discussions similaires

  1. [AC-2007] Incohérence de type dans une expression
    Par stygmats dans le forum IHM
    Réponses: 6
    Dernier message: 06/09/2009, 18h38
  2. Incohérence de type dans une expression
    Par souketou dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/04/2009, 16h27
  3. Réponses: 3
    Dernier message: 23/05/2006, 15h09
  4. Différence de type dans une expression (query)
    Par sondo dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/11/2005, 01h09
  5. "Différence de type dans une expression" Tquery
    Par Hakim dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/04/2004, 00h22

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