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

C++Builder Discussion :

[SQLQuery] Modifié la requête SQL et Actualisé le DBGrid.


Sujet :

C++Builder

  1. #1
    Membre régulier Avatar de Nadd
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Points : 95
    Points
    95
    Par défaut [SQLQuery] Modifié la requête SQL et Actualisé le DBGrid.
    Bonsoir,
    Je penses que le titre est assez explicite
    Je dispose d'un SQLQuery et tout le brol qui va avec et un DBGrid et j'aimerais, quand je clic sur un boutton, que la requête change (par exemple au lieu de "SELECT * FROM Table_1" ca devienne "Table_2").

    Comment puis-je faire ?

    Amicalement et en vous remerciant d'avance,

    Nadd.

  2. #2
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    t'as pas un open ou refresh sur ton SQLQuery?
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  3. #3
    Membre régulier Avatar de Nadd
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Points : 95
    Points
    95
    Par défaut
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void __fastcall TMDIChild2::ToolButton2Click(TObject *Sender)
    {
    SQLQuery1->SQL->Text = "SELECT * FROM Table_1";
    }
    Mais bon ca ne produit rien du tout.
    Quand je fais un SQLQuery1->Refresh(); il me lance une erreur : ... Closed DataSet. Et j'ai beau mettre un SQLQuery1->Open() au début du code rien n'y fais.

    En vous remerciant d'avance,

    Nadd.

  4. #4
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    Bon, je connais pas ton compo mais avec ce que j'utilise pour ajouter une séquence SQL je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Query->SQL->Clear();
    Query->SQL->Add("ton SQL");
    Query->Open();
    en espérant t'aider
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  5. #5
    Membre régulier Avatar de Nadd
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Points : 95
    Points
    95
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void __fastcall TMDIChild2::ToolButton2Click(TObject *Sender)
    {
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Add("SELECT * FROM Table_1");
    SQLQuery1->Open();
    }
    Aucune erreur se produit lorsque je clic sur le boutton. Mais rien ne se produit

    Cordialement,

    Nadd.

  6. #6
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    ah...
    on est bien d'accord que votre DBGrid est lié sur un datasource qui est lui lié sur votre SQLQuery?


    Y'a bien un moment où il y a quelque chose dans votre DbGRid?
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  7. #7
    Membre régulier Avatar de Nadd
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Points : 95
    Points
    95
    Par défaut


    Mon DBGrid est lié à mon DataSource, qui est lié à un ClientDataSet, qui lui est lié à un DataSetProvider qui lui est lié au SQLQuery qui lui est lié à mon SQLConnection.

    Si je relie directement mon DataSource à mon SQLQuery ca fait une erreur : "Unidirectional DataSet blablabla..." (peut-être qu'un paramètre est mal configurer.)

    Amicalement,

    Nadd.

    PS: Oui quelque chose s'affiche sur le DBGrid...

  8. #8
    Membre régulier Avatar de Nadd
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Points : 95
    Points
    95
    Par défaut
    Quelqu'un n'aurait-il pas la solution à ce petit problème ?

    Est-il possible de faire fonctionner un DBGrid avec un DataSource, un SQLQuery et un SQLConnection sans avoir le problème suivant :

    Operation not allowed on a unidirectional dataset
    En vous remerciant d'avance,

    Nadd.

  9. #9
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    c'est quoi ton SQL? parce que le message est assez explicite.
    de plus, sur ton dataset, doit y avoir une proprité Unidirectionnal...mets là à false pour voir
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  10. #10
    Membre régulier Avatar de Nadd
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Points : 95
    Points
    95
    Par défaut
    Ahhhhhhhhhhh
    J'ai tout recommencer mais cette fois si à partir d'un SimpleDataSet. Là, aucun problème de "Unidirectional...".

    Lorsque je tente de modifie la "Commande Texte" (Requête SQL), il me répond que l'on ne peut éffectuer cette opération avec un DataSet ouvert.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void __fastcall TMDIChild2::ToolButton2Click(TObject *Sender)
    {
    SimpleDataSet1->DataSet->CommandText = "SELECT * FROM Table_1";
    }
    Amicalement,

    Nadd.

  11. #11
    Membre actif
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Points : 279
    Points
    279
    Par défaut
    ah tu utilises dbExpress...

    essaye avec un Close() avant..


    (pour la question d'avant c'est normal TSQLQuery ne peut etre lié directement de cette manière il faut passer par un TSQLClientDataSet et non ClienDataSet....)

  12. #12
    Membre régulier Avatar de Nadd
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Points : 95
    Points
    95
    Par défaut
    Voici mon nouveau code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void __fastcall TMDIChild2::ToolButton2Click(TObject *Sender)
    {
    SimpleDataSet1->DataSet->Close();
    SimpleDataSet1->DataSet->CommandText = "SELECT * FROM Table_1";
    }
    Rien n'y fais. Le DBGrid ne change pas d'un poile.
    J'ai eu beau mettre un Open() après, rien ne change

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void __fastcall TMDIChild2::ToolButton2Click(TObject *Sender)
    {
    SimpleDataSet1->DataSet->Close();
    SimpleDataSet1->DataSet->CommandText = "SELECT * FROM Table_1";
    SimpleDataSet1->DataSet->Open();
    }
    Cordialement,

    Nadd.

    Ps (Djob) : Je n'ai trouver aucune TSQLClientDataSet... Seulement un TClientDataSet dans la partie DataAccess

  13. #13
    Membre actif
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Points : 279
    Points
    279
    Par défaut
    Nadd ( j'utilise BCB6 Entreprise et je n'ai pas du tout les memes composants que toi...donc je t'aide à l'aveugle...peut être serait il bon que tu precises ta configuration,la version et les composants que tu utilises etc, afin de cibler les personnes suceptibles de mieux t'aider..)

    Juste un truc :

    SimpleDataSet : est ce un descendant de TDataSet ?

    si oui, essaye de faire directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SimpleDataSet1->Close();
    SimpleDataSet1->DataSet->CommandText = "SELECT * FROM Table_1";
    SimpleDataSet1->Open();

  14. #14
    Membre régulier Avatar de Nadd
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Points : 95
    Points
    95
    Par défaut
    J'ai trouverrrrrrrr !

    Voici le bon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SimpleDataSet1->Close();
    SimpleDataSet1->DataSet->Close();
    SimpleDataSet1->DataSet->CommandText = "SELECT * FROM Table_1";
    SimpleDataSet1->DataSet->Open();
    SimpleDataSet1->Open();
    Il me parait louche mais il fonctionne !

    Merci beaucoup de votre précieuse aide

    Cordialement,

    Nadd. ^^

    PS: Lorsque je n'utilique que SimpleDataSet1->Close(); et Open(); il me dit qu'il ne peux effectuer l'opération avec un DataSet ouvert.

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

Discussions similaires

  1. Modifier une requête SQL
    Par islem2007 dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/04/2008, 09h04
  2. [XI] Modifier la requête SQL
    Par kwedus dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 08/08/2007, 18h58
  3. Modifier une Requête SQL
    Par CharleLéo dans le forum Bases de données
    Réponses: 5
    Dernier message: 04/02/2007, 13h27
  4. [Crystal Report 10]Modifier la requête SQL
    Par gwen-al dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 09/11/2004, 10h21
  5. [Crystal Reports 9] Modifier la requête SQL d'un état
    Par VVE dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 21/10/2003, 10h47

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