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 :

XE7 Utilisation des DataModules


Sujet :

Delphi

  1. #1
    Invité
    Invité(e)
    Par défaut XE7 Utilisation des DataModules
    Bonjour,

    j'ai voulu modifier la configuration de ma fiche Datamodule appelée uSQLmodule de la manière suivante :

    Au départ y était placée uniquement la chaîne SQLitexxx, la chaîne de connexion mySQL étant placée sur la Form fELV. Cela fonctionnait.

    J'ai voulu intégrer la chaîne mySQL initialement posée sur la Form fELV dans le DataModule. Je l'ai déplacée d'une fiche à l'autre par copie/coller puis supprimer de la Form fELV.
    J'ai placé dans les uses de fELV : uSQLmodule.

    Le codede fELV a été modifié ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    { mySQL identification : Connexion}
    //if not mySQLConnect() then begin <- Initialement
      if not SQLmodule.mySQLConnect() then begin
        [...]
      end;
    Le code appelé dans le DataModule est
    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
    21
    22
    23
    24
    25
    26
    function TSQLmodule.mySQLConnect() : Boolean;
    begin
      Result := True;
       with mySQLConn do begin
        if Connected then Connected := false;
        with Params do begin
          Values['Server']    := gServer;
          Values['Database']  := gDatabase;
          Values['user_name'] := gUserName;
          Values['password']  := gPassword;
        end;
        try
          LoginPrompt := False;
          Connected := True;
        except
         {$IFDEF DEBUG}
          on E: EFDDBEngineException do  begin
            Result := False;
            Showmessage(E.Errors[0].Message);
          end;
         {$ELSE}
          Result := False;
         {$ENDIF}
        end;
      end;
    end;
    Et j'obtiens le magnifique plantage visible sur l'image. Alors je me pose plusieurs questions :
    • Peut-on implanter plusieurs connecteurs dans un DataModule ?
    • Un seul TFDGUIxWaitCursor suffit-il ou en faut-il 2 ? (A priori cela ne change rien)
    • Faut-il implanter ce TFDGUIxWaitCursor uniquement dans le DataModule ?
    • Faut-il implanter les FireDac.xxx dans la Form fELV ?
      FireDAC.Stan.Intf, FireDAC.Stan.Option,
      FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
      FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.SQLite,
      FireDAC.Phys.SQLiteDef, FireDAC.Stan.ExprFuncs, FireDAC.VCLUI.Wait,
      FireDAC.Comp.UI, FireDAC.Comp.Client, Data.DB, FireDAC.Stan.Param,
      FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt, FireDAC.Comp.DataSet,
      VCL.Dialogs, FireDAC.Phys.MySQL, FireDAC.Phys.MySQLDef;

    J'ai pensé que le problème était le TFDGUIxWaitCursor car au départ avec Firedac, j'oubliais ce composant et j'avais une erreur qui court circuitait mes exceptions. Et c'est le cas ici.
    Merci.
    Dernière modification par Invité ; 11/11/2014 à 11h31.

  2. #2
    Invité
    Invité(e)
    Par défaut
    J'ai détruit le DataModule uSQLmodule et j'en ai reconstruit un nouveau. Et cela fonctionne normalement. Sans modification

    Alors je peux répondre aux questions :
    • 2 connecteurs sur un même DataModule c'est possible
    • Un seul TFDGUIxWaitCursor suffit dans le DataModule et n'est pas nécessaire dans les Forms qui font appel au DataMoodule


    Par contre la gestion des uses est plus délicate. J'utilise dans la Form fELV une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function TFLogin.MoveBatch( aSrcREQ, aDstREQ : string;
                                aSrcQuery, aDstQuery : TFDQuery) : boolean;
    Comme il n'y a plus de TFDQuery posé sur la Form, je suis obligé dans les uses d'ajouter un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     {Deb Query}
      FireDAC.Stan.Intf, FireDAC.Stan.Option,
      FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf,
      FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, Data.DB,
      FireDAC.Comp.DataSet, FireDAC.Comp.Client
     {End Query}
    Il suffit de poser un TFDQuery, de faire un copier sur le code ajouté, enlever le TFDQuery -qui supprime le code automatiquement- et de coller le code copié.
    Pas de chance : dans ce cas précis, j'aimerais que le code reste... et dans de nombreux cas, j'aimerais faire automatiquement disparaître le code inutile. Il semble qu'il existe des add-on pour cette dernière fonction... sinon on supprime en cas de doute et on guette l'erreur à la compilation.
    Dernière modification par Invité ; 11/11/2014 à 12h15.

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 210
    Points : 41 473
    Points
    41 473
    Billets dans le blog
    63
    Par défaut
    Bonjour Gilles
    Un seul TFDGUIxWaitCursor suffit dans le DataModule et n'est pas nécessaire dans les Forms qui font appel
    en fait , il est possible de ne pas poser le composant , mais cela oblige a mettre l'unité adhoc dans la liste des uses .
    Une seule remarque à propos de ce composant, tout de suite après l'avoir posé , bien contrôler la propriété Provider

    Bref la même histoire que pour tes FDQuery(s)

  4. #4
    Membre averti

    Homme Profil pro
    ingénieur, retraité
    Inscrit en
    Février 2007
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 230
    Points : 332
    Points
    332
    Par défaut
    Bonjour,

    Le "copier/coller" n'est il pas la cause de l'erreur dans ce cas ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    il y a en effet une forte suspicion que cela soit la cause d'une grande part de mes problèmes pas simplement celui-ci mais d'autres évoqués dans d'autres discussions. Depuis que j'ai supprimé cette manière de pratiquer mes problèmes ont quasiment disparus.

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

Discussions similaires

  1. XE7-Utilisation des Datamodules
    Par Invité dans le forum Delphi
    Réponses: 3
    Dernier message: 14/11/2014, 15h34
  2. Puis-je vraiment utiliser XE7 avec des cibles Android ?
    Par Eric Beaumard dans le forum Composants FMX
    Réponses: 13
    Dernier message: 24/10/2014, 15h02
  3. utilisation des sockets sous windows
    Par Tupac dans le forum Réseau
    Réponses: 2
    Dernier message: 21/12/2002, 18h24
  4. [Crystal Report] Utilisation des vues de sql serveur
    Par Olivierakadev dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 15/11/2002, 17h44
  5. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01

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