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 :

Firedac + MySQL une table ne se charge pas


Sujet :

Bases de données Delphi

  1. #1
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2007
    Messages
    3 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : novembre 2007
    Messages : 3 137
    Points : 2 815
    Points
    2 815
    Par défaut Firedac + MySQL une table ne se charge pas
    Bonjour

    Il m'arrive un truc bizarre.

    J'ai une table avec une seule ligne dans ma base MySQL.
    Je pose un composant TFDTable + un TDBgrid sur ma form, je lie le tout au composant TFDConnection et j'ouvre la table.
    Résultat: une ligne vide.

    Quand je regarde dans ma base, il y a pourtant bien une ligne de valeurs.

    Pour vérifier, j'ouvre l'explorateur de données de Delphi, j'ouvre la connexion correspondante et je demande à voir le contenu de la table.
    Résultat: Les valeurs sont affichées.

    Pour confirmer, je fais un glisser-déposer sur la form de la connexion qui me permet de voir les données afin de créer le TFDConnection identique et je remplace la connexion précédente dans le composant TTable par ce TFDConnection qui devrait afficher les données.
    J'ouvre le composant. Résultat: une ligne vide

    Enfin, pour aller plus loin, je remplace le TFDTable par un TFDQuery + un select * from latable
    Résultat: les résultats sont bien dans la grille.

    Là, je sèche.

    Qu'est-ce qui peut bien empêcher le composant TTable de voir cette ligne dans cette table précise ?


    J'ai oublié de dire que je suis sur un Delphi XE7 dans une VM et que les données sont sur mon poste principal.
    Pour toutes les autres tables, tout va bien.

    Par contre, je viens de tester sur mon poste principal avec Sydney et donc la base sur le même poste, le composant TFDTable affiche bien les données de la ligne.

    Peut-on en déduire un bug sur le composant dans XE7 ou un problème lié aux données "distantes" ?
    Si oui, pourquoi uniquement sur cette table ?


    Pour aller plus loin j'ai vérifié le SQL sous-jacent du TFDTable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm9.FormShow(Sender: TObject);
    begin
      showMessage(TFDCustomQuery(FDTable1).SQL.Text);
    end;
    [Window Title]
    Project2

    [Content]
    SELECT A.*
    FROM param A


    [OK]
    La même requête que lors de mon test avec TFDQuery

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2007
    Messages
    3 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : novembre 2007
    Messages : 3 137
    Points : 2 815
    Points
    2 815
    Par défaut Solution
    à force de tâtonner sans vraiment savoir, j'ai ajouté un index sur une colonne au hasard et là miracle, ça fonctionne.

    Donc, pour le TFDTable puisse obtenir les données d'une table MySQL, il faut que cette possède au moins un index.

    Étrange non ???

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    8 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 266
    Points : 26 763
    Points
    26 763
    Par défaut
    peut-être...je n'ai toujours pas creusé le fonctionnement interne de la DBGrid, mais pour pouvoir naviguer dans un ensemble de données, il faut tout de même pouvoir se baser sur un index

    par ailleurs, c'est une bonne pratique d'avoir toujours un index unique - généralement un id auto incrémenté - sur toutes les tables
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2007
    Messages
    3 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : novembre 2007
    Messages : 3 137
    Points : 2 815
    Points
    2 815
    Par défaut
    Je suis d'accord avec toi pour l'index unique mais là ce n'est même pas le cas.
    Je l'ai défini sans aucune contrainte.

    Et malheureusement, je ne peux pas ajouter des index partout parce qu'il s'agit d'une reprise d'un vieux truc BDE + DBase très mal codé avec des centaines de composants TTable et un code impossible à modifier en l'état. Je dois adapter tout ce qui tourne autour du programme en évitant au maximum de toucher au code.
    Alors je sais, c'est dégueu mais tout refaire bien demanderait un temps infini que le client ne paiera jamais :-)

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

Discussions similaires

  1. Une table.. qui ne ressemble pas a une table ?
    Par zevince dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 23/04/2007, 12h14
  2. Réponses: 2
    Dernier message: 06/02/2007, 10h17
  3. Réponses: 8
    Dernier message: 09/05/2006, 12h08
  4. lien pour une table qui ne doit pas etre public
    Par raslain dans le forum Oracle
    Réponses: 1
    Dernier message: 12/12/2005, 14h40
  5. savoir si une table est masquée ou pas
    Par scully2501 dans le forum Access
    Réponses: 13
    Dernier message: 22/09/2005, 13h19

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