NET中delphi类数据表中数据集记录的操作

NET中delphi类数据表中数据集记录的操作,delphi,informix,Delphi,Informix,我有一个场景,在这个场景中,我必须根据查询获取一些记录,然后操纵每个记录并显示每个记录的消息。在.NET中,我可以使用datatable和“dt.Rows”中的For Each来完成这项工作。但是我如何在delphi中实现这一点呢。我的后端数据库是informix,我使用的是Delphi2010版本。我必须使用溴化二苯醚。如果我能得到一些示例代码就更好了。在Delphi数据集中(任何类型)处理记录的标准方法是使用如下代码 DataSet.First; while not DataSet.eof

我有一个场景,在这个场景中,我必须根据查询获取一些记录,然后操纵每个记录并显示每个记录的消息。在.NET中,我可以使用datatable和“dt.Rows”中的For Each来完成这项工作。但是我如何在delphi中实现这一点呢。我的后端数据库是informix,我使用的是Delphi2010版本。我必须使用溴化二苯醚。如果我能得到一些示例代码就更好了。

在Delphi数据集中(任何类型)处理记录的标准方法是使用如下代码

DataSet.First;
while not DataSet.eof do begin
   // process the current record here
   DataSet.Next;
end;
在此循环之前,您应该使用TDataSet.GetBookMark记录数据集光标以前所在的位置,并调用DisableControls

试着把这个环绕起来。。最后一个街区。在“最终”部分中,使用GotoBookmark恢复光标位置,然后调用FreeBookmark,最后调用EnableControls


您需要在OLH中查找所有这些内容。

下面的代码在数据集上迭代:

myDataset.Open; // here we open the dataset and load the records
while not myDataset.Eof do begin
  // here you put the code to work over the current record

  myDataset.Next;
end; // while not the last record
这是沿着数据集中包含的所有记录(从第一条记录到最后一条记录)进行迭代的标准且更安全的方法。如果需要倒退,则代码为:

myDataset.Open; // here we open the dataset and load the records
myDataset.Last; // here we move to the last record
while not myDataset.Bof do begin
  // here you put the code to work over the current record

  myDataset.Prior;
end; // while not the first record

每当我读到“我必须使用BDE”这句话时,我的心脏就停止跳动。正如你可能看到的,BDE是一种陈旧过时的技术,应该禁止在新的Delphi版本中使用。。。仅供参考,最近的Delphi版本有一个Informix的本地驱动程序。这非常有帮助,我会记住这一点。但情况是这样的,我必须:(使用BDE相当于使用Windows 98。只是没有做到。另一个答案是关于使用
EnableControls
DisableControls
。为了使代码更简单,这确实是一个很好的建议,我忽略了。请查看帮助以了解这两种方法的详细信息。您能告诉我如何将您的代码用于TC吗lientDataSet我随身携带TDataSource和TQuery组件?如何获取TCLientDataSet中的数据。或者我是否可以使用其他数据集?@AkshayJamwal:此代码适用于任何数据集,包括
TQuery
。为了使用
TCLientDataSet
,我建议您花费一些时间来研究它。关于TCLientDataSet的信息还有很多你需要学习的东西比评论所能承载的要多。但是,我告诉你,这些时间会得到更好的代码、更好的应用程序和更少的后顾之忧的回报。@AkshayJamwal你关于如何将数据获取到客户端数据集的问题是一个单独的问题,不应该在对答案的评论中被问到。你应该把它作为一个单独的问题。@AkshayJam沃尔:是的,有,我只是把它格式化,让它脱颖而出。