没有客户端数据集的dbgrid

问题描述 投票:0回答:2

我有一个带有 dbgrid 和 sqlquery 组件的表单。我正在尝试用 sqlquery 填充 dbgrid。当我这样做时,我收到消息“单向数据集不允许操作”。我不想使用客户端数据集,因为我不需要数据的“本地”副本,我想直接读取和显示数据。这怎么办?

delphi-2010 dbexpress delphi
2个回答
10
投票

文档明确指出(强调已添加):

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

因为没有多条记录的缓冲,所以除了向前之外不能向任何方向移动,这意味着

DBGrid
无法显示多行或支持滚动。

(事实上,根据

DBExpress 数据集的类型
的文档,所有DBExpress组件都是单向的。)

您必须使用

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


0
投票

要使用网格,您需要这些组件...... SQL查询 数据集提供者 客户端数据集 数据源 数据库网格

© www.soinside.com 2019 - 2024. All rights reserved.