criar uma tela para login

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
edson.amorim
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 135
Registrado em: Qui, 04 Out 2007 3:36 pm
Localização: Belo Horizonte - MG

Prezado colega,

Criei o meu sistema que só tem um formulário. Gostaria de criar uma telinha para fazer o login para que ao clicar no icone do executável de meu arquivo, ao invés dele abrir aquela tela tradicional do oracle com o pedido de login, abra então esta tela que irie criar a meu gosto.
você tem algum exemplo ou melhor ainda, pode me explicar como fazer isso? Ficarei muito agradecido,

Edson
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Bother,

Passo 1:

Para que aquela telinha de logon não apareça, você deve anular a trigger ON-LOGON, do teu formulário.
Coloque um NULL; nela.

Passo 2:

Criar a tela de login, que, ao clicar em um botão, faça o logon no sistema.

Seria isso?

qualquer coisa, manda ai.
edson.amorim
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 135
Registrado em: Qui, 04 Out 2007 3:36 pm
Localização: Belo Horizonte - MG

Prezado Trevissoli,

òtima a sua ajuda, não sabia desse passo 1!! Agora a necessidade maior é mesmo o que você me perguntou no passo 2 ou seja; quero criar uma telinha onde eu colocoum campo para digitar as informações e clicar em um botão ára então a partir daí, aparecer o form para eu usar o programa!! ...

Lhe agradeço mais uma vez,

Atenciosamente,

Edson
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Então brother,

No passo 2, crie um form com 3 itens:
Usuário,
Senha,
Banco

Ao pressionar um botão, utilize a built-in LOGON.

Selecionar tudo

  LOGON(un,pw||'@'||cn); 
Peguei este trecho do Help do próprio forms, onde:
un = username;
pw = password;
cn = conexão/banco;

qualquer coisa, manda ai.
edson.amorim
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 135
Registrado em: Qui, 04 Out 2007 3:36 pm
Localização: Belo Horizonte - MG

Prezado Trevissoli,

Ok!! E como é que eu faço para associar este formulario do login com o form do meu programa? Basta só eu fazer a conexaõ com o banco através do formulário de login?

Grato,

Edson
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Faça com que ele seja o primeiro formulário do teu sistema, alterando as propriedades do ícone, na área de trablaho.

Como neste exemplo:

Selecionar tudo

C:\oracle\dev6i\BIN\ifrun60.EXE teuform 
Onde teuform, é o fmx do login, beleza?

Depois de logado, você dá um OPEN_FORM ou CALL_FORM para o próximo formulario, beleza?
edson.amorim
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 135
Registrado em: Qui, 04 Out 2007 3:36 pm
Localização: Belo Horizonte - MG

Caro Trevissoli,


Entendido!! E como já aprendi coisas só neste tópico até o momento!! E desculpe-me por mqais essa; onde é que eu vou usar estas duas instruções que você acabou de me passar? o Call_Form e o Open_Form?

Acho que com esta informação derradeira eu concluo e retorno aqui informando que deu tudo certo!!

Obrigado,

Edson Amorim
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,
Enão, te dei esta dica, porque você falow que, depois de preencher usuário e senha, ele iria pra outra tela.
Talvez tua tela principal do sistema, beleza?
Por exemplo, vamos supor que ela se chame PRINCIPAL.FMB, após o login, você dá um:

Selecionar tudo

 CALL_FORM('PRINCIPAL');
 

qualquer coisa, manda ai.
edson.amorim
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 135
Registrado em: Qui, 04 Out 2007 3:36 pm
Localização: Belo Horizonte - MG

Caro Trevisolli,

Só mais esta: Onde é que eu coloco esta instrução acima?

Grato,

Edson
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Então brother,

Suponhamos que teu form1 se chama principal.fmb, que contem os campos:

-usuário;
-senha;
-string de conexão (banco);

E um botão de OK.

Após preencher essas informações (caso estejam corretas), no when-button-pressed do botão, você redireciona para o form inicial da tua aplicação, como o exemplo:

Selecionar tudo

BEGIN
  CALL_FORM('INICIAL');
END;
qualquer coisa, manda ai.
francisco.angelo
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 78
Registrado em: Qua, 16 Jan 2008 5:06 pm
Localização: RJ
Francisco Angelo
///////////////////////////////

Bom Dia,

eu achei interessante fazer isso, só que quando fui fazer na hora que vou
colocar esse comando no Botão, da o seguinte erro:

Selecionar tudo

LOGON(un,pw||'@'||cn); 
O Identificador 'UN' deve ser declarado

como faço para declarar? e assim, vou ter que declarar também o PW e o CN também né??

desde já Obrigado..
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Então brother...

Nesta caso, o UN, é o teu User Name, que será o valor do item de texto que você criou, para que o usuário digite o login dele, correto?

Este un, pode ser, por exemplo...

Selecionar tudo

  :BLOCO_LOGIN.CAMPO_LOGIN;
qualquer coisa manda ai.
thebranco
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 61
Registrado em: Ter, 04 Ago 2009 7:29 pm
Localização: santa cruz das palmeiras

Ola pessoal segui todos os passos aqui mensionados mas ainda não consegui ele ainda não ta fazendo a conexão !

grato

Branco
francisco.angelo
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 78
Registrado em: Qua, 16 Jan 2008 5:06 pm
Localização: RJ
Francisco Angelo
///////////////////////////////

Olá Pessoal boa noite !!!

Tentei fazer essa tela novamente, fiz a telinha com os três campos tudo certo. até chegar a parte onde configura o botão 'OK'.

inseri a trigger wen_button_pressed o codigo:

Selecionar tudo

LOGON(un,pw||'@'||cn); 
me apresenta o seguinte erro: UN deve ser declarado.
então fiz isso no botão 'OK':

Selecionar tudo

DECLARE

  UN VARCHAR (20);
  PW NUMBER (20);
  CN VARCHAR (20);

BEGIN

 UN := (BLOCO.CAMPO);
 PW := (BLOCO.CAMPO);
 CN := (BLOCO.CAMPO);

LOGON(un,pw||'@'||cn); 
END;

Selecionar tudo

OPEN_FORM('PEDIDO.FMX',ACTIVATE,SESSION);
desse jeito compilou certinho sem erro. so que quando vou fazer o teste ele vai para a tela do forms indicado mais não faz a conexão com o banco...

poderiam me dizer o que esta errado e como consertar???

desde já agradeço.
ballboas
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 98
Registrado em: Qui, 02 Ago 2007 3:06 pm
Localização: sp
Érico Balboa

A pergunta mais cretina é aquela que não é feita

opa amigão, tenta fazer assim:

dentro da trigger ON-LOGON do forms, você põe o código:

Selecionar tudo

  
Default_Value( 'N', 'Global.LogScr' ) ;
	
  if :Global.LogScr = 'N' then
    -- Inibe a tela de login padrão. 
    Null ;
  else
    LOGON(:BLOCO.USERNAME,:BLOCO.PASSWORD||'@'||:BLOCO.CONEXAO, TRUE);
  end if;

Dentro da trigger WHEN-BUTTON-PRESSED de OK da senha, você põe o código:

Selecionar tudo

  :Global.LogScr := 'S' ;
  Execute_Trigger('ON-LOGON');
  :Global.LogScr := 'N' ;
  
  OPEN_FORM('x:\caminho_do_forms\PEDIDO.FMX'); 
Claro que isso funciona com todas as informações sendo passadas corretamente, não está tratando campos vazios, senhas erradas.....Se você quiser, testa deste jeito, dando certo, se você quiser melhorá-lo com mais alguns tratamentos dá um toque, abs.
francisco.angelo
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 78
Registrado em: Qua, 16 Jan 2008 5:06 pm
Localização: RJ
Francisco Angelo
///////////////////////////////

Po cara, funcionou perfeitamente. muito obrigado.

só que a tela de login ainda fica presente, mesmo eu colocando o codigo no final da instrução do botão :

Selecionar tudo

 DO_KEY('EXIT_FORM');
o forms 'login' não some:
se tiver como ajudar, mais isso aí é o de menos.....

---- Agora tem como me ajudar novamente?? -----

Queria criar alguns usuarios, e que eles tivessem um tempo para expirar a senha. E apenas eu pudesse ativa-lás novamente.

exemplo: o usuario ficou 30 dias usando o programa depois a senha dele expirou, ele não vai conseguir mais se conectar com o banco.
depois eu vou lá no banco ou talvez pelo forms mesmo e reativo a senha dele ou troco por outra tanto faz. teria como fazer isso??

Desde já Obrigado.
ballboas
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 98
Registrado em: Qui, 02 Ago 2007 3:06 pm
Localização: sp
Érico Balboa

A pergunta mais cretina é aquela que não é feita

você pode tentar escônde-la com;

Selecionar tudo

HIDE_WINDOW('Sua_Window');
Controle de senha você pode fazer uma tabela que armazene user, data de validação, data de criação e outras informações que você achar necessário,
com um select você verifica se a senha está ativa, expirada, enfim....

Para isso você vai precisar de um usuário padrão q logará no banco antes de você logar com o usuário q está logando, para q ele posso verificar essas informações e validar.

Boa Sorte, abs
ghbotti
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Qui, 27 Nov 2014 2:57 pm

Olá pessoal.

Estou tentando montar uma tela de Login, estava com algumas dúvidas e as dicas mencionadas acima me ajudaram muito. Porém, estou com um problema que não estou conseguindo solucionar. Segue abaixo a situação.

Quando eu digito usuário ou a senha inválida, o forms me retorna uma janela com a seguinte mensagem: "ORA-01017: invalid username/password; logon denied". Quando eu clico em OK, ele me abre aquela tela padrão de login do Forms (que foi anulada na trigger on-logon). Tema alguma forma de eliminar essas duas telas que aparece? Para que eu possa mostrar uma mensagem dizendo que a senha ou o usuário estão incorretos e ao clicar em OK volte para a tela de login que eu criei?

Desde já agradeço.

Att.
ghbotti
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Qui, 27 Nov 2014 2:57 pm

ghbotti escreveu:Olá pessoal.

Estou tentando montar uma tela de Login, estava com algumas dúvidas e as dicas mencionadas acima me ajudaram muito. Porém, estou com um problema que não estou conseguindo solucionar. Segue abaixo a situação.

Quando eu digito usuário ou a senha inválida, o forms me retorna uma janela com a seguinte mensagem: "ORA-01017: invalid username/password; logon denied". Quando eu clico em OK, ele me abre aquela tela padrão de login do Forms (que foi anulada na trigger on-logon). Tema alguma forma de eliminar essas duas telas que aparece? Para que eu possa mostrar uma mensagem dizendo que a senha ou o usuário estão incorretos e ao clicar em OK volte para a tela de login que eu criei?

Desde já agradeço.

Att.
Encontrei a solução, que por sinal é bem simples.
Na Built in LOGON, mude TRUE para FALSE, conforme abaixo, desta forma irá ignorar a mensagem padrão do Forms, de que a senha ou usuário são inválidos.

Selecionar tudo

LOGON(:BLOCO.USERNAME,:BLOCO.PASSWORD||'@'||:BLOCO.CONEXAO, FALSE);
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 23 visitantes