起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 224|回复: 3

[分享]数据集和数据集代理**

[复制链接]
发表于 2007-12-6 13:06:32 | 显示全部楼层 |阅读模式
数据集代理TDataSetBroker是通过指定信息代理,指定数据集ID来代理这个数据集的
数据源TDataSource是通过直接用数据集对象对它的DataSet属性赋值代理这个数据集的
数据集可以是在信息中,通过数据集ID来访问,也可以不在信息中
回复

使用道具 举报

 楼主| 发表于 2007-12-6 13:07:28 | 显示全部楼层

根据数据集的URL创建数据集

通过数据集的URL,创建信息中的数据集
function TMainForm.GetDataSetByURL(AURL: String): TDataSet;
var
  lBizClassURL: TBizClassURL;
begin
  //根据给定的BizURL,创建数据集
  lBizClassURL := TBizClassURL.Create;
  lBizClassURL.BizURL.URL := AURL;
  Result := Context.GetItem(lBizClassURL.BizURL) as TDataSet;
  lBizClassURL.Free;
end;

procedure TMainForm.Button4Click(Sender: TObject);
var
  lDataSet: TDataSet;
begin
  //根据给定的BizURL,创建数据集
  lDataSet := GetDataSetByURL('Biz:\LZ\DLKJXX.Info\BZSJJ1.DataSet');
  lDataSet.Open;
  Dialogs.ShowMessage(lDataSet.Fields[0].AsString);
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-6 13:11:14 | 显示全部楼层

运行期在信息中创建一个数据集

运行期创建的数据集,也可以创建在信息中,通过数据集ID来访问
function TMainForm.CreateDataSetInInfo(AInfo: TInfo; AID, AConnectionStr, ASQL: String): TSQLDataSet;
begin
  Result := TSQLDataSet.Create(AInfo);
  Result.ID := AID;
  Result.ConnectionString := 'DATABASEURL='+AConnectionStr;
  Result.Connection.Transaction := AInfo.Transaction;
  Result.SQL.Text := ASQL;
  Result.Open;
  //注意,这句必须有,否则Info.DataSetByID会报错
  AInfo.RefreshList;
end;

procedure TMainForm.Button6Click(Sender: TObject);
var
  lDataSet: TSQLDataSet;
  lInfo: TInfo;
  lID: String;
begin
  lID := 'DataSet'+SysUtils.IntToStr(Random(1000));
  lInfo := GetInfoByURL('Biz:\LZ\DLKJXX.Info');
  lDataSet := CreateDataSetInInfo(lInfo, lID, 'Biz:\OPERATION\OPERATIONDB.DATABASE', 'SELECT * FROM CRM_CUSTOMER');
  lDataSet.Open;
  InfoBroker1.AutoBroker := False;
  InfoBroker1.Info := lInfo;
  DataSetBroker1.InfoBroker := InfoBroker1;
  DataSetBroker1.DataSetID := lID;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-6 13:17:46 | 显示全部楼层

创建数据集,用TDataSource来代理

function TMainForm.CreateDataSet(AConnectionStr, ASQL: String): TSQLDataSet;
begin
  Result := TSQLDataSet.Create(Self);
  Result.ConnectionString := 'DATABASEURL='+AConnectionStr;
  Result.SQL.Text := ASQL;
  Result.Open;
end;

procedure TMainForm.Button7Click(Sender: TObject);
var
  lDataSet: TSQLDataSet;
begin
  lDataSet := CreateDataSet('Biz:\OPERATION\OPERATIONDB.DATABASE', 'SELECT * FROM CRM_CUSTOMER');
  DataSource1.DataSet := lDataSet;
  DataGrid1.DataSource := DataSource1;
end;
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-1 17:43 , Processed in 0.039104 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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