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