不确定这是否明智,所以在这里把问题抛到一边。 这有点非常类似于主细节情况,但有一些变化。
这有点令人困惑,但与我无关。
问题:我有两个独立的MS Access数据库文件(.mdb),需要链接。
我找不到合适的主 - 细节链接方法,主要是因为当网格中的单元格数据更改/更新时,表名必须随时更改。
所以,我想出了另一种链接方法,如下所示。我并不完全确定这是链接它们的好方法。
{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方法中使用它,但似乎不起作用。
答案 0 :(得分:3)
您可以在Access中进行设置。这是一个比在Delphi中更强大的解决方案。
在您的Access版本中查找链接表管理器,它允许您将另一个数据库中的表链接到您拥有的表中。然后,您可以使用delphi访问单个mdb并获取所有表。
答案 1 :(得分:2)
答案 2 :(得分:0)
我建议您考虑使用ADO组件来过滤表格的内容,而不是重新查询。这大致相当于主 - 细节布置,并且具有仅执行“内存”操作的优点,并且每次“主”行改变时不会命中数据库。 (在每个主行更改时,只需更改子表上的过滤条件)