Pular para o conteúdo
Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #105923
    Avatar de mpunganmpungan
    Participante

      Pessoal, como meus teste com o forms 10g não evoluíram resolvi trocar a versão, instalei a versão abaixo do forms:
      Forms [32 Bits] Versão 6.0.8.11.3

      Consegui compilar os arquivos PLL e MMB, porém quando compilo os FMB, recebe a seguinte mensagem:

      Z:>type AGE0000.err
      Form: AGE
      FRM-30085: NÒo Ú possÝvel ajustar a tela para saÝda.

      Alguém saberia me dizer qual é o problema ou como solucionar esse erro.

      Mpungan

      #105924
      Avatar de mpunganmpungan
      Participante

        PACKAGE BODY CGLT$TAB_BLOCKS IS

        ———————————————————————-
        — These are the different Types used to define the package variables
        ———————————————————————-

        — Type for table of stacked canvases for a named tab
        type stack_canvas_type is table of varchar2(50) INDEX BY BINARY_INTEGER;

        ——————————————————
        — These are the actual variables used in the code
        ——————————————————
        stack_cvs stack_canvas_type; — PL/SQL table with all stacked canvases with name CG$POPUP_ that
        — relate to any of the tabs

        ——————————————————————————————————-
        FUNCTION CGLT$FND_MASTER_TAB_CVS(l_item in VARCHAR2) RETURN VARCHAR2 IS

        c_val VARCHAR2(200);
        item_cvs VARCHAR2(61) := get_item_property(l_item, ITEM_CANVAS);
        r_grp RecordGroup := Find_Group(‘CGLT$CVS_DATA’); — record group containing tab data
        r_count number := Get_Group_Row_Count(r_grp); — and the number of records in it

        BEGIN
        FOR i IN 1..r_count LOOP

        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.MASTER_TAB’, i);
        IF instr(upper(item_cvs), c_val) > 0 THEN
        RETURN c_val;
        END IF;

        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.PAGE’, i);
        IF instr(upper(item_cvs), c_val) > 0 THEN
        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.MASTER_TAB’, i);
        RETURN c_val;
        END IF;

        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.STACK_CANVAS’, i);
        IF instr(upper(item_cvs), c_val) > 0 THEN
        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.MASTER_TAB’, i);
        RETURN c_val;
        END IF;

        END LOOP;
        RETURN null;

        RETURN NULL; EXCEPTION
        WHEN OTHERS THEN
        message(‘Unexpected Error in CGLT$FND_MASTER_TAB_CVS’);
        pause;

        RETURN NULL; END CGLT$FND_MASTER_TAB_CVS;

        ——————————————————————————————————–
        FUNCTION CGLT$FND_NAV_ITEM(in_tab in varchar2) RETURN VARCHAR2 IS

        c_val VARCHAR2(200);
        r_grp RecordGroup := Find_Group(‘CGLT$CVS_DATA’); — record group containing tab data
        r_count number := Get_Group_Row_Count(r_grp); — and the number of records in it

        BEGIN
        FOR i IN 1..r_count LOOP
        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.NAME’, i);

        IF c_val = upper(in_tab) THEN
        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.NAV_ITEM’, i);
        return c_val;
        END IF;

        END LOOP;
        RETURN null;

        RETURN NULL; EXCEPTION
        WHEN OTHERS THEN
        message(‘Unexpected Error in CGLY$FND_NAV_ITEM’);
        pause;
        RETURN NULL; END CGLT$FND_NAV_ITEM;

        ——————————————————————————————————-
        FUNCTION CGLT$FND_TAB(in_block in varchar2) RETURN VARCHAR2 IS

        c_val VARCHAR2(200);
        r_grp RecordGroup := Find_Group(‘CGLT$CVS_DATA’); — record group containing tab data
        r_count number := Get_Group_Row_Count(r_grp); — and the number of records in it

        BEGIN
        FOR i IN 1..r_count LOOP
        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.BLOCKS’, i);

        IF instr(c_val,upper(in_block)) > 0 THEN
        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.NAME’, i);
        RETURN c_val;
        END IF;

        END LOOP;
        RETURN null;

        RETURN NULL; EXCEPTION
        WHEN OTHERS THEN
        message(‘Unexpected Error in CGLT$FND_NAV_ITEM’);
        pause;
        RETURN NULL; END CGLT$FND_TAB;

        ——————————————————————————————————-
        FUNCTION CGLT$FND_TAB_STACK_CVS(in_tab in varchar2) RETURN CGLT$TAB_BLOCKS.stack_canvas_type IS

        c_val VARCHAR2(200);
        l_start number := 1;
        l_end number;
        stck_cnvs CGLT$TAB_BLOCKS.stack_canvas_type;
        j number := 1;
        r_grp RecordGroup := Find_Group(‘CGLT$CVS_DATA’); — record group containing tab data
        r_count number := Get_Group_Row_Count(r_grp); — and the number of records in it

        BEGIN
        FOR i IN 1..r_count LOOP
        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.NAME’, i);

        IF c_val = upper(in_tab) THEN
        ————————————–
        — Is there more than one stacked canvas for this tab
        ————————————–
        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.STACK_CANVAS’, i);
        l_end := instr(c_val,’,’);

        IF l_end > 0 THEN
        LOOP
        stck_cnvs(j) := substr(c_val,l_start,l_end – l_start);

        l_start := l_end + 1;
        l_end := instr(c_val,’,’,l_start);

        j := j + 1; — point to next canvas

        ————————————–
        — If Last stacked canvas then return the table of stacked canvases
        ————————————–
        IF l_end = 0 THEN
        stck_cnvs(j) := substr(c_val,l_start);
        RETURN stck_cnvs;
        END IF;
        END LOOP;

        ————————————–
        — If there is only one stacked canvas for the tab
        — not necessary to loop
        ————————————–
        ELSE
        IF (c_val IS NOT NULL) THEN
        stck_cnvs(j) := c_val;
        return stck_cnvs;
        END IF;
        END IF;
        END IF;
        END LOOP;
        RETURN stck_cnvs;

        RETURN NULL; EXCEPTION
        WHEN OTHERS THEN
        message(‘Unexpected Error in CGLT$FND_TAB_STACK_CVS’);
        pause;
        RETURN NULL; END CGLT$FND_TAB_STACK_CVS;

        ——————————————————————————————————-
        PROCEDURE CGLT$NEW_BLOCK IS

        l_tab varchar2(50) := CGLT$FND_TAB(name_in(‘system.trigger_block’));
        l_item varchar2(100) := name_in(‘system.cursor_item’);
        l_stack_canvases CGLT$TAB_BLOCKS.stack_canvas_type; — List of stacked canvases for the new active tab
        tab_win VARCHAR2(61);
        tab_cvs VARCHAR2(61);
        c_val VARCHAR2(200);
        r_grp RecordGroup := Find_Group(‘CGLT$CVS_DATA’); — record group containing tab data
        r_count number := Get_Group_Row_Count(r_grp); — and the number of records in it

        BEGIN

        tab_cvs := CGLT$FND_MASTER_TAB_CVS(l_item);

        IF (tab_cvs IS NOT NULL) THEN

        IF l_tab IS null THEN
        l_tab := get_canvas_property(tab_cvs,topmost_tab_page);
        END IF;

        set_canvas_property(tab_cvs,topmost_tab_page,l_tab);
        l_stack_canvases := CGLT$FND_TAB_STACK_CVS(l_tab);

        ————————————–
        — This shouldn’t be necessary, but due to some unexpected behavior
        — this workaround makes sure the cursor is still in the item that it
        — was in before we changed the active tab
        ————————————–
        go_item(l_item);

        FOR i IN 1..r_count LOOP
        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.MASTER_TAB’, i);
        IF (c_val = tab_cvs) THEN
        tab_win := Get_Group_Char_Cell(‘CGLT$CVS_DATA.WINDOW’, i);
        EXIT;
        END IF;
        END LOOP;

        FOR i IN 1..r_count LOOP
        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.WINDOW’, i);
        IF (c_val = tab_win) THEN
        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.MASTER_TAB’, i);
        hide_view(c_val);
        END IF;
        END LOOP;

        show_view(tab_cvs);

        IF l_stack_canvases.count > 0 THEN
        FOR i IN l_stack_canvases.first..l_stack_canvases.last LOOP
        show_view(l_stack_canvases(i));
        END LOOP;
        END IF;
        END IF;
        END CGLT$NEW_BLOCK;

        ——————————————————————————————————-
        PROCEDURE CGLT$TAB_CHANGED is

        l_stack_canvases CGLT$TAB_BLOCKS.stack_canvas_type; — List of all stacked canvases for the active tab
        l_nav_item varchar2(100); — item to navigate to for the active tab
        l_tab varchar2(50) := name_in(‘system.tab_new_page’); — The new active tab
        j integer := 1;
        tab_cvs VARCHAR2(61);
        tab_win VARCHAR2(61);
        c_val VARCHAR2(200);
        r_grp RecordGroup := Find_Group(‘CGLT$CVS_DATA’); — record group containing tab data
        r_count number := Get_Group_Row_Count(r_grp); — and the number of records in it

        BEGIN

        l_stack_canvases := CGLT$FND_TAB_STACK_CVS(l_tab);
        l_nav_item := CGLT$FND_NAV_ITEM(l_tab);
        tab_cvs := CGLT$FND_MASTER_TAB_CVS(l_nav_item);

        IF (l_nav_item IS NOT NULL) THEN
        go_item(l_nav_item);
        END IF;

        IF NOT form_success THEN

        set_canvas_property(tab_cvs,topmost_tab_page,name_in(‘system.tab_previous_page’));
        go_item(name_in(‘system.trigger_item’));

        ————————————–
        — If the master block is in Enter-Query and the user tries
        — to click a different tab than the current one, show the views for
        — the current tab since this is not allowed
        ————————————–
        IF name_in(‘system.mode’) = ‘ENTER-QUERY’ THEN

        — retrieve list of all stacked canvases for the previously active tab
        l_stack_canvases := CGLT$FND_TAB_STACK_CVS(get_canvas_property(tab_cvs,topmost_tab_page));

        IF l_stack_canvases.count > 0 THEN
        FOR rec in 1..l_stack_canvases.last LOOP
        show_view(l_stack_canvases(rec));
        END LOOP;
        END IF;

        ELSE
        raise form_trigger_failure;
        END IF;

        ELSE

        FOR i IN 1..r_count LOOP
        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.MASTER_TAB’, i);
        IF (c_val = tab_cvs) THEN
        tab_win := Get_Group_Char_Cell(‘CGLT$CVS_DATA.WINDOW’, i);
        EXIT;
        END IF;
        END LOOP;

        FOR i IN 1..r_count LOOP
        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.WINDOW’, i);
        IF (c_val = tab_win) THEN
        c_val := Get_Group_Char_Cell(‘CGLT$CVS_DATA.MASTER_TAB’, i);
        hide_view(c_val);
        END IF;
        END LOOP;

        show_view(tab_cvs);
        IF l_stack_canvases.count > 0 THEN
        FOR rec in 1..l_stack_canvases.last LOOP
        show_view(l_stack_canvases(rec));
        END LOOP;
        END IF;
        END IF;

        END CGLT$TAB_CHANGED;

        END CGLT$TAB_BLOCKS;

        Quando compilo a library OFGTAB.pll da o erro da package acima nas linha abaixo:

        Erro 382 na linha 159, coluna 8 a expressão é do tipo incorreto
        Erro 0 na linha 159, coluna 1 Statement ignored
        Erro 382 na linha 163, coluna 8 a expressão é do tipo incorreto
        Erro 0 na linha 163, coluna 1 Statement ignored

        Falha ao gerar a biblioteca.
        FRM-30312: Falha na compilação da biblioteca.

        Se alguém puder ajudar, agradeço.

        Att.

        Mpungan

        #105925
        Avatar de mpunganmpungan
        Participante

          A parte do código que esta com problema é essa abaixo:

          RETURN NULL; EXCEPTION
          WHEN OTHERS THEN
          message(‘Unexpected Error in CGLT$FND_TAB_STACK_CVS’);
          pause;
          RETURN NULL; END CGLT$FND_TAB_STACK_CVS;

          Mpungan

          #105926
          Avatar de Sergio WilliansSergio Willians
          Mestre

            @mpungan
            Quanto mais antiga a versão do forms, mais problemas você vai ter. Pois geralmente apresentam uma série de incompatibilidades com os SOs mais atuais.
            Outra coisa é o idioma da instalação. Instale sempre em inglês, pois fica mais fácil encontrar os erros em pesquisa. Sinceramente, eu nunca trabalhei em uma empresa com o Forms instalado em português. Olha que eu já trabalho com a ferramenta desde 1998.

            Esse erro é bem genérico. Pode ser um canvas maior que a window. Falta de window definida no canvas property, campos não enquadrados no tamanho da window, etc…
            Comece a busca por esses pontos. Pode ser que encontre alguma dessas opções.

            Abraço

            #105927
            Avatar de Sergio WilliansSergio Willians
            Mestre

              Nessas linhas que você enviou não há erro de sintaxe. O erro deve estar em outro ponto.
              Verifique se todos os objetos (Record Groups, LOVs, Canvas, etc..) foram abertos corretamente no forms. Se algum deles for referenciado e você não tiver os objetos no forms path, ele abre o forms mas não os objetos dessa referência.

              #105931
              Avatar de mpunganmpungan
              Participante

                Mas o mais estranho é que com o Developer 10g, eu não conseguia compilar os arquivos PLL (library) e MMB (menu) somente conseguia compilar os FMB (forms). E com essa versão consigo compilar os PLL(library) e MMB(menu) e os FMB(forms) não consigo. Verifique a questão de path, aparentemente esta tudo correto.

                Como que eu consigo conferir essas questões abaixo, é alguma configuração que deve ser ajustada no forms?
                Pode ser um canvas maior que a window. Falta de window definida no canvas property, campos não enquadrados no tamanho da window, etc…

                Mpungan

                #105934
                Avatar de Sergio WilliansSergio Willians
                Mestre

                  Eu tenho um Oracle VM com windows XP em casa rodando Forms 6. Roda liso !
                  Desisti de fazer ele funcionar a contento no 7. É uma perda de tempo. Ás vezes você vai em busca de um erro, que na verdade é um incompatibilidade.

                  Respondendo a sua pergunta, vá em Canvases, clique 2 vezes no canvas que você entrará em modo de edição. Você verá uma linha preta em volta do canvas, essa é a window.
                  Para acessar o property desses objetos, basta clicar em algum deles e dar F4

                  #106066
                  Avatar de mpunganmpungan
                  Participante

                    Nos resolvemos esses erros gerando o forms novamente. Agora esta tudo certo.

                  Visualizando 8 posts - 1 até 8 (de 8 do total)
                  • Você deve fazer login para responder a este tópico.
                  plugins premium WordPress