質問
これは常に、次のことを行うための最良の方法は何かを悩ませてきました...
フォームに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を使用している
解決
<!> quot; many <!> quot;で MasterSource およびマスターフィールドプロパティを設定する必要があります。側。
これはマスター-詳細リレーションシップと呼ばれます。テーブル間のこのリレーションシップを作成する方法については、NexusDBヘルプで確認する必要があります。
テーブルがインデックスをサポートしている場合、 CustomerID でインデックスを作成し、 SetRange()メソッドも使用できます。
フィルタの設定方法は最も遅いものです。
所属していません StackOverflow