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 :

Problème avec une condition


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 177
    Points : 74
    Points
    74
    Par défaut Problème avec une condition
    Voilà j'ai créé un graphique et depuis que j'ai mis la condition il ne veux pas lancé le programme.A force je vais croire que je suis un gros boulet.

    j'ai créé mon graphe dans le FormCreate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Serie:=TLineSeries.Create(Self); //Crée la série
    Serie.ParentChart:=Chart1; //Associe la série au graphe//Créer le Graphe
    et voilà le code qui ne marche pas enfin qui devrait mais qui veut pas grrr :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    var
    condition:boolean;
    begin
     
    //Vérifiez s'il a sélectionné une clé pub
    if ComboBox1.text ='Sélectionnez' then//Condition Si on a pas sélectionné dans la ComboxBox1
              begin
              Showmessage('Veuillez Sélectionnez une Clé de Publication');//Afficher Avertissement
              exit;
              end;
     
    condition:=false;
     
    //Recherche Clé Pub, Date, Retour, Montant Retour(peut etre)
    Query2.Close;
    Query2.sql.clear;
    Query2.sql.Add('SELECT smcode,sdate,');
    Query2.sql.Add('COUNT(sccode) AS CompteDeSCCode,');
    Query2.sql.Add('Sum(SPRICE) as SommeDeSPRICE');
    Query2.sql.Add('FROM Sales');
    Query2.SQL.Add('WHERE (smcode=:x)');
    Query2.SQL.add('GROUP BY sdate, smcode');
    Query2.Params[0].AsString:=AnsiUpperCase(combobox1.text);
    Query2.Open;
     
    //Déterminer si le texte du ComboBox et de la requête sont égaux
    while not Query2.Eof do
          begin
                    if AnsiUpperCase(combobox1.Text)=Query2.Fields[0].asstring then
                    condition:=true;
                    Query2.Next;
          end;
     
    Series1.Clear; //Efface le contenu de la série
     
    if condition=true then
    while not Query2.Eof do //Ajoute valeurs dans la série
          begin
          showmessage('ici 1');
          //V:=V+StrToFloat(Query2.Fields[3].AsString);
          Series1.Add(StrToFloat(Query2.Fields[2].AsString),Query2.Fields[1].AsString,693450250); //Ajoute un nombre entre 0 et 50 à la série
                //if edit1.text<>'' then
                //begin
                     //Series2.Add(strtofloat(edit1.text),'',750401325);
                     //Series2.Add(v,Query2.Fields[1].AsString,693450250);
                //end
                //else
                //Showmessage('Veuillez Remplir Le Champ Montant Fabrication');
          Query2.next;
          end
          else
          showmessage('Cette Clé Pub n''existe pas');
          end;

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 911
    Points : 6 032
    Points
    6 032
    Par défaut
    Dans la 2nde boucle
    , tu es déjà à EOF......il faut te repositionner au début

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par qi130
    Dans la 2nde boucle
    , tu es déjà à EOF......il faut te repositionner au début
    +1, mais a mn avis il va y avoir d'autres problèmes que celui la.

    if ComboBox1.text ='Sélectionnez' then
    A bannir, car il suffit que tu modifies le texte et c'est mort.

    vu que tu utilises souvent des combobox pour vérifier des valeurs dasn tes tables. Il serait peut être préférable de changer un peu tes tables.

    Ex:

    Table_Client :
    IdClient : numauto
    NomClient : caractères
    ...
    ...
    Region : caratère (peut prendre les valeurs : Oise,Gard,Hérault,Drome,etc ...)

    Il est fortement déconseillé de faire des recherches ou condition sur des valeurs chaine de caractères, surtout quand elles sont variables.
    Dans un cas comme ca, il suffit de récupérer toutes les valeurs possible de Region et de créer une table Region

    Table Region
    IdRegion : numauto
    Region : Caractères

    Puis après il te reste plus qu'a modifié a table client

    Nouvelle table client
    IdClient : numauto
    NomClient : caractères
    ...
    ...
    IdRegion : numérique défaut à 0

    Après il te reste plus qu'a prendre une dblookupcombobox la liée à cette table pour qu'elle affiche.

    lors d'une recherche par exemple des personnes d'une meme région : il te suffiera de rechercher le numéro de région dans la table client.

    Ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    with Query do
    begin
      close;
      SQL.Add('select  c.idclient,c.Nomclient from client as c');
      sqL.Add('Where IdRegion = :PREGION');
      Params.ParambyName('PREGION').Value := dbLookupComboBox.datasource.dataset.FieldByName('IdRegion');
      open;
    end;
    ceci est bien sur un exemple ^^

    sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while not Query2.Eof do
          begin
                    if AnsiUpperCase(combobox1.Text)=Query2.Fields[0].asstring then
                    condition:=true;
                    Query2.Next;
          end;
    Complètement inutile, la requete fait déjà le tri pour toi. et vu que tu fais une vérification de chaine à chaine, es tu sûr que la base de données ne te renvoi pas autre chose que ce que tu attends ?

    ex : Ta chaine + x caractère blanc = taille total du champs dans la base (Exemple pas top, mais c'est pour l'idée en elle même).

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

Discussions similaires

  1. Problème avec une condition
    Par koKoTis dans le forum Langage
    Réponses: 6
    Dernier message: 01/07/2011, 09h35
  2. Réponses: 1
    Dernier message: 24/02/2011, 10h37
  3. [XL-2010] probléme avec une condition sous toute une colonne
    Par Fawez dans le forum Excel
    Réponses: 1
    Dernier message: 12/06/2010, 12h18
  4. Problème avec une condition IF
    Par Invité dans le forum Windows
    Réponses: 11
    Dernier message: 12/02/2009, 16h17
  5. Problème avec une Condition Ou ||
    Par Jcpan dans le forum Débuter avec Java
    Réponses: 12
    Dernier message: 14/01/2009, 12h19

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