起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: allentime

【结贴】业务参数赋值

[复制链接]
发表于 2009-8-19 16:25:57 | 显示全部楼层
你把这个str1拼到那个sql语句里面了么?
sql.text跟中的sql语句内容是什么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-19 16:49:05 | 显示全部楼层
回10楼:设置成9楼的条件后,过滤后就不出数据了,返回的结果集是空的;
回11楼:通过str2 := TSQLDataSet(DataSetMain).GetLookupData('FMatType').LookupDef.SQL.Text;跟踪的sql语句还是带那个参数的,如何跟踪数据集发送到服务端的脚本?
回复 支持 反对

使用道具 举报

发表于 2009-8-19 17:05:09 | 显示全部楼层
10的意思是你在标准数据集做个用参数的过滤试试
看7楼的图片后面又给str1用你的那个参数赋值了吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-20 08:26:05 | 显示全部楼层
用标准数据集也是一样的,'''12.01'',''12.02'',''12.03'',''12.06'''这样的字符串就过滤不了数据了;
7楼的是给参数赋值后,取参数值了,将参数值赋给str1;
回复 支持 反对

使用道具 举报

发表于 2009-8-20 08:47:17 | 显示全部楼层
看看我6楼的代码,我用了是可以的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-20 08:58:04 | 显示全部楼层
我是把参数放到数据集的SQL语句中了,select * from sjb2   WHERE ZD1
in (&[Biz:\RZZLGLXT\GGYWCSZ.PARAMGROUP\FMatCodeGather.Param]);
执行的时候给这个参数赋值
回复 支持 反对

使用道具 举报

发表于 2009-8-20 09:02:03 | 显示全部楼层
不要这样使用,你先把参数取出来赋给字符串,然后用字符串去拼sql语句。

取参数值的方法
function TMainForm.GetParamValue: String;
var
  lParam: TBizParam;
  lBizURL: TBizURL;
begin
  lBizURL := TBizURL.Create;
  try
    lBizURL.URL := 'Biz:\OPERATION\CRMSPACE\YWCSZ1.ParamGroup';
    lParam := SystemUtils.TContextUtils.GetParam(Context, lBizURL, 'YWCS1');
    Result := Variants.VarToStr(lParam.Value);
  finally
    lBizURL.Free;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-20 09:47:26 | 显示全部楼层
我想要实现动态改变数据集字段A的查找引用属性中业务数据的查询条件,在查询语句中直接用参数作为条件,现在的情况是,给参数赋值‘B’没有问题,赋值’B‘,’C‘这样就过滤不了数据;直接将值放倒数据库中查询是没有问题的;
回复 支持 反对

使用道具 举报

发表于 2009-8-20 10:31:35 | 显示全部楼层
procedure TMainForm.Button2Click(Sender: TObject);
var s :string;
begin
s:=GetParamValue;
TSQLDataSet(DataSetBroker1.DataSet).close;
  TSQLDataSet(DataSetBroker1.DataSet).SQL.Text :='select * from sjb2   WHERE zd1 in ('+s+')';
  TSQLDataSet(DataSetBroker1.DataSet).open;
end;

procedure TMainForm.BizFormCreate(Sender: TObject);
begin
   SetParamValue('''a'',''b''');
end;


procedure TMainForm.SetParamValue(AValue: String);
var
  lParam: TBizParam;
  lBizURL: TBizURL;
  lContextCurrent: TContextCurrent;
begin
  lBizURL := TBizURL.Create;
  lContextCurrent := TContextCurrent.Create(Context);
  try
    lBizURL.URL := 'Biz:\OPERATION\CRMSPACE\YWCSZ1.ParamGroup\YWCS1.Param';
    lParam := lContextCurrent.GetParam(lBizURL);
    lParam.Value := AValue;
  finally
    lBizURL.Free;
  end;
end;

function TMainForm.GetParamValue: String;
var
  lParam: TBizParam;
  lBizURL: TBizURL;
begin
  lBizURL := TBizURL.Create;
  try
    lBizURL.URL := 'Biz:\OPERATION\CRMSPACE\YWCSZ1.ParamGroup';
    lParam := SystemUtils.TContextUtils.GetParam(Context, lBizURL, 'YWCS1');
    Result := Variants.VarToStr(lParam.Value);
  finally
    lBizURL.Free;
  end;
end;
这个是我测试的代码,你看看吧

查找数据集的过滤应该和标准数据集一样的我没有试验。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-20 11:10:09 | 显示全部楼层
结贴吧,3X!
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-17 20:28 , Processed in 0.048029 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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