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 :

Créer composant avec TQuery->pb suppression a la concepti


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Points : 24
    Points
    24
    Par défaut Créer composant avec TQuery->pb suppression a la concepti
    Salut à tous,

    Voila mon problème
    J'ai créer un composant qui contient un TQuery. Tout marche très bien a l'execution. Le seul problème c'est à la conception: lorsque que je veux supprimer mon composant, delphi m'affiche le message d'erreur suivant:
    Violation d'accès à l'adresse 40005A0C dans le module 'rtl70.bpl'. Lecture de l'adresse F28B562F.
    Et ce qui est genant c que Delphi plante complètement et je suis obliger de l'arreter avec le gestionnaire des taches.

    Le problème qui se pose c'est que comme mon composant contient un TQuery, il se créé automatiquement une Session lorsque je pose mon composant sur ma fiche et que je veux supprimer mon composant, il semble vouloir essayer de supprimer la Session. Et la ca plante !!!

    Alors la je sais pas koi faire à par créer mon TQuery à l'exécution mais j'aurai plus l'avantage de le voir a la conception et ca c génant.

    Merci de votre aide.

  2. #2
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    Tu envoies la partie ton constructeur qui sème le doute ainsi que ton destructeur pour voir si on peut t'aider.
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Mais j'ai pas de constructeur, en fait mon composant c'est une frame qui contient une DBGrid, un TQuery, un TDatasource reliés ensemble et quelques composant de saisie (TEdit, TComboBox). Et ma frame marche très bien, toute mon application est basée dessus tourne tres bien. Le truc c'est que je veux en faire un composant pour pouvoir mettre des propriété en published pour pouvoir les remplir à la conception plutot qu'a l'execution.

    Et comme je l'ai di le probleme c'est le TQuery qui creer automatiquement une Session quand on le pose et qui essaye de la detruire quan on le supprime et la ca plante.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Pour etre sur que le problème vienne uniquement du TQuery, j'ai créer un composant descendant de TFrame et qui contient seulement un TQuery, je n'ai apporter aucune autre modification et ca aboutit au même problème, impossible de supprimer ce composant à la conception sans que delphi plante.

  5. #5
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    Si c'est un composant que tu veux créer tu doit implémenter dans sa classe au mois un constructeur est un destructeur. Mais si c'est un modèle de composant c'est une autre paire de manche.
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    On est pas obliger de créer un constructeur, si on n'a pas besoin de faire plus de truc que ce que fait le constructeur du composant à partir duquel on part.

    Et la mon composant descend de TFrame donc je ne créé pas de constructeur il y a déja celui du TFrame.

    Et qu'est que tu entend par modèle de composant ? Une frame?

  7. #7
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    OK
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Et sinon t aurai pas une idée du problème tu TQuery? Parce que quand on pose un TQuery sur une fiche, on peut le supprimer comme on veux donc il doit y avoir un truc a ajouter pour que ca marche. J'ai regarder le code du TQuery et de ces ancêtres mais j'ai pas trouver ce qui pouvait faire que ca marche. Il doit pourtant bien y avoir un moyen de reproduire le meme fonctionnement.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Alors, personne n'aurais une idée sur le problème ? Je vais devoir abandonner l'idée de créer un composant qui contient un TQuery ?

  10. #10
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 103
    Points : 120
    Points
    120
    Par défaut
    Salut,

    je ne vois pas d'où peut venir le problème... désolé...

    juste, à ta place je poserais ma question sur le forum Delphi... certes le problème concerné un TQuery mais bon, c'est surtout un problème de destruction et de composant plus qu'un de SGBD...

    bonne chance...

    @+
    Ce n'est pas parce qu'on pédale dans la semoule, qu'on est sûr de manger du couscous... (anonyme)

  11. #11
    Membre actif
    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
    Points : 241
    Points
    241
    Par défaut
    c'est que je n'arrive a voire est que pour faire un composant dérivée de TFrame tu dois faire quelque chose comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    type
      TMyFrame = class(TFrame)
      private
      protected
      public
      published
      end;
    Alors, ça n'a aucun TQuery, tu dois le crée par code par exemple dans le constructeur (et le détruire dans le destructeur)

    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
     
    type
      TMyFrame = class(TFrame)
      private
        FQuery: TQuery;
      protected
      public
        constructor Create(aOwner: TComponent); override;
        destructor Destroy;
      published
        property Query: TQuery read FQuery write FQuery;
      end;
     
    implementation
     
    constructor TMyFrame.Create(aOwner: TComponent);
    begin
      FQuery := TQuery.Create(Self);
    end;
     
    destructor TMyFrame.Destroy;
    begin
      FreeAndNil(FQuery);
    end;
    Esite d'essayer ça.

    J'ai fait le code de mémoire, peut être il y a quelques erreurs

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Salut cadetill,

    Tu a raison mais le simple fait de créer un TQuery à la création du TFrame ou peu être même le fait d'avoir une variable TQuery, il y a toujours une Session qui se créer et du coup le problème persiste.

    Toi aussi Amenofis tu à raison, je vais aller voir sur le forum Delphi si qqun ne saurai pas.

    Bon ben merci à tous, a+

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Au fait pour ceux qui voudrai suivre le sujet voici le lien sur le forum Delphi: http://www.developpez.net/forums/vie...239740#1239740

Discussions similaires

  1. ajout et suppression de composant avec fonctions remove() et add()
    Par senobogos dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 31/05/2012, 15h25
  2. créer composant dynamiquement avec sa déclaration
    Par Mihalis dans le forum Delphi
    Réponses: 27
    Dernier message: 13/06/2007, 09h14
  3. Aide sur l'utilisation du composant TupdateSQL avec Tquery
    Par mezianewanadoo dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/06/2006, 18h17
  4. Suppression composant avec popup menu
    Par maredami dans le forum Composants VCL
    Réponses: 2
    Dernier message: 09/03/2006, 09h29
  5. Réponses: 1
    Dernier message: 02/01/2003, 12h45

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