4

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

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

我对通过编辑显示查询结果的 DBGrid 来更改表感到更加困惑。在我的在线搜索中,我发现的所有编辑查询结果的示例似乎都涉及不比“SELECT ... FROM oneTable”更复杂的查询。似乎 DBGrids 仅用于处理单个表或显示查询结果。

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

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

4

3 回答 3

1

我无法回答 Delphi,但在 MS Access 中,如果您希望它们是可更新的,则需要正确构建查询并包括键列。这对于大多数数据库来说很常见,我怀疑问题的原因比与 Dephi 本身有关。

更多信息:

于 2012-07-02T19:30:37.403 回答
0

如果您使用(ADO)DataSet > Provider > ClientDataSet布局,那么您所要做的就是实现Provider.OnGetTabelName事件。

于 2012-07-02T05:06:19.010 回答
0

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

是的,在我的数据库设计中,每个表都必须有一个主键,这样我才能准确地更新一行。这种组合(带有主键的表 + 更新 sql)多年来对我来说就像一个魅力。实际上直到现在。

最好的尊重伊朗

于 2012-07-07T01:52:34.947 回答