2

在我的表格中,我已经TADOQuery,TDataSetProvider,TClientDataSet,TDataSource,TDBGrid链接了。

AdoQuery 使用 SQL Server 视图查询数据

AdoQuery.SQL

Select * from vu_Name where fld=:fldval

Vu_名称:

SELECT * FROM  t1 INNER JOIN t2 ON t2.fld1 = t2.fld1

在我的 dbgrid 中,只有表 t1 中的列是可编辑的。(只有 t1 需要更新)

将更新应用回服务器的可能(最快)方法是什么? ClientDataSet.ApplyUpdates(0); // not working

谢谢你。

4

1 回答 1

3

TDataSetProvider 有一个事件 OnGetTableName,您应该在其中将 TableName 参数设置为 t1。因此,提供者知道在哪里存储更改的值。

您必须确保仅更改 t1 的字段,因为 TDataSetProvider 只会更新一个表。当然,对于 ApplyUpdates 的不同调用,您可以使用不同的表名。您可以在 DataSet 参数中找到更改的字段。

如果你想更新多个表,你必须实现 OnUpdateData,它给你所有的自由和所有的责任。

于 2013-02-11T08:22:30.030 回答