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 :

Colonnes manquantes dans une DBgrid


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Par défaut Colonnes manquantes dans une DBgrid
    Bonjour à vous.

    Je travaille sous Delphi 5 et j'ai lié mon programme à ma base mysql par une connexion odbc.

    Je souhaite afficher une table d'une base de donnée d'inventaire mais lorsque que je l'affiche dans une dbgrid, toutes les colonnes étant du type varchar(255) ne s'affiche pas.
    J'ai pu lire que cela posait problème et affichait Memo si c'est un varchar supérieur à 255. Mais ce n'est pas tout à fait mon cas.

    Bref il me manque un bout, et forcément le plus important.

    J'ai essayé d'afficher par le biais d'un tdatabase, ttable et tdatasource et également avec un tquery et datasource avec comme requète select * from table. Le problème reste présent.

    Faut il plutôt passer par un dataset et afficher dans une stringgrid, y a t'il un code à rajouter ou juste une option à cocher ?

    Merci

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    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 093
    Par défaut
    Citation Envoyé par Maxime-B Voir le message
    Bref il me manque un bout, et forcément le plus important.
    Cela tronque la valeur ? ou n'affiche pas du tout la colonne ?
    Vérifie si le type du champ est ftString ou ftMemo, ce n'est pas forcément le type de la DB qui est utilisé mais ce que fourni le driver

    Tu n'as pas joué avec un OnGetText ?

    J'ai beaucoup utilisé MySQL mais via Devart MyDAC, je n'ai jamais constaté de problème sur les colonnes en 255 !
    Heureusement, je devais surement en avoir quelques unes, en général, je limite à 40 ou 80 pour les nom, prénom ...
    Essaye de voir avec 254, toujours la subtile différence entre < et <= !

    J'ai testé ADO par curiosité mais j'avoue n'avoir jamais vérifier cela !
    le BDE utilisant le Driver ODBC doit souffrir des mêmes limites qu'ADO, comme tu l'as fait remarqué dans ton sujet.

    EDIT
    ADO + Sybase Anywhere 10, cela contient bien mes 255 caractères dans le DataSet, le DBGrid lui étant limité, même en plein écran, en 1280x1024, je ne vois que 205 caractères, on a l'impression que la colonne s'arrête là, il suffit de cliquer dedans pour passer en mode Edition pour voir la fin de la chaine
    C'est peut-être cela qui te choque ?
    Utilise un DBLabel en parallèle pour afficher les libellés longs
    ou un Hint\StatusBar
    ou encore un DrawText manuel pour avoir un DBGrid multiligne (ce que je fais pour des textes long comme ça)
    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

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Par défaut
    Comme je m’appuie sur une base de donnée d'un logiciel d'inventaire, je ne peux pas vraiment modifier les paramètres de la base, j'ai testé sur une copie avec un varchar à 254 et le problème reste identique, aucune colonne de ce type ne s'affiche.

    Le texte n'est pas trongué, rien ne s'affiche, même l'entête. Même s'il s'agit d'un varchar(255), il ne contient que des mots de 10 lettres au plus.

    Je n'ai pas touché a OnGetText.

    Le colonnes sont toutes visibles dans le champ FieldDefs du TTable.

    Que veux tu dire par :
    Vérifie si le type du champ est ftString ou ftMemo
    Quel champ ?

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    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 093
    Par défaut
    Déjà tu utilises un TTable,
    As-tu configuré via l'IDE les colonnes ?
    As-tu pensé a modifier les valeurs par défaut de TStringField ? la propriété size ou length ?
    Ou est-ce que tu laisse le TTable créer lui même les colonnes ? (et dans ce cas, tu as vraiment un problème)

    Personnellement, je n'utilise que du Query, pas d'IDE, pas de Champ persistants, je laisse tout cela se générer à la volée !

    Sinon pour ftString ou ftMemo, comment ça "quel champ", regarde le DataType du TField associé à un VarChar(255), qu'est-ce que tu ne comprends pas la dedans ?
    Bien-sur, si tu as explicitement défini des champ persistants, tu as plein de TStringField associé au TTable, c'est évidemment des ftString et c'est pour cela que tu ne comprends pas ma question, regarde la propriété DefaultFields, cela devrait t'expliquer la différence
    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 habitué
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Par défaut
    Pour le TTable ce n'était juste que pour voir si j'avais le même problème qu'avec le Tquery.
    Mon programme utilisera uniquement un tquery et un datasource.

    Mais le problème est le même qu'en visualisant dans un TTable.

    En fait je crois qu'il y a confusion entre nos paroles.
    Quand je parle de varchar(255), je parle du type dans ma base de donnée mysql, il n'y a rien à voir avec Tfield ou Tstringfield associé à mon ttable car cela fait pareil avec le tquery.

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    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 093
    Par défaut
    J'avais bien compris que tu parlais de VARCHAR(255) dans les tables MySQL !
    Il n'y aucune confusion !

    Je parlais des champs persistants créés manuellement pour un TTable, il était possible que tu aie oublié de modifier des propriétés, il faut d'aborder explorer les pistes triviales pour ensuite pousser plus loin sur des problèmes plus complexe et donc difficile à résoudre !

    Mais même le TQuery, il me semble que l'on peut lui créer des champs persistants, qu'as-tu prévu ?
    Des Champs persistants créés dans l'IDE ou laisser les champs se générer automatiquement en fonction de la clause SELECT ?

    Ensuite, si le type TStringField et ftString dans le DataType est important, c'est ce que génère le TQuery, as-tu vérifier le DataType, DataSize ainsi que Size des TField lié à des VARCHAR(255) comme je te l'ai demandé ?
    Que vaut Size ? 10 ? 255 ?

    Pense que tu utilises Delphi 5 avec BDE via le Driver ODBC MySQL 3.51 avec MySQL qui n'existait pas à l'époque de la conception de la VCL !
    Le BDE étant déclaré comme obsolète à partir de cette version !
    Mais sache que le BDE, le TTable et le TQuery gère parfaitement du CHAR(255) car j'ai souvent eu cela dans des Tables PARADOX ou DBASE !


    Il serait intéressant de passer à une version plus récente de Delphi dont la 16 (XE2) va sortir prochainement, tu n'as que 11 ans de retard !
    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

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

Discussions similaires

  1. [XL-2010] Relever nombres manquants dans une colonne
    Par Ysae68 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/07/2014, 13h31
  2. Réponses: 2
    Dernier message: 18/05/2013, 09h14
  3. Colonne de largeur non finie dans une DBGrid
    Par cbegood dans le forum Bases de données
    Réponses: 17
    Dernier message: 04/11/2008, 10h07
  4. Réponses: 28
    Dernier message: 30/11/2006, 17h47
  5. Données dans une DBgrid
    Par camino dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/02/2004, 03h40

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