Последняя версия DataExpress 3 beta от 11 декабря 2018 года. Скачать. Энциклопедия DX. Форум на Develop-Soft

Переход из запроса в другую таблицу

Все о том как сделать что-то с помощью скриптов.
drts
Опытный
Сообщения: 279
Зарегистрирован: Сб окт 29, 2016 11:35 pm
Откуда: Новороссийск

Переход из запроса в другую таблицу

Сообщение drts » Сб мар 10, 2018 9:51 am

Добрый день! Возникла необходимость перехода из запроса (один источник) на разные таблицы (по кнопке) с фильтрацией по источнику запроса. (например из запроса, склад на форму ПРИХОД (с фильтрацией по выбранному в запросе элементу) и СПИСАНИЕ (тоже самое)). Я так понимаю только скрипт? Никто не решал подобное? Спасибо.

РЕШЕНИЕ

jurist23rus
Эксперт
Сообщения: 2478
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Переход из запроса в другую таблицу

Сообщение jurist23rus » Сб мар 10, 2018 10:01 am

Только скрипт
Destiny is a very convenient word for those who never take decisions.

drts
Опытный
Сообщения: 279
Зарегистрирован: Сб окт 29, 2016 11:35 pm
Откуда: Новороссийск

Re: Переход из запроса в другую таблицу

Сообщение drts » Сб мар 10, 2018 10:06 am

Я понимаю, вот и опять надеюсь, что эту в принципе простую задачу уже решали. Может даже действие кто наваял. Если нет, сам буду писать. Это ж форум. Вот я и надеюсь не только на вас с admin-ом)))

drts
Опытный
Сообщения: 279
Зарегистрирован: Сб окт 29, 2016 11:35 pm
Откуда: Новороссийск

Re: Переход из запроса в другую таблицу

Сообщение drts » Вс мар 11, 2018 11:00 pm

РЕШЕНИЕ
Решил задачу пока при помощи скрипта, хочу всё-таки сделать action, но пока так:

Код: Выделить всё

const fltName='Наименование';
procedure dr_openform;
// проверяет наличие открытой вкладки нужной формы, если она открыта,
// то делает её активной, если нет- создает её
var i:integer; Tb:TTabSheet;

begin
for i:=0 to  MainWindow.Pages.PageCount-1 do
    begin
      if MainWindow.Pages.Pages[i].Caption='Поступление ЗИП' then
      begin
        MainWindow.Pages.ActivePageIndex:=i;

        exit;
      end;
    end;
Tb := MainWindow.CreatePage('Поступление ЗИП', vtGridLeft);
// При указании активной закладки, данные читаются из базы автоматически
MainWindow.Pages.ActivePage := Tb;
end;

procedure test2 (Sender:Tobject);
// обработчик нажатия кнопки
// открывает вкладку с нужной формой (используя процедуру dr_openform,
// затем добавляет фильтр формы с id из запроса
var Fo: TFilterObject;
    f:  TFilterField;
    fm: TdxForm;
begin
  dr_openform;
  // работаем с фильтром формы поступление зип (дочерней)
  fm:=MainWindow.FormViews[MainWindow.Pages.TabIndex].Form;
  Fo:=fm.Forms['_Поступление ЗИП'].Filter;
  f:=Fo.FindField(fltName);
// если поля нет - добавляем
    if f=nil then
      begin
        f:= Fo.AddField(fltName);
        f.IsNull:=false;
        f.IsNot:=false;
      end;
  if f.Values.count>0 then f.Values.delete(0);
  f.Values.Insert(0, EvalExpr('RECID(''_Склад'')',self));
  fm.Refresh;
  fm.MoveFirst;
end;

procedure Form_Create;
begin
btnTest.OnClick:=@Test2;
end; 

Что делает:имеется форма с запросом _СКЛАД, в который выборкой помещены записи по хранимому имуществу. При нажатии кнопки переходит к форме ПРИХОД (Поступление ЗИП), в которой имеется дочерняя форма с перечнем поступившего имущества, устанавливает фильтрацию по выделенной записи в запросе _СКЛАД, таким образом видны все записи по поступлению данного наименования. Тоже соответственно можно сделать со списанием. Надеюсь будет полезно.