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 :

[MySQLClient] Lister les noms des bases de données


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut [MySQLClient] Lister les noms des bases de données
    Bonjour,

    Utilisateur depuis peu de l'unit MySQLClient de Paul Toth, je cherche à lister les noms de mes bases de données pour les afficher par la suite dans un TComboBox.

    Quels sont les mots clés pour faire cela en langage sql (mysql) puis pour gérer les retours sous delphi (6 Ed.perso.) via l'unité MySQLClient.

    Guider moi juste pour l'instant je tenterai de faire le code dans un premier temps.
    Merci.

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    c'est tout bête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // dbList:TComboBox
    // MySQL:TMySQLClient;
     
     dbList.Clear;
     MySQL.ExecSQL('SHOW DATABASES');
     while not MySQL.Eof do begin
      dbList.Items.Add(MySQL.Fields[0].AsString);
      MySQL.Fetch;
     end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Pas convaincu
    C'est moi qui doit être compliqué...

    Le programme bug et ne se lance pas, il me dit que :
    ComboBox1.Items est une valeur inaccessible.
    ComboBox1 = nil.
    MySQL = symbole éliminé par le lieur.
    MySQL.Fields[0] = '[' attendu mais fin de fichier trouvé.
    MySQL.Fields[0].AsString = valeur inaccessible.

    Voici mon code :
    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
     
    var
      ouvrir_annee: Touvrir_annee;
      ComboBox1: TComboBox;
      MySQL:TMySQLClient;
     
    begin
     MySQL:=TMySQLClient.Create;
     MySQL.Open('127.0.0.1');
      MySQL.Login('user','password'); // je ne précise pas un nom de base pour le login
     MySQL.ExecSQL('SHOW DATABASES');
     while not MySQL.Eof do begin
    ComboBox1.Items.Add(MySQL.Fields[0].AsString);
      MySQL.Fetch;
     end;
     
    end.
    end.
    Merci de votre aide.

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    1) il faut utiliser les balises "code" autour du code

    2) ComboBox1 doit être placé à la souris sur la fiche et non déclarée dans les variables locales ! (-> voir ce qu'est un fichier DFM)

    3) si tu crées le TMySQLClient localement, il faut le libérer localement (.free). Mais le plus judicieux serait de déclarer un MySQL dans la partie private de la fiche, de créer l'instance dans le OnCreate et de la détruire dans le OnDestroy.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, MySQLClient { <-- ajouter l'unité };
     
    type
      TForm1 = class(TForm)
        ComboBox1: TComboBox; { <-- automatique quand ajouté à la souris }
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
        MySQL:TMySQLClient; { <-- ajouter manuellement }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    { initialisation de l'objet MySQLClient }
     MySQL:=TMySQLClient.Create; 
     MySQL.Open('127.0.0.1');
     MySQL.Login('user','pass');
    end;
     
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    { libération de l'objet }
     MySQL.Free;
    end;
     
    end.
    ensuite tu peux mettre le code de remplissage de la ComboBox là ou tu en as besoin...par exemple à la suite du Login...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    cela ne fonctionne toujours pas, il me dit que le combobox1 n'est pas déclaré, il est rajouté à la souris biensure, puis il apparait bien automatiquement dans le code, et si je le redéclare en var, comme j'avais fait, je me retrouve avec les erreurs du début...Je ne comprends pas vraiment pourquoi il refuse de le prendre en considération...
    j'abandonne, rien ne marche.................;;;;

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    ben parce qu'il ne faut pas le redéclarer...enfin bon, la programmation ça demande juste un peu d'effort
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    je veux bien ne pas le redéclarer dans var, mais a l'executon il me dit que l'identificateur ComboBox1 n'est pas déclaré.... alors qu'il l'a fait lui même automatiquement la déclaration dans le type, comme on a vu ensemble...c'est là où je ne vois pas mon erreur...

    Pourrais-tu m'envoyer un exemple tout simple, juste avec un combobox et un acces a mysql (en utilisant MysqlClient) ? Parceque là je ne comprend pas ce qui se passe. je fais des tests pour essayer le combobox et rien ne fonctionne, je ne peux meme pas lui affecter une chaine...

    Merci beauoup.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    ok il y a du mieux, cela fonctionne, mais juste une chose, comment créer l'instance dans le OnCreate, je n'ai réussi a lancer le code executant la requete seulement en l'intégrant dans une fonction lancer par un clic sur un bouton, puis dans evenement je suis aller sur Oncreate et là je ne peux choisir que cette fonction (celle du bouton) je ne peux pas choisir ni écrire pour lui demander d'executer la procedure TForm1.FormCreate(Sender: TObject);

    Comment faire et encore merci.
    On va réusir

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    ben là mon petit gars, va falloir apprendre à se servir de l'IDE de Delphi

    tu sélectionnes la fiche, tu sélectionnes l'événement OnCreate dans l'inpecteur d'objet...et du double clic dessus ! (en fait si mon souvenir est bon, un double clic sur la fiche donne le même résultat)

    Delphi va automatiquement ajouter les déclarations nécessaires dans le projet et te placer dans la méthode FormCreate de la fiche
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    OK, cela marche mais seulement si :
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    sont déclarées dans le type et non pas dans les déclarations privées, sinon il dit que les procédures déclarées ne sont jamais utilisées.

    Encore une question :
    Où l'IDE place-t-il les déclarations nécessaires dans le projet ?

    Merci, je pense que le topic est bientôt résolu...

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    alors tu n'as rien à déclarer à la main, Delphi s'occupe de tout !

    dans le début de déclaration des TForm tu trouves les méthodes ajoutées automatiquement par l'IDE, elles sont donc publiques (portée par défaut)

    au passage, tu peux dans l'Inspecteur d'Objets taper le nom de la fonction, ou même la renommer, Delphi appliquera les modifications dans le source.

    Une fois qu'une méthode existe, tu peux l'affecter à d'autres évènements en la sélectionnant dans la liste de l'Inspecteur d'objets (typiquement un Menu et un Bouton pourront déclencher le même traitement).

    Pour le reste, c'est le fichier DFM qui contient les informations utilisées par Delphi pour créer la fiche lors de l'execution du programme (Alt+F12 pour afficher le fichier DFM, Alt+F12 pour revenir à la fiche). Ce fichier est inclus en ressource de l'executable par la ligne {$R *.RES} qui lie le .PAS et le .DFM de même nom. Tu retrouves dans ce fichier toutes les affectations faites à la souris (modification de propriété, évènements etc...)

    le constructeur de TForm charge automatiquement la ressource portant le nom de la fiche (par exemple Form1) quand elle est instanciée, et affecte les propriétés en conséquence.

    C'est pour cela que ComboBox1 est déclaré publique, et qu'il n'y a aucune TComboBox.Create dans le code de la fiche, c'est quand Tform lira la ressource contenant le DFM que ça sera fait automatiquement.

    Mais tout cela est fort bien expliqué dans Delphi 7 Studio aux éditions Eyrolles
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Encore 2 questions :

    1)
    Comment gérer les erreurs d'accés à mysql tel qu'un accés à une base (dans le MySQL.Login) ou à une table (dans le MySQL.ExecSQL('SELECT * FROM table)) qui n'existe pas encore ?
    Dit autrement, comment tester si la requête est possible afin de stoper ou non la procédure...Car le compilateur, lui, va jusqu'au bout avant même de lancer l'application....
    C'est à dire qu'à la compilation le compilateur bug en interprétant le code qui demande ces accés, alors que cela se fait ou devrait se faire quand l'application est lancée seulement, et non pas avant puisque les bases et tables sont créées par la suite avec justement l'utilisation de l'application enfin lancée....Dure

    2)
    Comment optimiser le code avec l'utilisation de MySQLClient :
    A chaque fiche je dois déclarer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private
        { Déclarations privées }
        MySQL:TMySQLClient;
    puis à chaque utilisation de mysql, je dois écrire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MySQL:=TMySQLClient.Create;
     MySQL.Open('127.0.0.1');
     MySQL.Login('user','password','base_variable');
     MySQL.ExecSQL('REQUETE_VARIABLE');
    Et dès lors que je veux aussitôt réutiliser le TMySQLClient pour accéder à différentes bases ou tables je dois recommencer à ouvrir de nouveau un accés à mysql puis me loger puis fair ma requete...
    Mon problème serait de vouloir automatiser ces demandes répétitives car cela prend de plus en plus d'octets dans le code...

    Puis-je faire cela par variables dans le code de la fenêtre principale, si oui comment le déclarer et ou placer les fonctions... ou dois-je réaliser une Unit spécifique pour cela en créant des fonctions rendu publiques pour toutes les fiches...J'ai essayer un peu avant de poster mais en vain....

    Merci encore.

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    si tu maitrises un autre langage de programmation, Delphi 7 Studio est tout indiqué pour te faire la main sur Delphi, sinon il te faudra partir d'ouvrages plus accessibles ou te trouver un site sur le B A BA de Delphi
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Oui je maîtrise le php, j'avais encore d'autre questions genre comment delphi peut interpréter une commande écrite à partir d'une chaine de caractère variable écrite dans le code même, comme le fait si bien le langage php, exemple :

    imaginons 500 combobox sur la fiche (qui peuvent être crées en dynamique à la volée en php)...comment écrire en une fois le remplissage (via une boucle de i=1 à 500) de données provenant d'un tableau à 500 entrées :

    combobox$i.Items.Add(tab[i]);

    la présence du $i est remarquable........Rien que cela me donne envie de retourner au php.

    Merci pour tout.

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    attention ! PHP est un langage interprété, il est donc possible d'évaluer une expression en tant que programme PHP...ce n'est pas le cas de Delphi qui est un langage compilé !

    alors tu as plusieurs façon de voir les choses, la première serait d'utiliser une des langage script dérivé de Delphi...cherche Delphi et Script tu en trouveras plusieurs sur google je pense.

    tu peux aussi inventer un pseudo langage pour lequel tu écriras un interpréteur qui répond à tes besoins, c'est intéressant si les besoins sont simples.

    mais en général, tu peux tout aussi bien repenser ton programme dans une logique compilée.

    dans le cas de ta liste de combo, il y a plusieurs approches.

    - créer "manuellement" les combos afin de les placer dans un tableau à toi
    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
     
    type
     TForm1=class(TForm)
     // ...
     private
      combos:array[0..499] of TComboBox;
     // ...
     end;
    // ...
    procedure TForm1.FormCreate(Sender:TObject);
    var
     i:integer;
    begin
     for i:=0 to 499 do begin
      combos[i]:=TComboBox.Create(Self);
      with combos[i] do begin
       Parent:=Self;
       Setbounds(...);
       Visible:=True;
      end;
     end;
    end;
    c'est sans doute ce que je ferais pour un si grand nombre de combo...bien que je ne pense pas que 500 combo à l'écran soient une bonne chose

    il existe aussi au moins 2 méthodes pour retrouver les combos existante (placées à la souris)...n'ayant pas Delphi sous la main, je ne peux vérifer le nom de la fonction qui m'échappe, mais il me semble que FindComponent() permet de retrouver un composant d'après son nom. Sinon Controls[] est le tableau de tous les controles d'un parent, si tu places tes combos dans un TPanel, il suffit d'utiliser ce tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     TComboBox(Panel1.Controls[i]).Items.Add(...)
    si le panel contient d'autres composants, tu peux aussi alimenter un tableau de combo en testant le type des composants
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var
     i,x:integer;
     c:TControl;
    begin
     x:=0;
     for i:=0 to Panel1.ControlCount-1 do begin
      c:=Panel1.Controls[i];
      if c is TComboBox then begin
      combos[x]:=TComboBox(c);
      inc(x);
      end;
     end;
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Merci pour ces informations, la logique du langage pascal commence à me revenir, j'ai créée comme tu dis 14 ComBobox en dynamique et je les ai reconnus et nominés avec la méthode que tu décris, tel que :


    for i:=10 to ComponentCount-1 do begin
    if Components[i] is TDateTimePicker then with (Components[i] as TDateTimePicker)do
    ........
    DateTimePicker:=TDateTimePicker(FindComponent('DateTimePicker'+inttostr(2*j+1)));
    If DateTimePicker<>Nil Then DateTimePicker.Date:=StrToDate(d_date);

    Là ces pour remplir les combobox impaires, que je remplis d'ailleurs avec ton Unit MySQLClient qui me rend bien service, merci encore pour ce travail.

    Oui php est un langage interprété, mais comme tu dis "inventer un pseudo langage" reviens à créer des fonctions et procédures en pascal, choses qui ne me déplais pas d'autant plus que je programme le plus possible de manière à automatiser les "routines"....Alors, biensure, je découvre les possibilité de l'interface Delphi pour obtenir un code bien implémenté. Il fallait bien comprendre comment l'interface Delphi voit les choses. En pratiquant elle m'en apprend beaucoup....

    J'ai vu comment déclarer ton Unit en private, cela rend bien service et puis en ajoutant les fonctions pour les requêttes dans une autre fiche (avec des variables autant pour créer une base ou une table etc...) bref pour duynamiser un peu tout cela.

    Une dernière question par rapport à MySQLClient, as-tu fais un tutorial sur toutes les possibiltés qu'elle procure ?

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par devpsp Voir le message
    Une dernière question par rapport à MySQLClient, as-tu fais un tutorial sur toutes les possibiltés qu'elle procure ?
    non, d'ailleurs MySQLClient ne permet que deux choses

    1) envoyer une requête SQL à un serveur MySQL
    2) lire la réponse

    tout le reste c'est du SQL

    j'avais tenté de faire un composant orienté BDD sur le modèle du TDataSet, mais c'est compliqué à faire pour un résultat qui ne m'intéresse pas
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Tout est bien qui fini bien
    ok, et encore merci pour tout.


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

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/06/2013, 20h36
  2. Lister les noms des tables d'une base access
    Par chefinf dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/07/2008, 18h34
  3. Réponses: 12
    Dernier message: 04/06/2008, 17h59
  4. Réponses: 2
    Dernier message: 06/04/2007, 11h48
  5. Noms des bases de données
    Par abdou.sahraoui dans le forum Administration
    Réponses: 8
    Dernier message: 01/09/2004, 15h21

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