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 :

DataModule : Connexion à une base selon la TForm


Sujet :

Delphi

  1. #1
    Invité
    Invité(e)
    Par défaut DataModule : Connexion à une base selon la TForm
    Bonjour,

    dans un DataModule, je dispose d'un connecteur qui est associé à une adresse de serveur, un utilisateur et un password fixes.

    Mais la base change selon les TForm. Par exemple dans Form1 et Form2, j'utilise BaseA alors que Form3 utilise BaseB.

    La procédure de connexion est dans le DataModule. Je me demandais si selon le nom de la Tform, je pouvais dans cette procédure définir la Base concernée.... ce qui sous entendrait que la méthode function TDataModule.eConnect() : Boolean; serait capable de déterminer dans quelle Form elle est appelée...

    Donc schématiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function TDataModule.eConnect() : Boolean;
    var
      aBase : String;
    begin
      aBase := gBaseDefault;
      case TForm.name of 
        'Form1', 'Form2' : aBase := 'BaseA';
        'Form3' : aBase := 'BaseB';
      [...]
      end;
    end;
    OK pour l'erreur sur le case of (sur des chaines)... Le problème c'est le TForm qui correspondrait à la Form appelant la fonction du DataModule.

    Est-ce jouable ? Bon évidemment, on peut passer le nom de la Form appelante comme paramètre de la méthode... Mais sinon, y a-t-il un moyen en Delphi comme exprimé ci-dessus ?
    Merci.
    Dernière modification par Invité ; 15/12/2014 à 12h54.

  2. #2
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if Assigned(TForm3) then
     // tu modifie le param sur sqlconnection contenant ta bdd

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    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
    Procedure Connet (FrmAppelant : String) ;
    const 
        CSTR_DEFAULT_ALIAS = 'BaseA';
    Begin
       database.Connected := FALSE;
        ...
       // parametre ALIAS
      if (frmAppelenant = 'Form3' ) then
         database.AliasName := 'BaseB'
      else
        database.AliasName := CSTR_DEFAULT_ALIAS;
      try
        database.Connected := TRUE;
      // nom d'alias à utiliser
        database.Session.NetFileDir := ExtractFilePath(Application.ExeName); 
      except
        ShowMessage('La base identifiée par '''+database.AliasName+''' est introuvable.');
        Halt(1);
      end;
    end;
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function TDataModule.eConnect(Sender: TForm) : Boolean;
    var
      aBase : String;
    begin
      aBase := gBaseDefault;
      if Sender is TFormx then aBase := 'BaseX';
      // autant qu'il le faut
      //.. 
    end;
    ou, pourquoi pas (s'il n'est pas contre nature que le TForm appelant puisse connaître le nom de la base qui lui est associée, en constante dans l'unité par exemple, ou constante de classe) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function TDataModule.eConnect(ToBase: string) : Boolean;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

Discussions similaires

  1. [RMAN] Connexion à une base sur un autre serveur
    Par alxkid dans le forum Oracle
    Réponses: 2
    Dernier message: 23/08/2004, 11h47
  2. Problème de connexion à une base access
    Par caco19 dans le forum ASP
    Réponses: 4
    Dernier message: 13/08/2004, 16h19
  3. [JSP] Connexion à une base mysql
    Par Jovial dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 20/04/2004, 14h04
  4. Réponses: 3
    Dernier message: 29/03/2004, 18h02
  5. Connexion à une base SQL_Serve via Internet
    Par Yoann_D dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 22/07/2003, 15h39

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