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 :

pb de redondance


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 176
    Par défaut pb de redondance
    Bonjours a tous,
    J'ai une procedure dans mon code tres redondante, quelqu'un pourrait il me dire comment je peux faire pour l'éviter ?

    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 RCombo();
    begin
      All();
      ComboGenial('NOM');
      form1.SQLQuery1.active:=True;
        While not form1.SQLQuery1.Eof do begin
            form1.combobox2.Items.Add(form1.SQLQuery1.FieldByName('NOM').AsString);
            if FormActive=TRUE then
            form3.ComboBox1.Items.Add(form1.SQLQuery1.FieldByName('NOM').AsString);
            form1.SQLQuery1.Next;
        end;
      ComboGenial('AGENCE');
      form1.SQLQuery1.active:=True;
        While not form1.SQLQuery1.Eof do begin
            form1.ComboBox3.Items.Add(form1.SQLQuery1.FieldByName('AGENCE').AsString);
            if FormActive=TRUE then
            form3.ComboBox2.Items.Add(form1.SQLQuery1.FieldByName('AGENCE').AsString);
            form1.SQLQuery1.Next;
        end;
    je n'ai pas copier toute la fonction mais ca continue comme ca encore sur 20 ligne ya juste le numéro des combobox qui change et la valeur de SQLqueryfildbyname('valeur qui change')

    (j'ai essayer de mettre tous les combo dans la meme boucle while mais je rencontre des pb sur les champs)

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Juin 2004
    Messages : 219
    Par défaut
    tu peux faire une fonction avec 1 paramètre que serait le nom du champ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TMonForm.MonFunction(aChamp: string);
    begin
      ComboGenial(aChamp);
      form1.SQLQuery1.active:=True;
      While not form1.SQLQuery1.Eof do 
      begin
        form1.ComboBox3.Items.Add(form1.SQLQuery1.FieldByName(aChamp).AsString);
        if FormActive=TRUE then
          form3.ComboBox2.Items.Add(form1.SQLQuery1.FieldByName(aChamp).AsString);
        form1.SQLQuery1.Next;
      end;
    end;
    Plus ou moins

    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Par défaut
    Bonjour,

    Utilise une procedure où tu met ton traitement redondant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure RCombo();
    begin
      All();
      Champ:='NOM' ;
      SubRoutine(Champ);
      Champ:='AGENCE' ;
      SubRoutine(Champ);
      ..............etc......
    end;
    Où SubRoutine est une procedure déclarée ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    procedure SubRoutine(C : string) ;
      ComboGenial(C);
      form1.SQLQuery1.active:=True;
        While not form1.SQLQuery1.Eof do begin
     form1.combobox2.Items.Add(form1.SQLQuery1.FieldByName(C).AsString);
            if FormActive=TRUE then
            form3.ComboBox1.Items.Add(form1.SQLQuery1.FieldByName(C).AsString);
            form1.SQLQuery1.Next;
        end;
    end;
    Autre conseil utilise les "with" (en l'occurence With Form1 dans la procedure SubRoutine)

    A+

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 493
    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 493
    Par défaut
    salut ,

    le plus simple etant de passer tes combo en parametre
    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
     
     
     Procedure AjouteDansCombo(Cb1,Cb2 : TcomboBox;FieldName : String);
     Begin
       ComboGenial(FieldName);
       With form1 Do
       begin
         SQLQuery1.active:=True;
         While not SQLQuery1.Eof do
         begin
           CB1.Items.Add(SQLQuery1.FieldByName(FieldName).AsString);
           if FormActive=TRUE then
             CB2.Items.Add(SQLQuery1.FieldByName(FieldName).AsString);
           SQLQuery1.Next;
         end;
       end;
     End;
    @+ Phil

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 176
    Par défaut
    Merciii, je pense que je vais passer en paramettre le nom du combo (j'etais pas sur qu'on puisse) ainsi que le nom du champ
    Merci de vos réponse si rapide je test ce soir et jmet le tag résolu si ca roule
    a biento
    merci
    IceTeA

Discussions similaires

  1. [Efficacite/Redondance] Millions d'enregistrement dans MySQL
    Par nico33307 dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/07/2005, 21h21
  2. redondance en sql ??
    Par jefferson dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/07/2004, 16h50
  3. Problème d'affichage redondant (genre boucle)
    Par EJ dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 01/06/2004, 11h41
  4. Fusion de lignes de tables en éliminant les redondances
    Par MinsK dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 22/04/2004, 09h21
  5. [HERITAGE] Redondance ou pas redondance ???
    Par cyrillus76 dans le forum Schéma
    Réponses: 1
    Dernier message: 11/06/2003, 09h46

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