起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 253|回复: 10

【结贴】代码创建数据集错误**

[复制链接]
发表于 2008-7-24 10:11:20 | 显示全部楼层 |阅读模式
http://bbs.justep.com/forum.php?mod=viewthread&tid=24608 还存在问题,如链接的帖子所述,不同的datachart中的series需要使用不同的数据集。
问题一 是否可以使用不同的数据集,但使用一个的datasetbroker呢?代码中的函数创建数据集后把数据集的id传出,循环绑定到datasetbroker中,是否可以实现。
问题二 我在窗体中使用代码根据传入的参数动态创建数据集时报错,代码如下:
function  TTBZS1.createdataset(datacount:Integer):TStrings;  
var tmpDataset:array of TSQLDataSet;
var i:Integer;
var FIELD_ZBSJXXBZSJJ_NY: TExprCalcField;
var arydataset:TStrings;
begin
  arydataset:=TStringList.Create;

  for i:=0 to datacount do
  begin
   tmpDataset:=TSQLDataSet.Create(Self);//此处报错,使用nil也不行
       try
       tmpdataset.ID:='tmpdataset'+i.ToString;
       tmpdataset.ConnectionString:='dabaseurl=Biz:\INTEGRATIVEPLAN\IPDB.Database';
       tmpdataset.SQL.Text:='SELECT * FROM ZBSJXXB ORDER BY ZBSJXXB.ND, ZBSJXXB.YD';
       //准备创建自定义列,代码是否正确
FIELD_ZBSJXXBZSJJ_NY:=TExprCalcField.Create(tmpDataset);
       FIELD_ZBSJXXBZSJJ_NY.Expression.Text:='ND'+'-'+'YD';

       tmpdataset.Open;
       arydataset.Add(tmpdataset.ID);
       finally
       tmpDataset.Free;
      end;
  end;
  result:=arydataset;
end;

创建数据集时报错,我看其他的贴子说是创建时需要环境,在窗体中创建是否可以。代码该如何写啊?
问题三  创建数据集时需要使用一个自定义字段,代码该如何写,如代码中所写是否正确?
回复

使用道具 举报

发表于 2008-7-24 10:23:16 | 显示全部楼层
1、不行
2、3:不要代码创建数据集,这样效率并不高
回复 支持 反对

使用道具 举报

发表于 2008-7-24 10:25:18 | 显示全部楼层
先前那个是结掉,还是合并?请注意及时回馈。
问题1   series[I].DataSource:=DataSetBrokersj;
    所以公用一个肯定不行。
问题2.TSQLDataSet需要一个环境。什么是环境请参考
http://bbs.justep.com/forum.php? ... hlight=%B7%D6%CF%ED
如果你这个函数在一个功能窗体里,可以直接写tmpDataset:=TSQLDataSet.Create(context)
问题3、您可以参考论坛,并测试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-24 11:47:54 | 显示全部楼层
合并过来把!
问题1  是不是需要在函数中创建完数据集后再创建数据集代理啊!
问题2  改成tmpDataset:=TSQLDataSet.Create(context)后还是报错,"不能隐式转换 Tcontext 到 Tcomponent "

2楼的说不要动态创建数据集,可有什么好的办法没?
回复 支持 反对

使用道具 举报

发表于 2008-7-24 13:52:23 | 显示全部楼层
在业务信息里创建好需要的数据集就可以了
在功能上,放几个对应的DatasetBroker,供TDataChart访问
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-24 14:03:36 | 显示全部楼层
问题是不知道要创建几个数据集,数据集的个数是动态的,不能确定创建几个
回复 支持 反对

使用道具 举报

发表于 2008-7-24 14:35:32 | 显示全部楼层
var
   i:integer;
    a:tsqldataset;

begin
  a:=tsqldataset.Create(self);
回复 支持 反对

使用道具 举报

发表于 2008-7-24 15:27:05 | 显示全部楼层
setLength(tmpDataSet,DataCount);
for i:=0 to DataCount-1 do
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-25 10:55:01 | 显示全部楼层
再问下,表达式自定义字段建立的代码是这样创建吗
FIELD_ZBSJXXBZSJJ_NY:=TExprCalcField.Create(tmpdataset);
       FIELD_ZBSJXXBZSJJ_NY.Expression.Text:='ND'+'-'+'YD';
       FIELD_ZBSJXXBZSJJ_NY.DataSet:=tmpdataset;
       FIELD_ZBSJXXBZSJJ_NY.ID:='NY';
回复 支持 反对

使用道具 举报

发表于 2008-7-25 11:29:31 | 显示全部楼层
楼主试试,看着没错
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-19 12:54 , Processed in 0.042629 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表