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

Dùvida Dlookup


BRUCCE

Pergunta

Bom dia Galera!

Estou com um probleminha!!!!

Tenho um BD com alguns niveis de acesso, divididos por Setores aqui na Empresa

Niveis: ADM; Processamento;Supervisor;Processo e Atendimento.

Já defini quais os form cada setor podera acessar, só que agora tem um novo form, que preciso dar acesso somente "Consulta" para eles (Supervisor e Atendimento)

Só que, coloquei mais de um Dlookup no eveno ao abrir,

Private Sub Form_Open(Cancel As Integer)

If DLookup("[Tipo]", "Usuario", "[Tipo] ='" & Forms!Main![xxx] & "'") = "Atendimento" Then

Me.AllowEdits = False

Me.AllowAdditions = False

Me.AllowDeletions = False

Me.AllowEdits = False

Me.Combinação50.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

If DLookup("[Tipo]", "Usuario", "[Tipo] ='" & Forms!Main![xxx] & "'") = "Supervidor" Then

Me.AllowEdits = False

Me.AllowAdditions = False

Me.AllowDeletions = False

Me.AllowEdits = False

Me.Combinação50.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

If DLookup("[Tipo]", "Usuario", "[Tipo] ='" & Forms!Main![xxx] & "'") = "Processo" Then

Me.AllowDeletions = False

Me.Comando33.Enabled = False

E só esta sendo definido o pimeiro (atendimento), caso o Supervidor abre o form, ele consegue alterar tudo.... Tem alguma coisa errada nesse código??? (Os End IF's eu não coloquei aki, mas no código correto tem).

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

If DLookup("[Tipo]", "Usuario", "[Tipo] =" & Forms!Main![xxx]) = "Atendimento" Then

Me.AllowEdits = False

Me.AllowAdditions = False

Me.AllowDeletions = False

Me.AllowEdits = False

Me.Combinação50.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

end if

If DLookup("[Tipo]", "Usuario", "[Tipo] =" & Forms!Main![xxx]) = "Supervidor" Then

Me.AllowEdits = False

Me.AllowAdditions = False

Me.AllowDeletions = False

Me.AllowEdits = False

Me.Combinação50.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

end if

If DLookup("[Tipo]", "Usuario", "[Tipo] =" & Forms!Main![xxx]) = "Processo" Then

Me.AllowDeletions = False

Me.Comando33.Enabled = False

end if

Link para o comentário
Compartilhar em outros sites

  • 0

MrMalj, Boa Tarde!

Coloquei o Dlookup da maneira que você especificou, porém, quando tento abrir o form dá Erro.....

"Erro em tempo de execução 2001"

Voce Cancelou a operção anterior...

quando clico em depurar, ele seleciona a linha do Dlookup.

O que pode ser?

Vlw!

If DLookup("[Tipo]", "Usuario", "[Tipo] =" & Forms!Main![xxx]) = "Atendimento" Then

Me.AllowEdits = False

Me.AllowAdditions = False

Me.AllowDeletions = False

Me.AllowEdits = False

Me.Combinação50.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

end if

If DLookup("[Tipo]", "Usuario", "[Tipo] =" & Forms!Main![xxx]) = "Supervidor" Then

Me.AllowEdits = False

Me.AllowAdditions = False

Me.AllowDeletions = False

Me.AllowEdits = False

Me.Combinação50.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

end if

If DLookup("[Tipo]", "Usuario", "[Tipo] =" & Forms!Main![xxx]) = "Processo" Then

Me.AllowDeletions = False

Me.Comando33.Enabled = False

end if

Link para o comentário
Compartilhar em outros sites

  • 0

MrMalj, Bom dia!

Desculpe-me à falta de atenção, esquicei de informar isso néh!!!!rsrs

O form é o Cadastro_Fichas e o Termo Ciência/RPSD.

O que eu havia tantado fazer mesmo está no Cadastro_Fichas.

Abçs!

P.s: Obrigado pela ajuda!

Opa me diga, qual é mesmo o form que devo ver?

Link para o comentário
Compartilhar em outros sites

  • 0

Ola, Boa noite!

Gostei muito do layout do seu sistema. bom mas vamos a solução do seu problema.

O campo xxx do seu form main está nulo.

para sanar o problema do xxx nulo insira a linha destacada na cor azul no seu form main

If user = xlogin And pass = xsenha And Not IsNull(Me.user) Then

Form_Main.xxx.Value = xlogin ' atualiza o campo xxx do form main

usuario = xnome

Form_Main.frameMain.SourceObject = "Main_BemVindo"

Form_Main.combMenu.Locked = False

Form_Main.labTitulo.Caption = Form_Cadastro_Licenca.modulo

Form_Main.operador.Value = usuario

Form_Main.Caption = usuario + " - " + sistema

Else

MsgBox "Acesso negado. Verifique se os dados estão corretos e tente outra vez.", vbCritical

Form_Main.frameMain.SourceObject = "Main_Acesso"

End If

substitua no form "Cadastro_Fichas"

If DLookup("[Tipo]", "Usuario", "[Tipo] =" & Forms!Main![xxx]) = "Atendimento" Then

por

If DLookup("Tipo", "Usuario", "Tipo ='" & Form_Main.xxx & "' ") = "Atendimento" Then

altere todos os dlookps do seu codigo pelo modelo acima mudando apenas o final

Mas o ideal seria você utilizar a função:

Select Case Form_Main.xxx.Value

Case Is = LCase("Atendimento")

Me.AllowAdditions = False

Me.AllowDeletions = False

Me.AllowEdits = False

Me.Combinação50.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

Case Is = LCase("Supervisor")

Me.AllowEdits = False

Me.AllowAdditions = False

Me.AllowDeletions = False

Me.AllowEdits = False

Me.Combinação50.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

Me.Comando32.Enabled = False

Me.Comando33.Enabled = False

Me.Comando34.Enabled = False

Me.Comando43.Enabled = False

Case Is = LCase("Processo")

Me.AllowDeletions = False

Me.Comando33.Enabled = False

Case Is = LCase("Administrado")

Me.AllowEdits = True

Me.AllowAdditions = True

Me.AllowDeletions = True

Me.AllowEdits = True

End Select

End Function

Att,

Editado por Patricia Nascimento
Link para o comentário
Compartilhar em outros sites

  • 0

Patricia, Bom dia!

Obrigado pela ajuda!

Apesar de gostar muito de Access e VBA, sou meio leigo no assunto, fiz as adaptações que você orientou, mas não obtive sucesso.

Tiveq que fazer uma mudança no código q você mandou

Form_Main.xxx.Value = xlogin ' atualiza o campo xxx do form main

Eu não tinha o campo XTIPO no form MAIN, então eu o coloquei. Com o XLOGIN, ele estava pegando o login do usuario e não o TIPO.

quando tento abrir o formularios com o código que você passou, ocorre o mesmo de antes.

quando o uuário tenta alterar algo ele não consegue, mas se houver uma navegação entre os campos ele consegue alterar.

Mais uma vez, obrigado pela ajuda.

Abçs!

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia,

Faça o seguinte teste;

faça uma copia do banco;

entre no codigo vba do form "Cadastro_Fichas" delete todo o codigo dele;

cole o codigo que te mandei no procedimento evento "ao abrir"

Private Sub Form_Open(Cancel As Integer)

'cole o codigo aqui

End Sub

abra o vba e coloque um ponto de interrupção no inicio do codigo

If DLookup("Tipo", "Usuario", "Tipo ='" & Form_Main.xxx & "' ") = "Atendimento" Then

para isso e só posicionar na linha mensionada acima e apertar a tecla F9

depois execute o seu programa normalmente e carregue a tela form "Cadastro_Fichas"

assim que aparecer na tela do vba a linha com ponto de interrupção em amarelo faça o seguinte:

aperte CTRL+G para abrir a janela imediata para fazer-mos o teste

dentro da janela imediata digite

?Form_Main.xxx e tecle enter

neste instante tem que aparecer o valor do campo do formulario e não "nulo"

se aparecer nulo digite

Form_Main.xxx = "Atendimento"

e depois aperte enter

faça o teste novamente

?Form_Main.xxx e tecle enter

caso apareça na linha

?Form_Main.xxx

Atendimento

aperte a tecla F8 e veja se da o erro novamente; caso o erro persista me fale que te mando o seu banco com os acertos para voce.

"no meu micro esta funcionando perfeitamente"

so falta adptar o tipo no form main

att,

Link para o comentário
Compartilhar em outros sites

  • 0

Patricia, Bom dia!

Acabei de fazer os teste que você pediu.....E continua a mesma coisa.

Criei o ponto de interrupção, e q do faço a Verificação Aparece:

?Form_Main.xxx

Atendimento

quando pressiono F8, é selecionado a linha de baixo, em amarelo.: Me.AllowAdditions = False.

No primeiro momento, quando o usuario acessa o FORM e clica em algum campo, ele não consegue alterar, mas se tentar fazer alguma alteração em mais de um campo no mesmo registro ele esta conseguindo.

Se você puder me encaminhar o BD com os ajustes eu agradeço.......

Abçs!

Meu Email: jeffer.martins@gmail.com

Abçs!

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde,

A solução dada ao problema deste tópico foi a seguinte:

No form de Fichas foi retirado os codigos dos controles de ao receber foco e perder foco que apenas transformavam os dados dos campos em maiusculas "UCASE", substituimos:

[color="#0000ff"]If DLookup("Tipo", "Usuario", "Tipo ='" & Form_Main.xxx & "' ") = "Atendimento" Then [/color]
Por

sSql = ""
sSql = sSql & "SELECT login, tipo FROM Usuario WHERE login= '" & Form_Main.xxx & "';"

Set rst_sql = CurrentDb.OpenRecordset(sSql)

If rst_sql.EOF = True Then Exit Sub

If rst_sql(1) = "atendimento" Then

e o problema foi solucionado.

att,

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
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...