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 :

DB Express - Base de données MySQL - champ TinyInt(1) typé comme champ ShortInt au lieu de boolean


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Portugal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut DB Express - Base de données MySQL - champ TinyInt(1) typé comme champ ShortInt au lieu de boolean
    Bonjour,

    je viens d'acquérir delphi 10.2.3 et je suis en train de convertir mes applications de Delphi 2009 vers cette nouvelle version.
    J' utilise les composants DB Express pour accéder aux base de données MySQL.

    Je rencontre un problème important, les champs mySQL de type tinyint(1) mappé en TBoolenfield sous Delphi 2009 sont maintenant mappé comme TShortIntField, ce qui pose beaucoup de problèmes.

    J' ai trouvé une solution avec les pilotes DevArt pour DBExpress / MySQL mais cela ne me satisfait pas dans le sens où ces derniers sont payants et peuvent apporter des problèmes que je n' avais pas.

    J' aimerai donc savoir commet puis je mapper les champs de type TinyInt en TBooleanField.

    Merci pour votre aide.

    Mauricio

  2. #2
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Bonjour Mauricio

    As-tu tenté de forcer le type des champs en les décrivant dans tes TSQLTable ou TSQLQuery ?
    Sinon, au pire, tu peux toujours tenter un champ calculé, mais c'est pas génial.

    En passant à FireDAC au lieu de rester sur dbExpress tu peux aussi forcer le nappage de champs directement au niveau des options de ta connexion.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Portugal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut
    Citation Envoyé par pprem Voir le message
    Bonjour Mauricio

    As-tu tenté de forcer le type des champs en les décrivant dans tes TSQLTable ou TSQLQuery ?
    Sinon, au pire, tu peux toujours tenter un champ calculé, mais c'est pas génial.

    En passant à FireDAC au lieu de rester sur dbExpress tu peux aussi forcer le nappage de champs directement au niveau des options de ta connexion.
    Salut,

    merci pour ta réponse.
    Malheureusement, je ne peux pas forcer car le mapping est fait en interne lors de l'ouverture et si le type de champ n' est pas le même, ça buggue ...
    Pour les champs calculés, c' est pas top.

    Je suis parti pour l' instant sur le driver DB Express MySQL de DevArt.com qui a l' avantage d'avoir l' option de mapping des champs de type TinyInt(1) mais aussi d' être compatible mySQL 8.

    Je suis quand même preneur s' il existe une solution simple.

    a+

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Dommage que l'écart de version soit si important, cela mériterait de faire un Cas sur QualityCentral si cela avait sur deux versions proches, maintenant c'est trop tard
    C'est pénible de changer de version de Delphi et de voir qu'un comportement a changé
    Par contre, tu dois pas être le seul à avoir eu ce problème

    J'ai travaillé avec MySQL et MyDAC, idem, le TinyInt(1) en Booleen c'est fort pratique, cela me manque en ORACLE ou le code est plus lourd.
    D'ailleurs MyDAC est nettement plus confortable que DB Express que j'ai aussi expérimenté mais sur Sybase
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Portugal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Dommage que l'écart de version soit si important, cela mériterait de faire un Cas sur QualityCentral si cela avait sur deux versions proches, maintenant c'est trop tard
    C'est pénible de changer de version de Delphi et de voir qu'un comportement a changé
    Par contre, tu dois pas être le seul à avoir eu ce problème

    J'ai travaillé avec MySQL et MyDAC, idem, le TinyInt(1) en Booleen c'est fort pratique, cela me manque en ORACLE ou le code est plus lourd.
    D'ailleurs MyDAC est nettement plus confortable que DB Express que j'ai aussi expérimenté mais sur Sybase
    Salut,

    je vais basculer progressivement vers FireDAC.
    J' ai téléchargé le driver DBExpress pour mySQL de DevArt.Com et il suffit d'ajouter dans la propriété params la valeur suivante:
    EnableBoolean=True

    Se serait bien qu' il y ait une option dans ce sens mais je n' ai pas trouvé.

    Merci en tout cas pour ton commentaire.

    Mauricio


    J' en profite pour vous donner le lien vers mes compos gratuits:
    https://sourceforge.net/projects/tcycomponents/

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 617
    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 617
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    pourquoi ne pas modifier les composants DBExpress de votre version ?
    Lors de la sortie de Firedac c'est souvent ce que Dimitry Arefiev proposait lorsqu'on lui signalait un problème Firedac, il indiquait l'endroit et le code à remplacer.
    Les précautions sont bien sûr de sauvegarder le source initial avant. Puis, ensuite, une réinstallation du composant s'impose. Il fallait bien sûr prendre garde aux mises à jour mais 10.2.3 ne va plus évoluer donc pas de soucis d'écrasement.

    AMHA c'est l'unité Data.SQLExpr qui est à modifier, à partir des lignes 74-105 se trouve tout ce qui semble concerner le mapping, comparer cette version avec celle d'une version D2009 devrait donner les clé nécessaires

  7. #7
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Dommage que l'écart de version soit si important, cela mériterait de faire un Cas sur QualityCentral si cela avait sur deux versions proches, maintenant c'est trop tard
    C'est pénible de changer de version de Delphi et de voir qu'un comportement a changé
    Par contre, tu dois pas être le seul à avoir eu ce problème
    En fait il n'est jamais trop tard pour signaler les régressions qui posent problème. Embarcadero est quand même dans une optique de pérennité des programmes développés et pourra ainsi proposer une alternative ou corriger la partie qui devrait l'être.

    S'ils n'ont pas conscience d'un problème, ils ne risquent pas de corriger le tir.

  8. #8
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Citation Envoyé par pprem Voir le message
    En fait il n'est jamais trop tard pour signaler les régressions qui posent problème... S'ils n'ont pas conscience d'un problème, ils ne risquent pas de corriger le tir.
    Eh bien c'est effectivement une bonne chose qu'Embarcadero assure encore la non-regression des versions de l'époque de CodeGear pour ajouter des corrections dans les nouvelle versions
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/10/2008, 10h25
  2. Réponses: 0
    Dernier message: 19/08/2008, 09h49
  3. probleme construction base de donnes MySql...Help
    Par chakan dans le forum Requêtes
    Réponses: 7
    Dernier message: 21/07/2004, 11h27
  4. connection à base de donnée MYSQL
    Par zouzou_zaza dans le forum Bases de données
    Réponses: 11
    Dernier message: 04/07/2004, 12h31
  5. XML->Base de donnée Mysql
    Par lheureuxaurelie dans le forum XQUERY/SGBD
    Réponses: 4
    Dernier message: 10/03/2004, 23h47

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