Delphi 2010 没有客户端数据集的dbgrid

Delphi 2010 没有客户端数据集的dbgrid,delphi-2010,dbexpress,delphi,Delphi 2010,Dbexpress,Delphi,我有一个带有dbgrid和sqlquery组件的表单。我试图用sqlquery填充dbgrid。当我这样做时,我会收到消息“不允许对单向数据集进行操作”。我不希望使用客户端数据集,因为我不希望数据的“本地”副本,我希望直接读取和显示数据。如何做到这一点?清楚地说明(增加强调): TSQLQuery是一个单向数据集。与其他数据集不同,单向数据集不会在内存中缓冲多个记录。因此,您只能使用第一个和下一个方法进行导航。没有内置的编辑支持:您只能通过显式创建SQL UPDATE命令或使用提供程序将数据集连

我有一个带有dbgrid和sqlquery组件的表单。我试图用sqlquery填充dbgrid。当我这样做时,我会收到消息“不允许对单向数据集进行操作”。我不希望使用客户端数据集,因为我不希望数据的“本地”副本,我希望直接读取和显示数据。如何做到这一点?

清楚地说明(增加强调):

TSQLQuery是一个单向数据集。与其他数据集不同,单向数据集不会在内存中缓冲多个记录。因此,您只能使用第一个和下一个方法进行导航。没有内置的编辑支持:您只能通过显式创建SQL UPDATE命令或使用提供程序将数据集连接到客户端数据集来编辑SQL查询中的数据

因为没有对多条记录进行缓冲,所以除了向前,您不能在任何方向移动,这意味着
DBGrid
不能显示多行或支持滚动

(事实上,根据上的文档,所有的
DBExpress
组件都是单向的。)

您必须使用
TClientDataSet
,或者从使用
DBExpress
改为使用其他方法访问数据,例如
ADO
,或者使用
TDBGrid
以外的其他方法显示数据(例如
TStringGrid
),并实现您自己的内部存储。但是,
TClientDataSet
不必是磁盘文件,前提是要检索的数据量在内存中是可管理的;所有数据都可以保留在那里,而不是“本地副本”(即“内存数据集”)