Ir para conteúdo
Fórum Script Brasil
  • 0

Solicitar Login, duvidas


Rodrigo Medeiros

Pergunta

Amigos, boa noite

Acabo de me Cadastrar no forum, porem a tempos venho espiando por aqui.

Estou com uma dificuldade e gostaria de compartilhar com vocês.

Tenho um sistema em VB 6.0 com banco de dados em SQL server 2000 para o restaurante da família.

Estou desenvolvendo uma função de reabertura de caixa, que necesida de senha para tal.

por ser tratar de um restaurante onde as coisas acontecem dinamicamente tenho esta dificuldade:

Cadastro um usuário com atribuições de caixa, e derrepente ele precisa executar uma funcao que seria do cargo de gerente, para tal como não é viavel deslogar e logar o gerente quero que apareça uma tela pedindo a senha.

Inicialmente fiz com InputBox, porem descobri que a mesma não possui Mascara com ******

como solução criei um pequeno formulário de senha contendo um TXTBOX e um Botão apenas.

A lógica da programação e mais ou menos a seguinte

'#rotina password Box
 passliberacao = "gerencia"
 passfuncao_local = "frmprincipal"
 passfuncao_comando = "reabrir_caixa"
 frmpasswordbox.Show 1, frmprincipal
 Exit Sub
Estas variaveis acima passam a informação para o Formulario o que eu preciso liberar, formulario que preciso liberar e o comando que quero executar no formulario passwordbox tenho o seguinte comando
'chama a função solicitada aprovação
CallByName passfuncao_local, passfuncao_comando, VbMethod
Unload Me

o problema e que a variavel passfuncao_local não é um objeto, apenas contem o nome do mesmo.

Poderia criar um IF passfuncao = frmprincipal then CallByName frmprincipal , passfuncao_comando, VbMethod

mas estou tentando deixar esse formulario o mais generico possivel, como se fosse uma inputbox com mascara.

Espero que tenham intendido e aguardo comentarios

Editado por Rodrigo Medeiros
Adicionar tag's (Jonathan)
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

realmente, isso não funciona, mas porque você não faz simplesmente assim??

CallByName frmprincipal, passfuncao_comando, VbMethod

e tb, porque você precisa usar o CallByName()?? o q tem nessa funcao reabrir_caixa() q so pode ser chamada a partir do outro form??

Link para o comentário
Compartilhar em outros sites

  • 0

Vamos lá

a ideia e gerar uma tela generica, que diminua o trabalho da programacao

ex: a pessoa clica em abrir comanda, so que ela não possue senha, então aparece uma tela digite a senha que permita abrir a mesa, ai apos digitar o programa testa se a senha pode abrir a mesa, caso possa ele vai executar abrir_mesa

ai agora eu tenho uam funcao transferir mesa, a mesma oisa acontece, aparece a tela e caso seja liberado executa transferir_mesa

logo na minha tela de password vou precisar algo assim

se "a funcao solicitada" = abrir_mesa faça abrir_mesa

se "a funcao solicitada" = transferir_mesa faça transferir_mesa

agora imagine que eu tenha varias funcoes chamando essa tela de password, eu teria que ter varios ifs toda vez que eu fosse criar uma funcao que necessitasse de senha

outra solucao que eu não sei fazer e nem sei se o VB faz seria o seguinte

evento clicar no botao abrir mesa

verifica se a pessoa pode abrir, se não puder abre o formulario do password, da uma pausa no procedimento e fica aguardando a digitação da senha. Caso a senha passe ele recomeça o procedimento, caso não da um Exxit sub

Seria algo assim

'se o login não poder abrir caixa

if login_abrir caixa = n then

frmpassword.show

PAUSAR PROCEDIMENTO

ai o procedimento clica do botao enviar senha

se a senha existir e login_abrir caixa = n faça

DESPAUSAR PROCEDIMENTO

se não

Exit Sub

fim do se

espero ter sido claro

Link para o comentário
Compartilhar em outros sites

  • 0

não sei se eu entendi direito, mas...

agora imagine que eu tenha varias funcoes chamando essa tela de password, eu teria que ter varios ifs toda vez que eu fosse criar uma funcao que necessitasse de senha

se funcao q você esta chamando com o CallByName() esta no form q chamou a tela de password, o mais logico a fazer seria você chamar a funcao a partir do proprio form onde ela esta, assim q o formlario de password for fechado (e você tiver confirmado q a senha é correta).

de qualquer forma, naquele codigo q você tava usando, se você declarar o passfuncao_local como Object, você poderia fazer isso:

Set passfuncao_local = frmprincipal

e ai então aquele seu codigo do CallByName() deve funcionar do jeito q você postou aqui no primero post.

outra solucao que eu não sei fazer e nem sei se o VB faz seria o seguinte

evento clicar no botao abrir mesa

verifica se a pessoa pode abrir, se não puder abre o formulario do password, da uma pausa no procedimento e fica aguardando a digitação da senha. Caso a senha passe ele recomeça o procedimento, caso não da um Exxit sub

hum, mas q parte disso você não ta conseguindo fazer?? pra q ele pause o procedimento enquanto a senha não é digitada, é so você chamar o form da senha como modal. e pelo q vi no seu codigo no primero post, você já esta fazendo isso, então a pausa deve estar acontecendo pra você.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu jurava que não pausava, vo testar e falo obrigado, vivendo e aprendendo

agora o código ficou bem limpo, quando preciso de senha e so executar e o formulario de password ficou bem limpo, se ele retornar a variavel OK continua e a pessoa apertar esc pra fechar ele da uma mensagem de acesso não concedido e simplesmente sai. obg a todos

'solicitar senha Admin

'###################################

'# rotina password Box #

'###################################

passliberacao = "gerencia"

frmpasswordbox.Show 1, Me

If passwordbox <> "ok" Then Exit Sub

'função que quer abrir

frmconfigbanco.show

'###################################

'# Fim da rotina #

'###################################

Editado por Rodrigo Medeiros
Link para o comentário
Compartilhar em outros sites

  • 0

Amigos, bom dia

Parte do problema resolvido, agora me deparei com outro

Veja o código abaixo

Private Sub Form_Load()
'verifica liberação do login atual
 var1 = "rslogin!" + passliberacao
If var1 = 1 Then
  passwordbox = "ok"
  Unload Me
 End If
End Sub

Da maneira que o código esta, ele ira comprar se o valor da var1 é 1 e não e isso, existe uma variavel tipo Record Set que contem as permissões desse usuário, quero comparar no caso desta funcao se a variavel rslogin!gerencia = 1, veja que a palava gerencia deve variar pois tenho varias permissões para usuário, ex: gerencia, garcon, abrirmesa, fecharmesa, etc.

como resolver? tentei o +, & etc

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...