Глюк с параметрами

отредактировано 04:33 Раздел: FastReport 2.xx VCL
Уважаемые Метры помогите решить проблему!
Вобщем суть ее такова: Когда я использую Query и хочу передать параметр
получаеться глюк. Вобщем я делаю так. Пишу запрос в Query. и определяю
параметр в зависимости от которой будет делаться выборка данных.
Query.Close;
myparam:=-1;
Query.Open;

Query.Close; // делал также Active:= false true результат тоже
myparam:=1;
Query.Open;

И у меня выводит везде или все значения подряд или параметры токо с 1.
хотя должны вывести сначала с -1 а потом с 1. Когда делаю два отдельных
запроса то все работает.


Как это лечиться. Помогите раозобратьсяю.
С уважением boba


Комментарии

  • отредактировано 04:33
    Да уж!!! В диалоге Params у Query для MyParam нужно поставить Значение и имя переменной, например [ValMyParam] затем уже все просто:

    Query1.Active:=False;
    ValMyParam:=1;
    Query1.Active:=True;

    Если писать напрямую Query1.Params.myParam:=1 не работает.
    А вобще я этим никогда не пользуюсь. Я всегда включаю фильтр в текст запроса:
    Query1.SQL.Clear;
    Query1.SQL.Add('SELECT * FROM Table1 Where Field1='+MyFilterForField1)
  • отредактировано 04:33
    ;) Eстественно все зделано так как ты и говориш в диалоге параметру
    z_myparam присвоено значение myparam.
    Но всеравно от этого ничо не изменяеться.

  • отредактировано 04:33
    Интересно... Если никто ничё не подскажет - присылай отчет, адрес:
    _Alexander sobaka ua.fm
  • отредактировано 04:33
    2 Alexander:

    Прочитай повнимательнее самый первый пост:
    написал:
    Query.Close;
    myparam:=-1;
    Query.Open;

    Query.Close; // делал также Active:= false true результат тоже
    myparam:=1;
    Query.Open;

    Человек в однм месте присваевает параметр, потом открывает, закрывает запрос, потом опять присваевает , опять открывает ;) )

    2 boba:

    Покажу тебе на примере стакана:
    Стакан.Вылили;
    Заливаем:=Водка;
    Стакан.Залили;
    
    Стакан.Вылили;
    Заливаем:=Квас;
    Стакан.Залили;
    

    Как ты думаешь что осталось в стакане ? Прально КВАС !!! А ты сразу хочешь получить 1 стакан водки и 1 стакан кваса - у тебя всего 1 СТАКАН !!!! ;) )
  • отредактировано 04:33
    To Vano:

    Разрабочики лопухнулись ;) (((
    Мне надо было выводить в одной ячейки несколько результатов в зависимости от параметра одного запроса. Так как у меня этого не вышло
    потомучто это не было продумано уважаимыми разработчиками, а отчет
    у меня было весьма на мал( и именно нельзя было разделять данны, они должны были быть в одной ячейке) то количество запросов у меня выросло в 4 раза и на форме некуда было их даже куда ложить:((((
    Как результат отчет работает но на форме немереное количество запросов
    которые повторяют себя и отличаються токо именем.
  • BorisBoris Москва
    отредактировано 04:33
    Непонятно, почему ты считаешь, что разработчики "лопухнулись" ;)
    В одной ячейке можно выводить множество параметров. А если хочешь, чтобы выводилось несколько значений, являющихся результатом одного запроса, но с разными значениями параметра, то надо сохранять результаты запроса в переменных или массиве, а потом уже передавать их все сразу в отчет.
    Или другой, более грамотный вариант, использовать в запросе конструкцию GROUP BY,
    а условие выборки задавать в виде:
    Query1.SQL.Text:= 'SELECT COUNT(Field1), SUM(Field2), Field3 FROM Table1 Where Field1 IN (' + MyFilterForField1 + ') GROUP BY Field1';
    
    где MyFilterForField1 - список вида: 'x1,x2,x3,...'
    Для того, чтобы пример был осмысленным, добавил в запрос агрегирующие функции.

    Fast Report тут вообще не причем! Это принципы программирования.

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

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