首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TDataset和TMemDataset

TDataset和TMemDataset
EN

Stack Overflow用户
提问于 2011-11-20 15:43:28
回答 1查看 2K关注 0票数 3

我需要迭代一些MySQL查询,并将它们保存在一个TMemDataset数组中。

代码语言:javascript
复制
MemDataset1.CopyFromDataset(ZQuery1,True); 

然而,每次查询更改时,所有以前的TMemDataset都会被更改为包含新值(我猜是因为它们是“数据感知组件”)。如果我用ZQuery1.Free去掉了ZQuery1,那么所有数据都会消失。我该如何避免这种情况呢?

我使用的是FreePascal,但我打赌Delphi的解决方案也会适用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-20 23:13:16

解决方案是拥有一个ZQuery数组和一个MemDataSet数组

代码语言:javascript
复制
type
  TZQueries = array of TZQuery;
  TMemDataSets = array of TMemDataset;

procedure Test;
var
  ZQueries: TZQueries;
  MemDatasets: TMemDatasets;
  i: integer;
begin
  try
    SetLength(ZQueries,10);
    SetLength(MemDatasets,10);
    for i:= Low(ZQueries) to high(ZQueries) do begin
      ZQueries[i]:= TZQuery.Create;
      ZQueries[i].Connection:= ZConnection1;
      ZQueries[i].SQL.Text:= QueryTextFromSomewhere
    end; {for i} 
    for i:= Low(MemDatasets) to High(MemDatasets) do begin
      MemDatasets[i]:= TMemDataset.Create;
      ZQueries[i].Open;
      MemDatasets[i].CopyFromDataset(ZQueries[i],True);
    end; {for i}
    ....
      code to process the memdatasets
    ....
  finally
    for i = Low(ZQueries) to High(ZQueries) do begin
      ZQueries[i].Free;
    end; {for i}
    for i = Low(MemDatasets) to High(MemDatasets) do begin
      MemDatasets[i].Free;
    end; {for i}
  end; {tryf}
end;

这样的东西应该可以工作,因为现在在查询和memdataset之间不再有混淆。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8200136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档