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 : 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
 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 : 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
 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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