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 :Jusqu'à là, tout fonctionne parfaitement.
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;
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):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
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;La requête s"exécute parfaitement et le DBGrid5 m'affiche bien les enregistrements pour lesquels la condition 'CAT=5' est vraie.
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;
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
Partager