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 :

close query


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Par défaut close query
    Vérifiez ce bout de code pour moi les amis :
    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
    procedure TForm2.SpeedButton18Click(Sender: TObject);
    var
      rep : integer;
    begin
    //  Code qui enclenche la procedure de suppression
        rep:=MessageBox(Handle,'Êtes-vous sûr de voir supprimer cet Etudiant ?',
        'Confirmation', MB_OKCANCEL or MB_ICONQUESTION);
        If (rep =IDOK) then
    // suppression de l'enrégistrement : ETUDIANT
        DM2.IBQEtudSupprim.SQL.Clear;
        DM2.IBQEtudSupprim.SQL.Add('DELETE FROM ETUDIANT WHERE MATRICULE = :MATRICULE');
        DM2.IBQEtudSupprim.Params[0].AsString:= EditMatric.Text;
        DM2.IBQEtudSupprim.ExecSQL;
        DM2.IBQEtudSupprim.Close;
    // suppression de l'enrégistrement : PARENT
        DM2.IBQParentSupprim.SQL.Clear;
        DM2.IBQParentSupprim.SQL.Add('DELETE FROM PARENT WHERE MATRICULE = :MATRICULE')
        DM2.IBQParentSupprim.Params[0].AsString:= EditMatric.Text;
        DM2.IBQParentSupprim.ExecSQL;
        DM2.IBQParentSupprim.Close;
     
        DM1.IBTableEtudiant.Refresh;
        DM1.IBTableParent.Refresh;
        DM1.IBQEtudiant.First;
        DM1.IBQueryParent.First;
        RemplirEtudiant.Execute;
        RequeteParent.Execute;
    end;
    J'ai l'impression qu'il ya un close query qui manque quelque part ?
    Aidez-moi à le placer.

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

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 944
    Par défaut
    Il manque surtout un begin.....end !

    en effet, seul
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // suppression de l'enrégistrement : ETUDIANT 
        DM2.IBQEtudSupprim.SQL.Clear;
    dépend du if

    ensuite, oui, il est bon de clore la query, dès qu'on n'en a plus besoin

  3. #3
    Membre Expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 573
    Par défaut
    Salut

    La méthode Close n'a de sens que si la requête manipule un ensemble de données suite à un SELECT.

    Les ordres de mises à jour tels que DELETE ne retourne pas de résultat sous forme d'ensemble de données. Les appels

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DM2.IBQEtudSupprim.Close;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DM2.IBQParentSupprim.Close;
    n'ont donc pas de sens.

    Quel est le problème réel qui t'amène à poster ici ?

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  4. #4
    Membre éclairé Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Par défaut
    Mon programme fonctionne comme je le souhaite c'est à dire qu'il fait le delete desiré. Seulement je voudrais surtout avoir l'avis des membres émerites comme vous pour me dire s'il ne manque pas quelque chose ou si mon code malgré qu'il fonctionne est bien redigé.

  5. #5
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    il faut bien sur un begin ..end ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (rep <>IDOK) then exit;
    ce que je fait moi
    en plus si tu veux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var s:string;
    begin
    ....
    If (rep <>IDOK) then exit;
    s:='DELETE FROM :Table WHERE MATRICULE = '+quotestr(trim(EditMatric.Text));
    if DM2.IBQEtudSupprim.active then DM2.IBQEtudSupprim.active:=false;
    DM2.IBQEtudSupprim.SQL.Clear; 
        DM2.IBQEtudSupprim.SQL.Add(s); 
        DM2.IBQEtudSupprim.Params[0].AsString:= 'Etudiant'; 
        DM2.IBQEtudSupprim.ExecSQL;
    // suppression de l'enrégistrement : PARENT 
        DM2.IBQParentSupprim.Params[0].AsString:= 'PARENT' ; 
        DM2.IBQParentSupprim.ExecSQL;

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

Discussions similaires

  1. Peut on empecher les requetes Query Close ?
    Par bigbernie dans le forum Windows XP
    Réponses: 0
    Dernier message: 13/01/2009, 10h21
  2. Query Begin et Commit son sur un bateau....
    Par faoz75 dans le forum Requêtes
    Réponses: 5
    Dernier message: 15/08/2003, 11h48
  3. Je ne retrouve pas ma SP dans Query analyser
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/07/2003, 12h43
  4. Query data set
    Par Sandra dans le forum JBuilder
    Réponses: 3
    Dernier message: 20/01/2003, 10h08
  5. [XMLRAD] Décoder Request.Query
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 8
    Dernier message: 10/01/2003, 16h40

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