1

私はスタッフ メンバーを記録するデータベース (Access .MDB ファイルに保持) を持っており、休暇、病気、トレーニング コース、開始日と終了日、失われた生産時間の時間などを記録しています。

次に、dbgrid を「マスター」ADO クエリにバインドします。このクエリは、日付範囲、部門、名前の検索文字列の選択された基準を満たすすべてのスタッフを検索し、失われた生産時間の時間を合計します。

不在レコードを含む「詳細」ADO テーブルにバインドされた別の dbgrid があります。

望ましい効果は、マスター レコードで選択された行に一致する不在テーブルのレコードのみを詳細 dbgrid に含めることです (「マスター」スタッフ テーブルと「詳細」休暇テーブルの両方に、共通の EmployeeID フィールドが含まれます)。

オンザフライで作成された ADO クエリを使用してこれを実現できますが、ユーザーが別のマスター スタッフ レコードに移動するたびにクエリを変更します。詳細な DBGrid を、欠勤レコードを削除、更新、および追加する主な方法として使用したいと考えていました。 、グリッドルックアップで完了。そのため、ユーザーはそのタイプのコードを覚えなくてもレコード タイプを選択できます。

また、この詳細グリッドの変更をマスター dbgrid の集計に反映させたいと考えています。

MasterDetail として Staff Query にリンクされた詳細 ADOTable を使用してこれを達成しましたが、フィルターを True に設定し、コードで onfilterevent を制御する必要があります。しかし、データベースのサイズが大きくなるにつれて、これはますます遅くなります。

このパフォーマンスを改善するためにできることはありますか? それとも、詳細 dbgrid を純粋に読み取り専用にし、すべての不在レコードを別のフォームまたはパネルから入力する必要がありますか?

4

1 に答える 1

1

テーブルを別のデータセットの詳細にする 方法の詳細

ADOTable2.MasterSource := DataSource1;
ADOTable2.MasterFields := 'EmployeeID';


また、この詳細グリッドの変更をマスターdbgridの要約に反映させたいと思います。
詳細テーブルを編集して変更を投稿した後、AfterPostイベントを使用して要約を再計算できます。

于 2011-04-14T16:03:27.763 に答える