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 :
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
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;
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;
Partager