вызов хранимой процедуры и работа с фильтром

отредактировано 17:43 Раздел: FastReport 4.0
Добрый день. Пара вопросов.
1. Как вызвать хранимку у которой есть несколько входных и несколько выходных параметров?
2. Когда прописывается фильтр (свойства Filter, Filtred) для ADOQuery, то работа идёт через функции FindFirst, FindNext. Но в TfrxADOQuery функции перехода (при установленном фильтре) отсутствуют. Тогда как работать с фильтром?
Спасибо.

Комментарии

  • gpigpi
    отредактировано 17:43
    1 - Попробуйте TfrxADOQuery.ExecSQL
    2 - Проверил - TfrxADOQuery.Query.FindFirst работает
  • отредактировано 17:43
    gpi написал: »
    1 - Попробуйте TfrxADOQuery.ExecSQL
    2 - Проверил - TfrxADOQuery.Query.FindFirst работает

    Для MSSQL у меня получилось
        qrySnr.SQL.Clear;          
        qrySnr.SQL.Add('declare @isnP nvarchar(48) , @isnS nvarchar(48), @dt DateTime ');
        qrySnr.SQL.Add('declare @Y integer, @M integer, @D integer ');
        qrySnr.SQL.Add('set @isnP = ''' + qryPerson.FieldByName('ISN_PERSON').AsString + '''');
        qrySnr.SQL.Add('set @isnS = ''' + cbxSnr1.KeyValue + '''');
        qrySnr.SQL.Add('set @dt = GetDate() ');
        qrySnr.SQL.Add('exec GET_SENIORITY @isnP, @isnS, @dt, @Y output, @M output, @D output ');
        qrySnr.SQL.Add('select @Y, @M, @D ');
        qrySnr.Open;
    
    А вот с Oracle-ом что-то не получается. Или нужно как-то параметры настроить?
  • gpigpi
    отредактировано 17:43
    Попробуйте использовать другие провайдеры для доступа к Oracle
  • отредактировано 17:43
    Для Oracle прописала следующую конструкцию
        qrySnr.SQL.Add('BEGIN ');        
        qrySnr.SQL.Add('GET_SENIORITY(''' + qryPerson.FieldByName('ISN_PERSON').AsString + ''', ' + 
                                      '''' + cbxSnr1.KeyValue + ''', ' +                 
                                      'SysDate, :Y, :M, :D); ');
        qrySnr.SQL.Add('END; ');                                            
        qrySnr.ParamByName('Y').DataType := ftInteger;
        qrySnr.ParamByName('Y').Expression := 'Get(''Y'')';                          
        qrySnr.ParamByName('M').DataType := ftInteger;
        qrySnr.ParamByName('M').Expression := 'Get(''M'')';                          
        qrySnr.ParamByName('D').DataType := ftInteger;
        qrySnr.ParamByName('D').Expression := 'Get(''D'')';                          
        qrySnr.ExecSQL;                              
        tslSnr.Add(Format('%0.2d-%0.2d-%0.2d', [<Y>, <M>, <D>]));
    
    Код срабатывает без ошибок, но и результата не получает. Подобная конструкция, проделанная на делфи получает нужные данные.

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

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