Ibxquery
доброе время суток!
вообщем такая проблема в поле SQL данного компонента записано: select id,period from period where id in (:t) order by period - период типа дата id - integer
при помощи встроенного скриптового языка формирую строку 9,11,12 и передаю в праметр
procedure Button1OnClick(Sender: TfrxComponent);
var
s :string;
i: integer;
begin
//s:='(';
while i<>listbox2.items.count do
begin
if length(s)>0 then s:=s+',';
s:=s+listbox2.items;
inc(i);
end;
//s:=s+')';
showmesSage( s);
IBXQuery1.parambyname('t').value:=s;
end;
запускаю на выполнение и в итоге получаю в ответ conversion error from string .....
в свойствах выставил тип параметра строка строка
при выборе типа интеджер выберается только первая запись
вообщем такая проблема в поле SQL данного компонента записано: select id,period from period where id in (:t) order by period - период типа дата id - integer
при помощи встроенного скриптового языка формирую строку 9,11,12 и передаю в праметр
procedure Button1OnClick(Sender: TfrxComponent);
var
s :string;
i: integer;
begin
//s:='(';
while i<>listbox2.items.count do
begin
if length(s)>0 then s:=s+',';
s:=s+listbox2.items;
inc(i);
end;
//s:=s+')';
showmesSage( s);
IBXQuery1.parambyname('t').value:=s;
end;
запускаю на выполнение и в итоге получаю в ответ conversion error from string .....
в свойствах выставил тип параметра строка строка
при выборе типа интеджер выберается только первая запись
Комментарии
Не, так не выйдет. В качестве параметра нельзя передать массив (в IB, FB). И попытка передать его как строку, тоже ни к чему хорошему не приведёт.
Можно перестроить запрос так:
select id,period from period where :t like '%,'||id||',%'
Здесь t будет строковым параметром вида ',9,11,12,'. Однако строка такая имеет ограниченную длину (точно не помню сколько, достаточно много, но всё-таки не всегда хватает), так что использовать такую конструкцию можно только если уверен, что значений для сверки будет немного. Если же значений для сверки потенциально неограниченное количество, то данный метод не пойдёт. Но всё равно можно чего-нибудь придумать. Напиши, если первый метод тебе не подходит.