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 :

EAbstractError avec Query


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 55
    Par défaut EAbstractError avec Query
    Bonjour,

    Lors de l'exécution du code ci-dessous, quand il est sur la ligne en gras, un message d'erreur apparait :
    Le projet Import.exe a provoqué une classe d'exception EAbstractError avec le message 'Erreur abstraite'. Processus stoppé.
    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
    procedure TPatient.verifPatientExiste;
    var
       requete : TQuery;
    begin
         try
            requete:= TQuery.Create(requete);
            requete.DatabaseName := 'P2ADMIN';
            requete.SQL.Clear;
            requete.SQL.Add('SELECT .....');
            requete.open;
            requete.Free;
         Except
           On EDBEngineError do Exit;
           end;
    end;
    Ce code se trouve à l'intérieur d'une classe.
    Si je le sors de ma classe, il marche bien.

    Qu'est-ce qui ne va pas d'après vous ?

    Merci

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete:= TQuery.Create(requete);
    dans ton create tu fait reference a l'instance future de ton objet pas encore creer et c'est vraiment pas bien

    remplace par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete:= TQuery.Create(self);
    @+ Phil

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 55
    Par défaut
    quand je met self, il ne veut plus compiler :
    [Erreur] U_Patient.pas(112): Types incompatibles : 'TComponent' et 'TPatient'

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


    c'est quoi ton TPatient ?
    salut sinon tu met a nil mais faut pas oublier de faire le free
    de ton instance

    @+ Phil

  5. #5
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Salut
    essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete:= TQuery.Create(Self.Owner);
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 55
    Par défaut
    En mettant self.owner, il me dit à la compilation :
    [Erreur] U_Patient.pas(112): Identificateur non déclaré : 'Owner'
    Sinon TPatient, c'est ma classe.
    J'ai peut-etre mal déclaré ma classe, je ne programme en delphi que depuis quelques jours.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    type
      TPatient = class
    private
       ....

  7. #7
    Membre émérite Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Par défaut
    Bonjour!

    Je ne crois pas que l'affectation du Owner ne produise cette erreur. Mets nil si tu veux, ça va donner le même résultat. Le Owner est le composant qui détruira le query lors de sa propre destruction. Si tu le détruit toi même, le Owner ne sert plus à rien. (Tiens je viens de lire sjrd qui a écrit exactement la même chose )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete:= TQuery.Create(requete);
    Ce code n'est pas vraiment propre () mais ne devrait pas provoquer d'erreur. C'est l'équivalent de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete:= TQuery.Create(nil);
    Une erreur abstraite survient généralement quand on appelle une méthode abstraite qui n'a pas été implémentée. Le truc est de savoir quelle méthode est appellée quand l'erreur survient.

    Est-ce que tu sais EXACTEMENT sur quelle ligne l'erreur survient ?
    Est-ce que tu as essayé de compiler SANS le try/except pour qu'on puisse voir exactement le message d'erreur (quoi que ce dernier ne gère déjà que EDBEngineError et soulève tout le reste) ?

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

Discussions similaires

  1. Lourdeur utilisation fichier excel avec query
    Par spud96 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/11/2009, 11h10
  2. export avec query sur table partitionnée
    Par pat29 dans le forum Import/Export
    Réponses: 2
    Dernier message: 19/01/2009, 18h07
  3. recherche avec query
    Par kroma23 dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/09/2008, 17h11
  4. Suppression ligne d'un dbgrid avec query
    Par Mihalis dans le forum Bases de données
    Réponses: 7
    Dernier message: 13/09/2006, 19h17
  5. Comment Enregistrer un champ type BLOB avec Query ???
    Par baba dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/01/2005, 20h33

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