Arquivo da categoria: Oracle Forms 10g

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 download de arquivos armazenados no banco de dados utilizando o Oracle Forms 10g

O arquivo está armazenado em um campo BLOB no banco de dados.


PROCEDURE DOWNLOAD_ARQUIVO IS

lstr_nomeArquivo VARCHAR2(4000);

BEGIN

IF :ARQUIVO.ID IS NULL THEN
alerta('Selecione o arquivo!');
RETURN ;
END IF;

-- ----------------------------------------------------------------------------------------------------
-- Abre a caixa de dialogo para o usuário escolher o nome e local onde o arquivo será armazenado
-- ----------------------------------------------------------------------------------------------------

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


-- ----------------------------------------------------------------------------------------------------
-- Sai caso o usuário não tenha selecionado local e nome do arquivo.
-- ----------------------------------------------------------------------------------------------------

IF lstr_nomeArquivo IS NULL THEN
RETURN ;
END IF;

-- ----------------------------------------------------------------------------------------------------
-- Coleta o arquivo do banco de dados e transfere para a máquina do usuário.
-- ----------------------------------------------------------------------------------------------------

IF NOT webutil_file_transfer.DB_To_Client(clientFile => lstr_nomeArquivo,
tableName => 'ARQUIVO',
columnName => 'ARQUIVO',
whereClause => 'ID = ' || TO_CHAR(:ARQUIVO.ID)
) THEN

alerta('Ocorreu um erro durante o download!');
RETURN ;

END IF;

alerta('O download foi efetuado com sucesso!');

EXCEPTION
WHEN OTHERS THEN
alerta('Ocorreu um erro durante o processo: ' || 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 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).

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

Como forçar apenas letras maiúsculas em um campo texto no Oracle Forms

É possível utilizar a função UPPER do PL/SQL, mas o método mais correto é através da interface atribuindo o valor: “Superior” ao atributo “Restrição a Maiúsculas/Minúsculas”. Caso deseje apenas letras minúsculas, atribua o valor “Inferior”. Importante lembrar que o valor padrão é o “Misto” que fará o campo texto escrever minúsculas e maiúsculas

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