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 :

Type inadéquat BCD - Delphi10.3


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Fxg
    Fxg est déconnecté
    Membre émérite
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 513
    Par défaut Type inadéquat BCD - Delphi10.3
    Bonsoir,

    Je viens de remplacer ma version 10.2 Community par la 10.3 et en recompilant mon application j'obtiens ce message d'erreur au démarrage.

    Nom : Capture.JPG
Affichages : 704
Taille : 14,3 Ko

    Dans le Datamodule la déclaration du champ est : FDQLivresPRIX: TBCDField;

    J'utilise Firebird comme Base de Données.

    J'avoue que je sèche. Avec la version 10.2 aucun problème.

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 656
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Je vois deux solutions sûres mais pas forcément la cause
    1- si les champs sont déclarés, supprimé la déclaration puis la remettre
    2- utiliser les maprules pour forcer le format

    à tester également les options maxBcdPrecision et maxBcdScale (à priori la dernière) selon la déclaration de la colonne Firebird ?

    enfin il y a peut être des indices dans les notes de version (que je n'ai pas encore lues)

  3. #3
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 542
    Billets dans le blog
    10
    Par défaut
    En firedac tu peux utiliser le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var
      aRule: TFDMapRule;
    begin
    ....
      aRule := FormatOptions.MapRules.Add;
      aRule.SourceDataType := dtBCD;
      aRule.TargetDataType := dtDouble ;
      aRule := FormatOptions.MapRules.Add;

  4. #4
    Fxg
    Fxg est déconnecté
    Membre émérite
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 513
    Par défaut
    Merci à tous les deux,

    J'ai commencé par la solution la plus simple : supprimer la déclaration et la remettre et

    J'avais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FDQLivresPRIX: TBCDField;
    qui a été remplacé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FDQLivresPRIX: TFMTBCDField;
    Quand à savoir le pourquoi ?

  5. #5
    Nouveau candidat au Club
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Mars 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Liban

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 2
    Par défaut Type inadéquat BCD - Delphi10.3
    J'obtiens le même problème en utilisant une base de données Firebird 3.0.4.
    Numeric(18,2) -> FMTBCD au lieu de BCD
    Numeric(18,3) -> FMTBCD au lieu de BCD
    Numeric(18,4) -> BCD (correct).

    Dans les paramètres de configuration de la connexion FDConnection, il existe les valeurs suivantes:
    Maximum scale: 4
    Maximum precision: 18

    Si je change le scale de 4 à 3, j'obtiens ceci:
    Numeric(18,2) -> FMTBCD au lieu de BCD
    Numeric(18,3) -> BCD (correct)
    Numeric(18,4) -> FMTBCD au lieu de BCD

    Il me semble que Embarcadero a un bug, au lieu de comparer pour vérifier que le scale d'un champ dans la base est supposé être "inférieur ou égal à" , la comparaison se fait seulement avec le "égal".

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 656
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    bienvenue et bien vu
    Il faut dire qu'il faut "tomber" sur le cas pour pouvoir faire ce genre de trouvaille
    Il faudrait peut-être notifier cela à Embarcadero dans le Quality Central
    a priori cela a été fixé pour SQLite avant la sortie de RIO (RSP-22454) mais n'a pas dû être établi pour Firebird

    Je vous laisse la "joie" de le signaler à Dmitry Arefiev

  7. #7
    Nouveau candidat au Club
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Mars 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Liban

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 2
    Par défaut
    Bonjour,

    C'est ce que j'ai fait. Embarcadero m'a immédiatement répondu et m'a donné la solution en remplissant la Maximum précision à 20.
    Ca fonctionne à présent le temps que Embarcadero corrige l'erreur.

    Meilleures salutations

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/10/2007, 09h18
  2. programmation corba: le type "sequence"
    Par Kali dans le forum CORBA
    Réponses: 4
    Dernier message: 28/08/2005, 16h09
  3. Réponses: 2
    Dernier message: 05/06/2002, 12h29
  4. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36

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