可以通过DBGrids更新复杂查询吗?

时间:2012-07-01 20:02:35

标签: database delphi ms-access

我正在自学Delphi的数据库架构和[MS-Access] SQL。我理解如何将表和DBGrids连接在一起,享受网格中的更改如何自动编辑,插入,追加,更新,发布等等到基础表。

我也理解如何打开或执行[ADO]查询并在网格中查看结果数据。

通过编辑显示查询结果的DBGrid来更改表格会让我更加模糊。在我的在线搜索中,似乎我发现编辑查询结果的所有示例都涉及的查询不比“SELECT ... FROM oneTable”复杂。看起来DBGrids只适用于单个表或显示查询结果。

就我自己而言,当我尝试处理涉及两个或更多表的查询结果时,我总会得到某种错误(键列信息不足,缺少参数或其他消息)。我觉得我缺少一些基本的东西,或者DBGrids很少用于编辑除个别表之外的任何东西。你有什么建议我可以去了解我缺少的东西吗?最常建议的链接(如delphi.about.com上的db课程)不能解决问题。

编辑:Remou的回答帮助我解释了我一直遇到的问题。因此,我将稍微通过概括超出MS-Access数据库来编辑我的问题。可以通过其他流行数据库中的DBGrids更新复杂查询吗?

3 个答案:

答案 0 :(得分:1)

我无法回答Delphi,但在MS Access中,查询需要正确构建并包含键列,如果您希望它们可更新的话。对于大多数数据库来说这是常见的,我怀疑这个问题比Dephi本身更容易引起问题。

更多信息:

答案 1 :(得分:0)

如果使用(ADO)DataSet > Provider > ClientDataSet布局,那么您只需要实现Provider.OnGetTabelName事件。

答案 2 :(得分:0)

通常我在update sql中使用了这个语句: 更新where field =;

是的,在我的数据库设计中,每个表必须有一个主键,所以我可以完全更新一行。 这个组合(表与主键+更新sql)多年来一直是我的魅力。 直到现在。

最好的关注 irawan