2

これは、次のことを行うための最良の方法は何かに常に悩まされてきました...

フォームに2つのテーブル/グリッドがあり、2番目のテーブル/グリッドが最初のテーブル/グリッドによってフィルタリングされている場合、単純な1対多のデー​​タベースを使用します。

フィルタ コードを配置するのに最適な場所は次の
とおりです。

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

AfterScroll はほとんどの場合機能しているようですが、投稿後などの一部のイベントでは発生しません。通常、フィルターの更新を行い、必要と思われる場所に配置する手順があります。

しかし、もっと良い方法があるかどうか疑問に思っていました.これは単にデルフィが知っておくべきもののようです...

私はそれが重要だとは思いませんが、Delphi7とNexusDB1を使用しています

4

1 に答える 1

4

「多」側でMasterSourceおよびマスターフィールドのプロパティを設定する必要があります。

これはマスター - 詳細関係と呼ばれ、テーブル間のこの関係シップを作成する方法については、NexusDB のヘルプを確認する必要があります。

テーブルがインデックスをサポートしている場合は、 CustomerIDにインデックスを作成し、SetRange()メソッドも使用できます。

Filter を設定する方法は、最も遅い方法です。

于 2009-01-21T00:01:29.070 に答える