我有一个带有 dbgrid 和 sqlquery 组件的表单。我正在尝试用 sqlquery 填充 dbgrid。当我这样做时,我收到消息“单向数据集不允许操作”。我不想使用客户端数据集,因为我不需要数据的“本地”副本,我想直接读取和显示数据。这怎么办?
文档明确指出(强调已添加):
TSQLQuery 是一个单向数据集。与其他数据集不同,单向数据集不会在内存中缓冲多个记录。因此,您只能使用 First 和 Next 方法 进行导航。没有内置编辑支持:您只能通过显式创建 SQL UPDATE 命令或使用提供程序将数据集连接到客户端数据集来编辑 SQL 查询中的数据。
因为没有多条记录的缓冲,所以除了向前之外不能向任何方向移动,这意味着
DBGrid
无法显示多行或支持滚动。
(事实上,根据
DBExpress 数据集的类型的文档,所有
DBExpress
组件都是单向的。)
您必须使用
TClientDataSet
或从使用 DBExpress
更改为其他访问数据的方法,例如 ADO
,或者使用 TDBGrid
以外的其他方式显示数据(例如 TStringGrid
)并实现您自己的内部存储。但是,如果您要检索的数据量可以在内存中进行管理,则 TClientDataSet
不一定是磁盘文件;所有数据都可以保留在那里,而不是“本地副本”(“内存数据集”)。
要使用网格,您需要这些组件...... SQL查询 数据集提供者 客户端数据集 数据源 数据库网格