GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

Home Fóruns Developer,Designer e Discoverer Execução em Forms 6.0

Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #105923
    mpungan
    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
    mpungan
    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
    mpungan
    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

    @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

    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
    mpungan
    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

    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
    mpungan
    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.