Tri après modification de la base
Bonjour à tous,
J'ai une base de données (FireBird).
Pour la visualiser, la modifier ..., j'ai sur ma Form les composants suivants :
IBQuery1, Datasource1, IBTable1, IBTransaction1, IBDatabase1, DBGrid1, DBnavigator1
J'ai configuré tout ça de la manière suivante :
Code:
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
| IBDataBase1.Params.Clear;
with IBDatabase1 do begin
DatabaseName:='MaBase';
Params.Add('user_name=Moi');
Params.Add('password=MonMotdePasse');
Params.Add('PAGE_SIZE 4096');
LoginPrompt:=False;
DefaultTransaction:=IBTransaction1;
end;
IBTransaction1.defaultDatabase:=IBDatabase1;
IBDatabase1.connected:=True;
IBTransaction1.active:=True;
with IBTable1 do begin
database:=IBDatabase1;
TableName:='MaTable';
end;
DataSource1.DataSet:=IBTable1;
IBTable1.Active:=True;
Form1.DBNavigator1.DataSource:=DataSource1;
Form1.DBGrid1.DataSource:=DataSource1;
IBQuery1.Database:=IBDataBase1;
IBQuery1.DataSource:=DataSource1; |
Jusqu'à là, tout fonctionne parfaitement.
Je veux faire ensuite du tri sur cette base de données. Pour cela (et surtout pour ne pas prendre de risque, car je suis vraiment novice en base de données), j'ai rajouté les composants suivants :
IBQuery5, Datasource5, IBTable5, IBTransaction5, IBDatabase5, DBGrid5, DBnavigator5
J'ai configuré le tout comme çà (suite à un précédent post):
Code:
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
| IBDataBase5.Params.Clear;
with IBDatabase5 do begin
DatabaseName:=Nom_Base;
Params.Add('user_name='MaBase');
Params.Add('password='MonMotdePasse');
Params.Add('PAGE_SIZE 4096');
LoginPrompt:=False;
DefaultTransaction:=IBTransaction5;
end;
IBTransaction5.defaultDatabase:=IBDatabase5;
IBDatabase5.connected:=True;
IBTransaction5.active:=True;
with IBTable5 do begin
database:=IBDatabase5;
TableName:='MaTable';
end;
DataSource5.DataSet:=IBQuery5;
IBTable5.Active:=True;
DBGrid5.DataSource:=DataSource5;
IBQuery5.Database:=IBDataBase5; |
Je fais ensuite mon tri de la manière suivante
Code:
1 2 3 4 5 6
| procedure TForm1.Button1Click(Sender: TObject);
begin
Form3.IBQuery5.Close;
IBQuery5.SQL.Text := 'SELECT * FROM MaTable where CAT = 5 ' ;
IBQuery5.Open;
end; |
La requête s"exécute parfaitement et le DBGrid5 m'affiche bien les enregistrements pour lesquels la condition 'CAT=5' est vraie.
Mais là où ça se gâte, c'est si je rajoute dans la base un (ou plusieurs) enregistrement (dans lequel CAT=5), et que je réexécute ma requête précédente, alors dans ce cas les enregistrements que j'ai ajoutés ne sont pas affichés dans le DBGRID5. L'affichage du DBGrid5 n'est donc pas mis à jour.
Si je quitte l'application et que je la relance, et si je réexécute ma requête, alors je retrouve tous les enregistrements attendus.
Qu'ai-je oublié ?
Merci de votre aide, car je ne vois vraiment pas.
JL