Bonjour,
Je travaille avec Lazarus sur un projet perso. Je souhaite remplir un tableau bidemensionnel avec des données récupérées depuis un objet TDBF.
Voici ma procédure :
Le programme se compile sans erreur, mais à l'exécution, si je saisis du texte dans le composant "search" et que je clique sur le bouton "btn_search" le code parcours bien les éléments de mon TDBF (DataSet), dès qu'il rentre dans une condition if, j'ai une erreur :
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 procedure Tf_menu.btn_searchClick(Sender: TObject); var a_id_dem: Array of Array[1..2] of integer; nb_dem:Integer; i:Integer; filtre_dem:String; begin if Length(search.Text) > 2 then begin nb_dem := 1; grid_demande.DataSource.DataSet.First; while not grid_demande.DataSource.DataSet.EOF do begin if pos( uppercase( search.Text ), uppercase( grid_demande.DataSource.DataSet.FieldByName('sujet').AsString ) ) > 0 then begin a_id_dem[nb_dem][1] := grid_demande.DataSource.DataSet.FieldByName('annee').AsInteger; a_id_dem[nb_dem][2] := grid_demande.DataSource.DataSet.FieldByName('id').AsInteger; nb_dem := nb_dem + 1; end; if pos( uppercase( search.Text ), uppercase( grid_demande.DataSource.DataSet.FieldByName('descriptio').AsString ) ) > 0 then begin a_id_dem[nb_dem][1] := grid_demande.DataSource.DataSet.FieldByName('annee').AsInteger; a_id_dem[nb_dem][2] := grid_demande.DataSource.DataSet.FieldByName('id').AsInteger; nb_dem := nb_dem + 1; end; grid_demande.DataSource.DataSet.Next; end; filtre_dem := ''; For i := 1 to nb_dem do begin filtre_dem := filtre_dem + '(annee='+String(a_id_dem[i,1])+' and id='+String(a_id_dem[i,1])+') or '; end; grid_demande.DataSource.DataSet.Filtered := false; grid_demande.DataSource.DataSet.Filter := filtre_dem; grid_demande.DataSource.DataSet.Filtered := true; end else showmessage('Veuillez saisir un texte à chercher (3 caractères minimum)'); end;
L'erreur point sur la ligne où j'affecte la valeur au tableau ... mais sans plus de détail je n'arrive pas à voir d'où vient mon erreur ...
Une idée ?
D'avance merci![]()
Partager