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 :

Afficher un message d'erreur dans un programme !


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 23
    Points
    23
    Par défaut Afficher un message d'erreur dans un programme !
    Bonjour,
    je veux afficher un message dans mon programme ci_dessous :

    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
     
    procedure TForm1.ButtonRECHClick(Sender: TObject);
    var trouve : boolean;
     
    begin
       OracleDataset1.Close;
       oracleDataset1.SQL.Text:= 'select t.*, t.rowid from ops$asy.attestcmp t where t.SAD_REG_NBER='+num_rech.Text;
       OracleDataset1.Open;
    if  (oracleDataset1.SQL.Text = num_rech.Text) then
          trouve:= true
    else
        begin
         trouve := false;
         MessageBox(Handle,'Reférence déclaration inexistante', 'Information', MB_OK);
        end;
        if (trouve = true)  then
        begin
     
             if ((numdoss.Text <> '') or (numdi.Text <> '') or (types.Text <> '') or (chassis.Text <> '') or (datecir.Text <> '') or (model.Text <> '') or (datedoss.Text <> '') )  then
                 begin
                    numdoss.ReadOnly:=true;
                    numdi.ReadOnly:=true;
                    types.ReadOnly:=true;
                    chassis.ReadOnly:=true;
                    datecir.ReadOnly:=true;
                    model.ReadOnly:=true;
                    datedoss.ReadOnly:=true;
                 end
             else
                 begin
                    numdoss.ReadOnly:=false;
                    numdi.ReadOnly:=false;
                    types.ReadOnly:=false;
                    chassis.ReadOnly:=false;
                    datecir.ReadOnly:=false;
                    model.ReadOnly:=false;
                    datedoss.ReadOnly:=false;
                 end
     
             end;
         end;
    Ce message doit s'afficher uniquement quand :
    if (oracleDataset1.SQL.Text <> num_rech.Text)

    mais tel que c'est fait dans mon code, le message s'affiche à toutes les conditions, que faire ?

    Quelqu'un peut -il me donner un coup de main

    Merci

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 922
    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 922
    Points : 6 038
    Points
    6 038
    Par défaut
    Citation Envoyé par hadid
    mais tel que c'est fait dans mon code, le message s'affiche à toutes les conditions, que faire ?
    Bah c'est que la condition d'affichage est remplie alors...

    Il y a quoi dans num_rech.Text ? Comment c'est alimenté ?

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    num_rech est un entier (type number) que l'utilisateur entre dans une zone de saisie.

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 86
    Points
    86
    Par défaut
    Si num_rech.Text est un entier (sous forme de string) et que tu le compare avec oracleDataset1.SQL.Text qui contient ta requête SQL (qui me parait bizzare d'ailleur), cette condition ne sera forcément jamais remplie et il va toujours passer dans le else... il y a une erreur dans ta conception ... tu ne compare pas les bonnes choses je pense

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par hy00ga
    Si num_rech.Text est un entier (sous forme de string) et que tu le compare avec oracleDataset1.SQL.Text qui contient ta requête SQL (qui me parait bizzare d'ailleur), cette condition ne sera forcément jamais remplie et il va toujours passer dans le else... il y a une erreur dans ta conception ... tu ne compare pas les bonnes choses je pense
    Ce que vous dites est vrai mais le problème ce que je ne connais pas bien le langage.
    Pouvez vous me dire comment je pourrais envoyer un message quand le num_rech n'existe pas dans le base ???

    Tout mon problème c'est de dire que le numéro saisi par l'utilisateur est trouvé ou pas dans la base.


    Merci

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut,

    Si le N° saisi par l'utlisateur n'existe pas dans la base, alors ton DataSet ne contiendra aucun enregistrement.

    Examine la propriété RecordCount ou IsEmpty de ton DataSet, pour détecter ce genre de situation.

    @+

  7. #7
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 922
    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 922
    Points : 6 038
    Points
    6 038
    Par défaut
    Alors, Num_rech n'est pas un number....

    Ce serait pas un TEdit, par hasard ? ou quelque chose d'approchant ...

    Il nous faudrait aussi le mode de connexion utilisé , ça conditionne les propriétés accessibles pour compter le nb d'éléments retournés par la requète...

  8. #8
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,

    Ce qui me gène c'est ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    oracleDataset1.SQL.Text:= 'select t.*, t.rowid from ops$asy.attestcmp t where t.SAD_REG_NBER='+num_rech.Text;
       OracleDataset1.Open;
    if  (oracleDataset1.SQL.Text = num_rech.Text) then
    A mon humble avis cette condition est toujours fausse !!!
    @+

  9. #9
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 86
    Points
    86
    Par défaut
    Oki .. je crois que je vois le concept. Ce que tu as c'est un TEdit. L'utilisateur entre un nombre dans ce TEdit et toi, tu veux te connecter à la base de donnée et voir si il existe cet enregistrement. je peux pas te donner du Code parce que je l'ai pas sous la main mais l'idée serait la suivante : (en pseudo-code)

    Etablir la connexion à la base de donnée
    Exécuter la requete SQL.
    Si Ton DataSet est vide
    Affiche le message d'erreur
    Sinon
    Effectue ton traitement

    Mais en effet, ton code est incorrect... Je peux pas te corriger de tête comme ca car c'est des composants que j'ai jamais utilisé. je verrai ca ce soir en rentrant

  10. #10
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Claudius40
    Re,

    Ce qui me gène c'est ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    oracleDataset1.SQL.Text:= 'select t.*, t.rowid from ops$asy.attestcmp t where t.SAD_REG_NBER='+num_rech.Text;
       OracleDataset1.Open;
    if  (oracleDataset1.SQL.Text = num_rech.Text) then
    A mon humble avis cette condition est toujours fausse !!!
    @+

    Effectivement ce que j'ai fait je viens de constater que c'est pas bon, la condition ne sera jamais vérifiée.

    Moi je pose mon problème autrement, je veux renvoyer à l'utilisateur un message au cas ou son numéro saisi n'existe pas dans la base.

    Comment faire ???

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par hy00ga
    Oki .. je crois que je vois le concept. Ce que tu as c'est un TEdit. L'utilisateur entre un nombre dans ce TEdit et toi, tu veux te connecter à la base de donnée et voir si il existe cet enregistrement. je peux pas te donner du Code parce que je l'ai pas sous la main mais l'idée serait la suivante : (en pseudo-code)

    Etablir la connexion à la base de donnée
    Exécuter la requete SQL.
    Si Ton DataSet est vide
    Affiche le message d'erreur
    Sinon
    Effectue ton traitement

    Mais en effet, ton code est incorrect... Je peux pas te corriger de tête comme ca car c'est des composants que j'ai jamais utilisé. je verrai ca ce soir en rentrant

    C'est exactement ça que je veux faire alors j'attends ton aide car je ne connais pas le langage.
    Merci d'avance

  12. #12
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par hadid
    C'est exactement ça que je veux faire alors j'attends ton aide car je ne connais pas le langage.
    Merci d'avance
    Héhé.. tu ne commence pas par le plus simple pour apprendre un language toi Enfin j'essayerai de voir ce que je peux faire, parce que j'ai pas de BD oracle à la maison pour tester... On verra ca dans 2 petites heures

  13. #13
    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
    Comme çà, c'est largement suffisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    oracleDataset1.SQL.Text:= 'select t.*, t.rowid from ops$asy.attestcmp t where t.SAD_REG_NBER='+num_rech.Text;
       OracleDataset1.Open;
    // Rajouter un oracleDataset1.Last; au cas où, 
    //certain sgbd ne retourne une valeur que si on est aller sur le dernier enregistrement
     
    // Si j'ai au moins 1 enregistrement alors c'est vrai, sinon c'est faux
    if oracleDataset1.RecordCount > 0 then
      // Si c'est vrai
    else
     
      // Si c'est faux

  14. #14
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Malatar
    Comme çà, c'est largement suffisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    oracleDataset1.SQL.Text:= 'select t.*, t.rowid from ops$asy.attestcmp t where t.SAD_REG_NBER='+num_rech.Text;
       OracleDataset1.Open;
    // Rajouter un oracleDataset1.Last; au cas où, 
    //certain sgbd ne retourne une valeur que si on est aller sur le dernier enregistrement
     
    // Si j'ai au moins 1 enregistrement alors c'est vrai, sinon c'est faux
    if oracleDataset1.RecordCount > 0 then
      // Si c'est vrai
    else
     
      // Si c'est faux
    c'est bon cette solution

  15. #15
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 86
    Points
    86
    Par défaut
    Impeccable alors ca m'évitera d'avoir à installer ce Oracle data acces

    Au plaisr

    PS: oublie pas le

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

Discussions similaires

  1. Afficher les messages d'erreur dans une JOptionPane
    Par nassima_1418 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 24/10/2013, 15h23
  2. Afficher un message d'erreur dans la même page
    Par ADBows dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 02/09/2011, 19h22
  3. Afficher un message d'erreur dans une fenetre
    Par guy_antoine_mav dans le forum Débuter
    Réponses: 4
    Dernier message: 27/08/2008, 11h45
  4. Afficher du texte dans un Etat: Message d'erreur dans acces.
    Par nodogeid dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 31/05/2007, 10h20
  5. Afficher un message d'erreur dans une fenêtre popup
    Par Quickeno dans le forum Langage
    Réponses: 7
    Dernier message: 08/10/2006, 01h56

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