Arquivo da categoria: Oracle Forms

Erro ao abrir arquivo no Oracle Forms 10g: Como abrir arquivos corrompidos.

Ao tentar abrir um formulário *.frm no Oracle Forms você é surpreendido com um crash e a IDE é finalizada? Talvez este artigo possa te ajudar.

O Crash que acontecia era o seguinte:


Oracle Forms Designer parou de funcionar

O Windows pode verificar online se há uma solução para o problema.

> Procurar solução online e fechar o programa
> Fechar o programa

Detalhes do Problema:


Assinatura do problema:

Nome do Evento de Problema: APPCRASH
Nome do Aplicativo: frmbld.exe
Versão do Aplicativo: 10.1.2.0
Carimbo de Data/Hora do Aplicativo: 42d63632
Nome do Módulo de Falhas: KERNELBASE.dll
Versão do Módulo de Falhas: 6.1.7601.18939
Carimbo de Data/Hora do Módulo de Falhas: 55afd8e7
Código de Exceção: ebad198c
Deslocamento de Exceção: 0000c42d
Versão do sistema operacional: 6.1.7601.2.1.0.256.48
Identificação da Localidade: 1046
Informações Adicionais 1: ed46
Informações Adicionais 2: ed46f63f23d625951c90d376a940d4c4
Informações Adicionais 3: e566
Informações Adicionais 4: e566c8bbd2220d9a66050aa95494b72e

Leia nossa declaração de privacidade online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0416

Se a declaração de privacidade online não estiver disponível,
leia nossa declaração de privacidade offline:
C:Windowssystem32pt-BRerofflps.txt

Estávamos tendo o mesmo problema na empresa, até que um de nossos colegas percebeu que ao compilar (CTRL + SHIFT + K e CTRL + T) e depois salvar, o tamanho do arquivo aumentava muito, mesmo após adicionar poucas linhas de código.

A nossa conclusão é que ao compilar a IDE inclui alguma biblioteca 64 bits dentro do formulário, e ao tentar carregar este mesmo formulário na IDE (que é 32 bits) acaba gerando o erro.

A solução que encontramos para o problema foi: Depois de editar, salve o arquivo, mas nunca salve o arquivo após compilar. Assim o arquivo não será corrompido.

Caso já tenha corrompido um formulário, a forma que descobri para recuperar é a seguinte:

  • 1 – Abra uma cópia de um formulário que esteja funcionando;
  • 2 – Compile-o mas não salve – isso irá fazer com que a IDE carregue a biblioteca necessária para abrir o formulário corrompido;
  • 3 – Agora tente abrir o formulário corrompido.
  • 4 – Se funcionar, crie uma cópia do mesmo sem ter compilado.
Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Como recarregar (refresh) os dados de um bloco de dados no Oracle Forms 10g

Caso você tenha inserido um dado via comando SQL em uma tabela e os dados não apareceram automaticamente no bloco de dados exibido na tela, utilize o comando abaixo logo após o camando DML (Insert):


EXECUTE_QUERY;
Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Como fazer upload de arquivos no Oracle Forms 10g

Este código foi utilizado em um dos sistemas que criei. O arquivo é gravado no campo blob Arquivo, na tabela Arquivo.


PROCEDURE uploadArquivo IS

llng_idArquivo ARQUIVO.ID%TYPE;
lstr_caminhoArquivo VARCHAR2(4000);
lstr_nomeArquivo VARCHAR2(255);
lstr_extensaoArquivo VARCHAR2(4);

BEGIN

-- ----------------------------------------------------------------------------------------------------
-- Abre a caixa de dialogo para o usuário selecionar o arquivo que ele deseja enviar.
-- ----------------------------------------------------------------------------------------------------

lstr_caminhoArquivo := client_get_file_name(directory_name => 'C:',
file_name => NULL,
file_filter => 'ALL Files (*.*)|*.*|',
message => 'Escolha o arquivo',
dialog_type => OPEN_FILE,
select_file => NULL
);

-- ----------------------------------------------------------------------------------------------------
-- Sair caso nenhum arquivo tenha sido selecionado.
-- ----------------------------------------------------------------------------------------------------

IF lstr_caminhoArquivo IS NULL THEN
RETURN ;
END IF;

-- ----------------------------------------------------------------------------------------------------
-- Recebe o nome e a extensão do arquivo.
-- ----------------------------------------------------------------------------------------------------

lstr_nomeArquivo := substr(lstr_caminhoArquivo, instr(lstr_caminhoArquivo, WEBUTIL_FILE.Get_File_Separator, -1) + 1, 255);
lstr_extensaoArquivo := lower(substr(lstr_nomeArquivo, -4));

-- ----------------------------------------------------------------------------------------------------
-- Verifica se o nome do arquivo tem mais que 255 caracteres, pois não é possível fazer upload com nome
-- superior a este valor.
-- ----------------------------------------------------------------------------------------------------

IF LENGTH(lstr_nomeArquivo) > 255 THEN
alerta('Não é possível anexar arquivos com nomes maiores que 255 caracteres!');
RETURN ;
END IF;

-- ----------------------------------------------------------------------------------------------------
-- Bloqueia o envio de arquivos executáveis *.exe.
-- ----------------------------------------------------------------------------------------------------

IF lstr_extensaoArquivo = '.exe' THEN
alerta('Não é possível anexar arquivos executáveis!');
RETURN ;
END IF;

-- ----------------------------------------------------------------------------------------------------
-- Verifica qual será o ID do arquivo depois de feito seu upload.
-- ----------------------------------------------------------------------------------------------------

SELECT ARQUIVO_SEQ.NEXTVAL
INTO llng_idArquivo
FROM dual;

-- ----------------------------------------------------------------------------------------------------
-- Cria o registro no banco de dados para o arquivo, utilizando o ID obtido anteriormente. A função de
-- Upload exige que o registro já exista.
-- ----------------------------------------------------------------------------------------------------

INSERT INTO ARQUIVO (ID, NOME_MENSAGEM, NOME_ARQUIVO, ARQUIVO) VALUES (llng_idArquivo, :TRT_MENSAGENSDEEMAIL.NOME, lstr_nomeArquivo, EMPTY_BLOB());

-- ----------------------------------------------------------------------------------------------------
-- Realiza o envio do arquivo e o grava na tabela Arquivo, na coluna Arquivo que será um BLOB
-- ----------------------------------------------------------------------------------------------------

IF NOT webutil_file_transfer.Client_To_DB(clientFile => lstr_caminhoArquivo,
tableName => 'ARQUIVO',
columnName => 'ARQUIVO',
whereClause => 'ID = ' || TO_CHAR(llng_idArquivo),
asynchronous => FALSE,
callbackTrigger => NULL) THEN

alerta('Não foi possível enviar o arquivo!');
RETURN ;

END IF;

-- ----------------------------------------------------------------------------------------------------
-- Realiza o COMMIT no banco de dados e recarrega o formulário.
-- ----------------------------------------------------------------------------------------------------

do_key('commit_form');
execute_query;
alerta('Arquivo enviado com sucesso!');

EXCEPTION
WHEN OTHERS THEN

alerta('Ocorreu um erro desconhecido durante o processo de upload: ' || sqlerrm);

END;
Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Como descobrir qual o erro que está acontecendo dentro de um bloco de dados no Oracle Forms 10g

Adicione o código abaixo em um Trigger “ON-ERROR” no bloco de dados.


DECLARE

COD NUMBER := ERROR_CODE;
TEXTO VARCHAR2(2000) := ERROR_TEXT;
TIPO VARCHAR2(10) := ERROR_TYPE;
DBCOD NUMBER := DBMS_ERROR_CODE;
DBTEXTO VARCHAR2(2000) := DBMS_ERROR_TEXT;

BEGIN

Alerta(COD || '*' || TIPO || '*' || TEXTO);
Alerta(DBCOD || '#' || DBTEXTO);

END;
Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Problema ao instalar o Oracle Forms 10g no Windows 7

Ao instalar o Oracle Forms 10g em uma máquina com o sistema operacional Windows 7, a seguinte mensagem de erro aparece:

Usando paramFile: C:\Users\paulo.costa\Desktop\Ambiente de Desenvolvimento\Oracle Forms 10g\ds_windows_x86_101202_disk1\install\oraparam.ini
Verificando requisitos do Installer…
Verificando a versão do sistema operacional: deve ser 5.0, 5.1 or 5.2. Reais 6.1 Falha <<<<
Encerrando o Oracle Universal Installer; o log para esta sessão pode ser encontrado em C:\Users\PAULO~1.COS\AppData\Local\Temp\OraInstall2015-02-04_01-22-20PM\installActions2015-02-04_01-22-20PM.log

Pressione Enter para sair…

Para solucionar este problema, abra o Windows Explorer e clique com o botão direito sobre o item “Computador”, abrirá a página “Painel de Controle\Sistema e Segurança\Sistema”. Clique sobre a opção “Configurações avançadas do sistema”. Abrirá a janela “Propriedades do sistema”. Na aba “avançado” clique no botão “Configurações” de desempenho. Abrirá a janela “Opções de Desempenho”; selecione a aba “Avançado” e clique no botão “Alterar” memória virtual. Desmarque a opção “Gerenciar automaticamente o tamanho do arquivo de paginação de todas as unidades”. E em tamanho personalizado escolha 1024MB e 2048MB para o mínimo e máximo. Clique em OK para finalizar. O último passo é fazer com que a instalação seja executada no modo de compatibilidade do Windows XP: clique com o botão direito sobre o executável “setup.exe” e selecione prorpriedades. Na janela “Propriedades de setup” escolha a aba “Compatibilidade” e selecione “Executar este programa em modo de compatibilidade”: Windows XP (Service Pack 3). Para concluir reinicie o computador.

Inicie a instalação, e no momento que for questionado sobre o tipo de instalação, escolha o tipo “Concluído (1.14GB)”. Selecione as opções padrão e continue a instalação.

Para finalizar, não se esqueça de salvar o arquivo “TNSNAMES.ORA” atualizado na pasta “\DevSuiteHome_1\NETWORK\ADMIN”. Este arquivo informa ao Oracle Forms 10g quais os endereços dos servidores de banco de dados.

Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Como abrir uma página da web em um navegador, utilizando o Oracle Forms 6i

declare

ConvID PLS_INTEGER;
result  NUMBER;
aux_dir_iex  varchar2(200) := ‘P:Program FilesInternet Exploreriexplore.exe -k’;
aux_dir_url  varchar2(200) := ‘U:SIPProgramasdumpsAjuda_html’;
begin
— busca IE do Citrix:
   aux_dir_url   := ‘U:SIPProgramasdumpsAjuda_htmlindex.htm’;
   –aux_carta.dir_url   := aux_carta.dir_url||
   —
   — Abre a pagina de informações.
   —
   ConvID := DDE.App_begin(aux_dir_iex||’ ‘||aux_dir_url,DDE.App_Mode_Maximized);
   —

exception
   when form_trigger_failure then
        null;
   when others then
       — busca IE do C:
       begin
         aux_dir_iex   := ‘C:Arquivos de ProgramasInternet Exploreriexplore.exe -k’;
         ConvID := DDE.App_begin(aux_dir_iex||’ ‘||aux_dir_url,DDE.App_Mode_Maximized);
exception
   when others then
   null;
       end;
end;

Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Acessando uma URL com o Oracle Forms 6i

CREATE OR REPLACE PROCEDURE acessa_url (v_endereco IN VARCHAR2,
                                        v_pagina OUT VARCHAR2)
IS
  req   utl_http.req;
  resp  utl_http.resp;
  linha VARCHAR2(1024);
BEGIN
  utl_http.set_proxy(‘10.1.2.188:8080’);
  req := utl_http.begin_request(v_endereco);
  resp := utl_http.get_response(req);
  v_pagina := ”;
  LOOP
    utl_http.read_line(resp, linha, TRUE);
    v_pagina := v_pagina || linha;
  END LOOP;
  utl_http.end_response(resp);
EXCEPTION
  WHEN utl_http.end_of_body THEN
    utl_http.end_response(resp);
END;

Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

FRM-18108: Falha na carga dos objetos a seguir…

Caso seja apresentado este problema, Abra o Oracle Forms e adicione (abrindo como se fosse um formulário qualquer) as bibliotecas que estão sendo exibidas no erro. Por exemplo:

– E:compila_10g_ergonclasses.olb
– E:compila_10g_ergonergon.olb
– E:compila_10g_ergonf10g.olb

Se o projeto ainda continuar exibindo a mesma mensagem FRM-18108, verifique se o atalho que está abrindo o Oracle Forms Builder está definido para iniciar na pasta onde estão as bibliotecas: E:compila_10g_ergon

Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Procedimento para executar depuração de formulários no Oracle Forms 6i

Para realizar a depuração (“debugar”) de um formulário em busca de erros, basta utilizar a ferramenta “Depurador de Forms” contido no pacote do Oracle Forms Builder 6i. Importante lembrar que o modo de depuração pode variar de acordo com a versão do Oracle Forms. Este procedimento é voltado para a versão 6i.

Inicie o Depurador de Forms, clicando no botão “Executar o Depurador de Forms” – presente na caixa de ferramentas do Oracle Forms Builder.

Executar_Depurador_Forms

A janela do depurador será exibida:

OracleForms6i_-_Depurador

No depurador você terá alguns nós:

  • Módulos: contendo informações sobre os formulários abertos, incluindo seus gatilhos, blocos, variáveis;
  • Variáveis globais;
  • Variáveis do sistema;
  • Parâmetros da Linha de Comandos;
  • Ações de Depuração;
  • Stack: exibe o valor das variáveis do escopo atual;
  • Objetos de Banco de Dados;

Dentro do item “Módulos”, selecione o gatilho ou procedimento que você deseja depurar. Após selecionar, dê um clique duplo sobre a linha que você deseja inserir um ponto de parada (Break Point);

OracleForms6i_-_Ponto_de_Parada

Agora é só clicar no “X vermelho na barra de ferramenta do depurador para que inicie a execução.

OracleForms6i_-_Depurador

Você pode navegar através do execução usando comandos como:

  • botao-01 “Entrar” – Executa a próxima linha, caso ela seja uma função o depurador iniciará a depuração do código da função;
  • botao-02 “Transpor” – Executa a próxima linha, caso ela seja uma função o depurador calcula o resultado não entrando no código desta;
  • botao-03 “Sair”;
  • botao-04 “Ir” – Executa o código até que encontre o próximo ponto de parada.
Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Como modificar propriedades de bloco de dados programaticamente no Oracle Forms 6i?

set_block_property(‘NOMEDOBLOCO’, DEFAULT_WHERE, ‘ID = :usuario.ID’);

Exemplos de propriedades que podem ser modificadas:

* DEFAULT_WHERE;
* ORDER_BY;
* ALL_RECORDS;
* BLOCKSCROLLBAR_POSITION;
* BLOCKSCROLLBAR_X_POS;
* BLOCKSCROLLBAR_Y_POS;
* COORDINATION_STATUS;
* CURRENT_RECORD_ATTRIBUTE;
* CURRENT_ROW_BACKGROUND_COLOR;
* CURRENT_ROW_FILL_PATTERN;
* CURRENT_ROW_FONT_NAME;
* CURRENT_ROW_FONT_SIZE;
* CURRENT_ROW_FONT_SPACING;
* CURRENT_ROW_FONT_STYLE;
* CURRENT_ROW_FONT_WEIGHT;
* CURRENT_ROW_FOREGROUND_COLOR;
* CURRENT_ROW_WHITE_ON_BLACK;
* DELETE_ALLOWED;
* DML_DATA_TARGET_NAME;
* ENFORCE_PRIMARY_KEY;
* INSERT_ALLOWED;
* KEY_MODE;
* LOCKING_MODE;
* MAX_QUERY_TIME;
* MAX_RECORDS_FETCHED;
* NAVIGATION_STYLE;
* NEXT_NAVIGATION_BLOCK;
* OPTIMIZER_HINT;
* PRECOMPUTE_SUMMARIES;
* PREVIOUS_NAVIGATION_BLOCK;
* QUERY_ALLOWED;
* QUERY_DATA_SOURCE_NAME;
* QUERY_HIT;
* UPDATE_ALLOWED;
* UPDATE_CHANGED_COLUMNS;
* etc.

Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).