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 :

Pb avec tri Descendant dans RxDbGrid + Query


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 31
    Points : 24
    Points
    24
    Par défaut Pb avec tri Descendant dans RxDbGrid + Query
    Bonjour,

    J'utilise une base Paradox sur laquelle j'effectue un tri ascendant ou descendant en cliquant sur un titre quelconque d'une colonne du RxDbGrid.

    Le tri est effectué par une requête SQL et quelque soit la colonne cliquée le tri ascendant ou descendant est effectué correctement.

    J’ai 5 DbEdit, 1 pour chaque champs, associés à 4 boutons pour Ajouter, Modifier, Supprimer et Valider

    Après un tri ascendant je peux effectuer des opérations pour Ajouter, Modifier, Supprimer et Valider dens enregistrements sans problème.

    Par contre après un tri descendant aucune des opérations Ajouter, Modifier, Supprimer et Valider n’est possible,

    Dès que je clique sur un de ces boutons, j’ai le message suivant : Query1 : Impossible de modifier un ensemble de données en lecture seule.

    Toute aide sera la bienvenue.

    Voici le code pour le tri :
    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
    procedure TForm1.RxDBGrid1TitleClick(Column: TColumn);
    var
      i : integer;
      vTriAsc, vTriDesc : string;  // Requêtes SQL du tri Ascendant ou Descendant
      vFields, vFieldName: string; // nom du champs à trier et ensemble deses noms des champs
    begin
      vTriAsc := 'Select %s from JEAN01 order by %s ASC';    
      vTriDesc:= 'Select %s from JEAN01 order by %s DESC'; 
      vFieldName:= Column.FieldName;
      For i := 0 to RxDBGrid1.Columns.Count -1 do
      vFields := vFields + RxDBGrid1.Columns[i].FieldName +','+#32;
      if vFields <> emptyStr then
      vFields := Copy(vFields,1,length(vFields)-2);
      with Query1 do
      begin
        Close;
        SQL.Clear;                       // suppression du texte de la requete
        if SensTri = 1 then
        begin
          SQL.Text := Format(vTriAsc,[vFields,vFieldName]);
          SensTri := 0;
        end else
        begin
          Sql.Text := Format(vTriDesc,[vFields,vFieldname]);
          SensTri := 1;
        end;
        Open;
      end;
    end;
    Le code pour les boutons :
    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
    // Ajouter
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
      groupbox1.caption:='  Saisie d''''une nouvelle fiche  ';
      Query1.Last; // Se positionne sur le dernier enregistrement
      Query1.Append;
    end;
     
    // Modifier
    procedure TForm1.BitBtn3Click(Sender: TObject);
    begin
      groupbox1.caption:='  Modification d''''une fiche  ';
      Query1.edit;
    end;
     
    // Supprimer une fiche
    procedure TForm1.BitBtn4Click(Sender: TObject);
    begin
      if messagedlg('ATTENTION !! Voulez vous supprimer cette fiche',mtwarning,[mbyes,mbno],0)=mryes then Query1.delete;
    end;
     
    // Valider la saisie en cours
    procedure TForm1.BitBtn6Click(Sender: TObject);
    begin
      Query1.Post;
    end;

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 31
    Points : 24
    Points
    24
    Par défaut Pb avec tri Descendant dans RxDbGrid + Query
    Hello,

    J'ai trouvé pourquoi le message Query1 : Impossible de modifier un ensemble de données en lecture seule est généré.

    La propriété DataSource1.DataSet.CanModify passe à False lors du tri descendant er reviens à True lors du tri ascendant.

    Pour l'instant je n'ai pas trouvé la bonne solution pour y remédier.

    Toute idée sera la bienvenue.

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    salut ; apparemment votre requête c'est une requête d'affichage et selon les normes avec ce type de requête on peut modifier ou faire des mise à jour sauf si vous utilisé des updates éééé

  4. #4
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    est la encore vous faites des modifications sur le query!!! qu'est qu'il ont n'est de la table original ????
    j'ai relut votre mais je trouve pas la mise a jour des tables ,!!!! excuse peut être que j'ai mal compris le contexte

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Je fais une recherche avec une requête SQL sur un fichier Dbase ou Paradox, le résultat étant affiché dans un DbGrid.

    Ensuite en fonction du résultat affiché, mon but est de pouvoir modifier ou supprimer un ou plusieurs enregistrements trouvés.

    Mais comme la propriété DataSource1.DataSet.CanModify passe à False lors du tri descendant, il m'est impossible de faire les modifications souhaitées.

    Si quelqu'un a une petite une idée ?

  6. #6
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut

    es-tu obligé de faire les modif dans le dbgrid ?
    si c'est pas le cas, alors ajoutes-en un bouton modification sur ton formulaire, en cliquant sur le dit bouton une nouvelle fenêtre s'affiche pointant le 1er enregistrement de la liste des enregistrements trouvés que tu peux modifier aisément.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Hello,

    Je ne fais pas les modifs directement dans le DbGrid.

    Dans une base Paradox ou Dbase, j'effectue un tri ascendant ou descendant en cliquant sur un titre quelconque d'une colonne du RxDbGrid.

    Le tri est effectué par une requête SQL.

    J’ai 5 DbEdit, 1 pour chaque champs, associés à 4 boutons pour Ajouter, Modifier, Supprimer et Valider

    Chaque champs de la ligne courante est affiché dans les 5 DbEdit.

    Quand la ligne courante est à modifier, j'utilise ensuite les 4 boutons pour effectuer les opérations suivantes : Ajouter, Modifier, Supprimer et Valider.

    Mais il m'est impossible de valider une quelconque de ces opérations sachant qu'après la requête SQL la propriété DataSource1.DataSet.CanModify passe pour un motif inconnu à False.

    Quand je valide la modification, la propriété DataSource1.DataSet.CanModify étant à False j'ai donc le message Query1 : Impossible de modifier un ensemble de données en lecture seule

    Ce n'est donc pas un problème de boutons ou d'opérations effectués directement sur le DbGrid.

    Il me faut donc comprendre pourquoi après la requête SQL la propriété CanModify du DataSource1 passe à False et essayer d'y remédier.

  8. #8
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Query1 : Impossible de modifier un ensemble de données en lecture seule
    cher ami le message est clair , le type de requête que vous utilisé est de type d'affichage c'est unidirectionnelle donc on peut qu'affichés des données , pour la modification vous procédé comme suite:
    vous localisé le n° d'enregistrement dans votre query1 ,
    ensuite vous passé a la modification dans la table concernée.
    sinon vous passé par les requête INSERT, UPDATE, DELETE....
    http://sql.developpez.com/

  9. #9
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par redoran Voir le message
    cher ami le message est clair , le type de requête que vous utilisé est de type d'affichage c'est unidirectionnelle donc on peut qu'affichés des données , pour la modification vous procédé comme suite:
    vous localisé le n° d'enregistrement dans votre query1 ,
    ensuite vous passé a la modification dans la table concernée.
    sinon vous passé par les requête INSERT, UPDATE, DELETE....
    http://sql.developpez.com/
    voilà
    +1 redoran
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

Discussions similaires

  1. Enregistrement d'un noeud avec ses descendants dans un graphe .
    Par malekmalek27021 dans le forum Général Java
    Réponses: 2
    Dernier message: 30/04/2014, 16h52
  2. Réponses: 3
    Dernier message: 05/08/2009, 00h34
  3. Réponses: 2
    Dernier message: 15/06/2009, 18h40
  4. Query SQL avec tri sur une date + groupement
    Par Raphael1980 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 24/02/2009, 15h12
  5. Tri descendant avec composant TZTable de Zeos
    Par defluc dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2007, 20h08

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