Помогите с параметром tClientdataset передает '1,2,3' а не 1,2,3..

mr.Ulugbek
Дата: 26.04.2011 16:12:50
Привет всем
Помогите с параметром tClientdataset передает '1,2,3' а не 1,2,3..


for i:=0 to chklstReg.Items.Count-1 do
      begin
        if (chklstReg.Checked[i]=true) then
        begin         
          i1:=i1+','+TData(chklstReg.Items.Objects[i]).Id;
        end;
         if i1<>'' then i1:=Copy(i1,2,Length(i1));
      end;

//i1  имеет значение  1,2,3


with cdsTmp do
      begin
        Close;
        Params.Clear;
        Params.CreateParam(ftString,'reg', ptInput);
        Params.ParamByName('reg').Value :=i1;
        Csql:='select t.bank_id id, ''(''||t.bank_id||'')''||chr(149)||t.bank_name name' + #13#10 +
              '  from s_mfo t' + #13#10 +
              ' where t.bank_id in (select Branch' + #13#10 +
              '                       from SS_DBLink_branch' + #13#10 +
              '                      where region in (:reg)' + #13#10 +
              '                        and branch not like''09%'')' + #13#10 +
              '   and t.bank_id not like''09%'''+
              '   and t.act <> '' Z ''';
        LoadData(cdsTmp,cSql);

sql monitor показывает

'1,2,3' Запрос ничего возвращает.

Как правильно передать заранее благодарен
defecator
Дата: 26.04.2011 16:15:43
В качестве параметра передача данных в IN невозможна.

Пиши так:

......
              '                      where region in ('+i1+')' + #13#10 +
.....

И, как совет - всегда давай понятные имена переменным.
А то что это за лоховство с именем i1 ?
mr.Ulugbek
Дата: 26.04.2011 16:22:09
ок
хотелось с параметром реализовать

ftArray для чего нужен для таких случай?

Params.CreateParam(ftArray,'reg',ptUnknown);
        Params.ParamByName('reg').DataType:=ftArray;
        Params.ParamByName('reg').Value:=i1;
ошибку дает
type of object must be defined