我正在自学Delphi的数据库架构和[MS-Access] SQL。我理解如何将表和DBGrids连接在一起,享受网格中的更改如何自动编辑,插入,追加,更新,发布等等到基础表。
我也理解如何打开或执行[ADO]查询并在网格中查看结果数据。
通过编辑显示查询结果的DBGrid来更改表格会让我更加模糊。在我的在线搜索中,似乎我发现编辑查询结果的所有示例都涉及的查询不比“SELECT ... FROM oneTable”复杂。看起来DBGrids只适用于单个表或显示查询结果。
就我自己而言,当我尝试处理涉及两个或更多表的查询结果时,我总会得到某种错误(键列信息不足,缺少参数或其他消息)。我觉得我缺少一些基本的东西,或者DBGrids很少用于编辑除个别表之外的任何东西。你有什么建议我可以去了解我缺少的东西吗?最常建议的链接(如delphi.about.com上的db课程)不能解决问题。
编辑:Remou的回答帮助我解释了我一直遇到的问题。因此,我将稍微通过概括超出MS-Access数据库来编辑我的问题。可以通过其他流行数据库中的DBGrids更新复杂查询吗?答案 0 :(得分:1)
我无法回答Delphi,但在MS Access中,查询需要正确构建并包含键列,如果您希望它们可更新的话。对于大多数数据库来说这是常见的,我怀疑这个问题比Dephi本身更容易引起问题。
更多信息:
答案 1 :(得分:0)
如果使用(ADO)DataSet > Provider > ClientDataSet
布局,那么您只需要实现Provider.OnGetTabelName
事件。
答案 2 :(得分:0)
通常我在update sql中使用了这个语句: 更新where field =;
是的,在我的数据库设计中,每个表必须有一个主键,所以我可以完全更新一行。 这个组合(表与主键+更新sql)多年来一直是我的魅力。 直到现在。
最好的关注 irawan