Как использовать флажок в отчете в oracle apex для вставки значений в таблицу - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть табличный вызов OUTGOING , в котором много полей, но в этой ситуации необходимо заполнить поля:

  • FILENUMBER
  • OUTGOINGDATE
  • ОТДЕЛ

Теперь у меня есть отчет, который представляет собой sql

 SELECT APEX_ITEM.CHECKBOX2(1,registry.filenumber) "Select",

  INCOMINGREQUESTNOTIFICATION.REQUESTEDFILE as REQUESTEDFILE,
    INCOMINGREQUESTNOTIFICATION.FILENUMBER as FILENUMBER,
    INCOMINGREQUESTNOTIFICATION.REQUESTEDDEPARTMENT as REQUESTEDDEPARTMENT,
    INCOMINGREQUESTNOTIFICATION.REQUESTDATE as REQUESTDATE,

    REGISTRY.STATUS as STATUS 
 from REGISTRY REGISTRY,
    INCOMINGREQUESTNOTIFICATION INCOMINGREQUESTNOTIFICATION 
 where REGISTRY.FILENUMBER(+) =INCOMINGREQUESTNOTIFICATION .FILENUMBER
and INCOMINGREQUESTNOTIFICATION.STATUS ='PENDING'

, что хорошо ... что мне нужно для

  • INCOMINGREQUESTNOTIFICATION.FILENUMBER в качестве FILENUMBER
  • INCOMINGREQUESTNOTIFICATION.REQUESTEDDEPARTMENT в качестве REQUESTEDDEPARTMENT
  • и sysdate

, которые будут вставлены в исходящую таблицу из 10 названий в соответствующих26 именах соответствующих 26

У меня есть pl / sql

 DECLARE
  L_FILENUMBER WWV_FLOW_GLOBAL.VC_ARR2;
BEGIN
  L_FILENUMBER := APEX_APPLICATION.G_F01;
  FOR IDX IN 1 .. L_FILENUMBER.COUNT
  LOOP
    IF L_FILENUMBER(IDX) IS NOT NULL THEN
      INSERT INTO OUTGOING
     (FILENUMBER,OUTGOINGDATE,DEPARTMENT)

VALUES
((to_number(APEX_APPLICATION.G_F01(1)))     
   ,SYSDATE
,to_char(APEX_APPLICATION.G_F02(2))  )

     ;

    END IF;
  END LOOP;
END;

, который не работает .. Однако, если я оставлю только номер файла

DECLARE
  L_FILENUMBER WWV_FLOW_GLOBAL.VC_ARR2;
BEGIN
  L_FILENUMBER := APEX_APPLICATION.G_F01;
  FOR IDX IN 1 .. L_FILENUMBER.COUNT
  LOOP
    IF L_FILENUMBER(IDX) IS NOT NULL THEN
      INSERT INTO OUTGOING
     (FILENUMBER)

VALUES
((to_number(APEX_APPLICATION.G_F01(1)))     

     ;

    END IF;
  END LOOP;
END;

, он вставляет только номер файла.Все это делается с помощью кнопки отправки.

Примечание: я также пытался указать исходную дату и отдел в заявлении об объявлении, но он все еще не работает

enter image description here

1 Ответ

0 голосов
/ 22 ноября 2018

Я бы посоветовал вам научиться использовать псевдонимы таблиц.SELECT написанное вами трудно читать из-за ОЧЕНЬ длинных имен таблиц и столбцов;псевдоним, безусловно, поможет.

По вашему вопросу: сказать, что "это не работает" не поможет вообще.Что именно не работает?Есть ли ошибка?Если да, то какой?Вы запустили страницу в режиме отладки и проверили, что происходит?Если нет, сделайте это.

Кроме того, код, который вы написали, не имеет особого смысла - вы пытаетесь вставлять одни и те же значения снова и снова.Например, APEX_APPLICATION.G_F01(1) не должно быть APEX_APPLICATION.G_F01(IDX)?Примерно так:

begin
  for idx in 1 .. apex_application.g_f01.count
  loop
    if apex_application.g_f01(idx) is not null then
       insert into outgoing 
         (filenumber, 
          outgoingdate, 
          department
         )
         values
         (apex_application.g_f01(idx),
          sysdate,
          apex_application.g_f02(idx)
         );
    end if;
  end loop;
end;

Проверьте (путем проверки страницы), действительно ли (в табличной форме?) Те элементы, которые вы использовали (G_F01 и G_F02),Если нет, вам придется это исправить.

Я не использовал ни функций TO_NUMBER, ни TO_CHAR;Я не знаю, действительно ли они нужны тебе.Даже если у вас их нет, Oracle по возможности выполнит неявное преобразование типов данных, но произойдет сбой, если вы попытаетесь поместить, например, 'abc123' в столбец NUMBER типа данных.Вы не поделились этой информацией, так что я ее пропустил.Примените их при необходимости.

...