これは、多少の違いはありますが、マスター/ディテールの状況にいくぶん似ています。
問題: リンクする必要がある 2 つの独立した MS Access データベース ファイル (.mdb) があります。
- 最初のデータベースには、部品番号、部品の詳細、ベンダーなどがあります...
- 2 番目のデータベースにはテーブル名として個々の部品番号があり、それらのテーブル内にはその部品を使用する顧客と製品番号があります。
主に、グリッド内のセル データが変更/更新されると、その場でテーブル名を変更する必要があるため、適切なマスター/詳細リンク方法が見つかりませんでした。
そこで、次のような別のリンク方法を思いつきました。そして、これがそれらをリンクするための良い方法であるとは完全には確信していません.
{DBGrid1 は ADOTable1 の値を表示します} {DBGrid2 は ADOTable2 の値を表示しますが、そのテーブル名は変更されます}
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var PartTableName: string;
begin
if DBGrid1.Fields[2].IsNull then exit
else
begin
if ADOTable2.active then ADOTable2.Close;
PartTableName:= DBGrid1.Fields[2].AsString;
while pos('-',TableString) > 0 do
PartTableName[pos('-',PartTableName)] := '_';
ADOTable2.TableName:= PartTableName; //obtained from cell click in DBGrid1
ADOTable2.Open;
end;
end;
DBGrid2 は、DBGrid1 でクリックされた部品番号を使用する顧客と製品を表示します。
これを行うためのより良い方法があるはずですか?このリンク方法は私には粗雑に思えます。これも OnDataChange メソッドに入れたいのですが、うまくいかないようです。