2009-01-20 7 views
2

Ce qui m'a toujours mis sur écoute à ce qui est la meilleure façon de faire ce qui suit ...Dataset Mise à jour Emplacement du filtre

avec un simple à de nombreux db, quand vous avez 2 tables/grilles sur un formulaire et le 2ème un filtré par le premier.

où est le meilleur endroit pour mettre le code de filtre
à savoir:

procedure TForm1.tblCustormersAfterScroll(DataSet: TDataSet); 
begin 
    if tblCustormersCustormerID.AsString <> '' then 
    begin 
    tblCustormersThings.Filter := 'CustormerID = ' + tblCustormersCustormerID.AsString; 
    tblCustormersThings.Filtered := true; 
    end; 
end; 

AfterScroll semble fonctionner la plupart du temps, mais donst se tiré sur certains événements, par exemple après la publication. Normalement, j'aurais une procédure pour faire la mise à jour du filtre et la mettre là où elle me semble nécessaire.

Mais je me demandais s'il y a une meilleure façon, cela semble simplement delphi stuff devrait savoir sur ...

Je ne pense pas que cela importe, mais im Utilisation Delphi7 et NexusDB1

Répondre

4

Vous devez définir MasterSource et les propriétés des champs maîtres sur "plusieurs" côté. Il est appelé relation maître-détail, et vous devriez vérifier avec l'aide de NexusDB pour trouver une façon de créer cette relation entre les tables.

Si votre table prend en charge les index, que vous pouvez créer un index sur CustomerID et également utiliser SetRange() méthode.

La façon dont vous définissez le filtre est la plus lente.

+0

Je savais qu'il devait y avoir un meilleur moyen, les tables Nexusdb sont descendues de Tdataset, donc la MasterSource et MasterFields où là, j'ai juste dû réparer certains des index. Je vous remercie –

Questions connexes