OCULTAR FOMULARIO NO VB6
Estou criando um programa em vb6 e queria ocultar alguns formulários dependendo do login ... No form de cadastro de novos usuarios coloquei alguns CheckBox, e gostaria de ocutar os form selecionados no CheckBox para aquele usuario... Mas não tenho a menor ideia de como fazer isso...
Se alguém tiver um tutorial .. ou alguma dica eu agradeceria muito....
Forte abraço
Caso você apresenta um menu no seu projeto para fazer a chamada do form, você pode colocar um IF no LOAD do form e caso o form não deve ser disponibilizado para o usuário, deixe a opção invisivel atravez da propriedade VISIBLE=FALSE no menu.
Exemplo: Suponha que o nome da opção do menu seja mnuClientes e você não quer que o usuario tenha acesso a essa opção. Coloque no LOAD do form onde está o menu a linha de código [txt-color=#e80000]mnuClientes.Visible = False[/txt-color]
No meu form de cadastro de novos usuarios eu uso o seguite codigo para salvar num banco acess 2003
Citação:Private Sub cmdsalvar_Click()
Set con = New ADODB.Connection
Set RS = New ADODB.Recordset
con.Open (cnSQL)
RS.Open [Ô]Select * from login[Ô], con, adOpenKeyset, adLockOptimistic
If txtapelido = [Ô][Ô] Then
MsgBox [Ô]Informe o login do usuário[Ô], vbOKOnly, [Ô]Campo Vazio[Ô]
Exit Sub
End If
If txtsenha = [Ô][Ô] Then
MsgBox [Ô]Informe a senha de acesso[Ô], vbOKOnly, [Ô]Campo Vazio[Ô]
Exit Sub
End If
With RS
.AddNew
.Fields([Ô]apelido[Ô]) = Me.txtapelido
.Fields([Ô]senha[Ô]) = Me.txtsenha
.Fields([Ô]cadastrocliente[Ô]).Value = CBool(Check1.Value)
.Fields([Ô]cadastroprodutos[Ô]).Value = CBool(Check2.Value)
.Fields([Ô]cadastrofornecedor[Ô]).Value = CBool(Check3.Value)
.Fields([Ô]novousuario[Ô]).Value = CBool(Check4.Value)
.Fields([Ô]vendas[Ô]).Value = CBool(Check5.Value)
.Fields([Ô]apagar[Ô]).Value = CBool(Check6.Value)
.Fields([Ô]areceber[Ô]).Value = CBool(Check7.Value)
.Fields([Ô]comprasclientes[Ô]).Value = CBool(Check8.Value)
.Fields([Ô]buscarapia[Ô]).Value = CBool(Check9.Value)
.Fields([Ô]estoque[Ô]).Value = CBool(Check10.Value)
.Fields([Ô]caixa[Ô]).Value = CBool(Check11.Value)
.Update
.Close
End With
MsgBox [Ô]Dados salvos com sucesso!!![Ô]
Set RS = Nothing
Set con = Nothing
Unload Me
End Sub
no form login:
Citação:Private Sub cmdok_Click()
Set RS = New ADODB.Recordset
Set con = New ADODB.Connection
con.Open (cnSQL)
Dim flag As Boolean
RS.Open [Ô]Select apelido, senha from login[Ô], con, adOpenKeyset, adLockOptimistic
While RS.EOF <> True
If Me.txtapelido = RS!apelido And Me.txtsenha = RS!senha Then
flag = True
End If
RS.MoveNext
Wend
If flag = True Then
Me.Hide
frmprincipal.Show
Else
MsgBox [Ô]Usuário ou senha inválidos[Ô], vbInformation, [Ô]Erro[Ô]
End If
End Sub
Me desculpem se a resposta estiver muito obvia.... Mas naum to entedendo como posso verificar as telas permitidas ou não para o usuario....
Ops: nos bancos representados pelo CheckBox uso a opção sim/não
Obrigada pelas dicas!!!!! Porém ainda naum consegui....
Usei o exemplo do amigo ALEVALE, no meu form login e então acresentei a linha:
Citação:If RS!cliente.Value Then
Else
frmcadastro_clientes.Enabled = False
frmprincipal.Show
End If
e da o seguinte erro:
Citação:Run-Time [ô]3265[ô]:
O Item não pode ser encontrado na coleção correspondente ao nome ou a ordinal solicitado.
e a linha q aponta o erro é exatamente essa:
Citação:If RS!cliente.Value Then
Já tentei:
Citação:If RS.Fields!cliente.Value Then
Citação:If RS.Fields!cliente = [Ô]sim[Ô] Then
E nada sempre da o mesmo erro....
Porque oque estou fazendo de errado? Desculpa se a resposta estiver muito obvia ... é q é a 1° x que faço isso...
forte abraço...
Por Favor!!!!!!!

vc cria uma tabela em um banco de dados que irá administrar issO.
exemplo:
suponha que vc possua um projeto com 03 forms ( form1, form2, form3 )
você poderá criar uma tabela com a seguinte estrutura
codigousuario,nome, form1,form2,form3
e salvaria os dados assim
CodUser Nome form1 form2 form 2
01 Jose s n s
02 Pedro n n s
03 Ana s s s
então vamos supor agora que vc possua um botão para chamar os forms, neste botão bastaria verificar a condição assim
Private Sub BtnAbreForm1_Click()
[ô] uma query
set rs = cnn.execute([Ô]select * from tabela where coduser = ao_codigo_do_usuario_logado[Ô])
if rs!Form1 = [Ô]s[Ô] then
abre o form1
else
informa que o usuario não pode abrir este form
End if
End Sub
acima expliquei a forma mais simples possivel de como se proceder
o codigo de usuario vc pode pegar ao fazer o login no sistema, crie uma variavel global em um modulo
exemplo
Global Codigo As integer
Muito obrigada MARCELO-TREZE, em fim .... demorou mais entendi como funciona .....
o meu codigo ficou assim:
Lá no modulo eu declarei
Global codigo_usuario As Integer
No botão que chama o form cadastro_clientes eu coloquei
Citação:Set RS = New ADODB.Recordset
Set con = New ADODB.Connection
con.Open (cnSQL)
Set RS = con.Execute([Ô]select * from login where codigo_usuario = ao_codigo_do_usuario_logado[Ô])
If RS!cadastrocliente = [Ô]s[Ô] Then
frmcadastro_clientes.Show
Else
MsgBox [Ô]Você não está autorizado, para está tela![Ô]
End If
só que agora o erro que ta dando é [Ô] run-time error[ô]-2147217904(80040e10)[ô]: nenhum valor foi fornecido para um ou mais parâmetros.[Ô]
já conferi o banco .... mas infelismente naum vi o erro!!!!

ops: a linha que da o erro é:
Citação:Set RS = con.Execute([Ô]select * from login where codigo_usuario = ao_codigo_do_usuario_logado[Ô])
e ficou assim:
Citação:Private Sub Form_Load()
Set RS = New ADODB.Recordset
Set con = New ADODB.Connection
con.Open (cnSQL)
Set RS = con.Execute([Ô]select * from login where codigo_usuario = frmLogin.txtcodigo.text[Ô])
If RS!cadastrocliente = [Ô]s[Ô] Then
frmmenu_cadastro.cmdcadastro_cliente.enabled = false
Else
End If
Mas infelismente continua dando o mesmo erro, oque não entendo, é que no form login ele me da uma resposta do codigo que ta no banco, mas qndo mando verificar para bloquiar a tela ele da que nenhum valor foi fornecido!!!!
aff... pq?
Set RS = con.Execute([Ô]select * from login where codigo_usuario =[Ô] & frmLogin.txtcodigo.text)
teste com a alteração acima