Testez ce code

cs_apz Messages postés 281 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 11 avril 2013 - 13 sept. 2002 à 20:59
cs_apz Messages postés 281 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 11 avril 2013 - 14 sept. 2002 à 21:21
salut a tous,

1/- je veux afficher les enregistrements seulement filtrés dans un dbgrid mais le dbgrid m'affiche toujours tout les enregistrements de la base.

le filtre est excuter selon les numeros des enregistrements (RECNO) et non pas sur le contenu des champs de la table.

j'ai essayer avec ApplyRange mais ca n'a pas marche du tout.

2/- un autre probleme le pointeur ne se positionne pas sur le dernier enregistrement, il reste toujours sur le premier enregistrement

alors comment le posiotionner sue l'enregistrement voulu ?
code

--------------------------------------------------------------------------------

var //public
RECN1, RECN2 : Longint;
.....
procedure TForm1.Button1Click(Sender: TObject);
var
allrec :longint;
how_much:longint;
i : integer;
begin
how_much:=3; //conbien de recoerd dans un filtre
RecN1:=1;
RecN2:=RecN1+how_much;
Tab.Filtered:=true; // Voir l'evenement OnFilterRecord de TAB
allrec:=kiosque.RecordCount;
label1.Caption:=IntToStr(allrec);
While RecN1<=allrec do begin

DBGrid1.DataSource:=DS;
Showmessage('les : '+IntToStr(RECN1)+' à '+IntToStr(RECN2)+' Enreg. de TAB.DB');

DBGrid1.DataSource:=NIL;

RecN1:=RecN2+1;
RecN2:=RecN1+how_much;

Showmessage('enreg. actuel, RECNO:='+IntToStr(DS.Dataset.RecNo));
end;
TAB.Filtered:=false;
end;

procedure TForm1.TABFilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin

Accept:=false;

IF (ds.DataSet.RecNo>=RecN1)and(ds.DataSet.RecNo<=RecN2)then

Accept:=true;


end;

--------------------------------------------------------------------------------



j'aimerais bien que qlq teste pour moi ce code.

2 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
13 sept. 2002 à 23:10
procedure TForm1.TABFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept:= (DataSet.RecNo>=RecN1) and(DataSet.RecNo<=RecN2);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
RecN1:=1;
RecN2:=RecN1+3;
Tab.Filtered := True;
Tab.Last;
end;

Mais quel est l'intérêt d'une telle pratique ?

May Delphi be with you.
Delphi advanced
0
cs_apz Messages postés 281 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 11 avril 2013
14 sept. 2002 à 21:21
en fait, j'ai besoin pour chaque 5 records (par exemple) de la table maitre pour appliquer une requete et puis generer ensuite imprimer un etat.

mais ca n'a pas marché avec les numeros d'enregistrements, alors peut on utlisé gotobookmark pour pointer l'interval des champs dans le DBGrid 'SelectedRows' et depuis applique notre requete ?
0
Rejoignez-nous