Ibxquery

отредактировано May 2009 Раздел: FastReport 4.0
доброе время суток!

вообщем такая проблема в поле 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 .....
в свойствах выставил тип параметра строка строка

при выборе типа интеджер выберается только первая запись

Комментарии

  • RhinoFCRhinoFC Новосибирск
    отредактировано 16:47
    paradox_ua написал: »
    доброе время суток!

    вообщем такая проблема в поле 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,'. Однако строка такая имеет ограниченную длину (точно не помню сколько, достаточно много, но всё-таки не всегда хватает), так что использовать такую конструкцию можно только если уверен, что значений для сверки будет немного. Если же значений для сверки потенциально неограниченное количество, то данный метод не пойдёт. Но всё равно можно чего-нибудь придумать. Напиши, если первый метод тебе не подходит.

  • отредактировано 16:47
    спасибо.... интересный вариант.... но я решил проблему генерацией динамического запроса. тоесть сначала генерирую строку запроса и передаю ее в свойство компонента

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.