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

Controle de usuarios no vb6


anabon

Pergunta

Olá boa tarde, pessoal!!!!

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

No form de cadastro de novos usuarios eu uso o seguite codigo para salvar num banco acess 2003

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:
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
No banco onde salvo as opções checkbox uso a opção "sim/não" Para verificar já tentei:
If RS!cliente.Value Then
Else
frmcadastro_clientes.Enabled = False



frmprincipal.Show
End If

e da o seguinte erro:

Run-Time '3265':

O Item não pode ser encontrado na coleção correspondente ao nome ou a ordinal solicitado.

Já tentei de varias formas mas sempre da o mesmo erro.... será que alguém tem alguma dica? ou um exemplo claro q posso utilizar?

Desde de já agradeço muito. muito, muito.....

Forte Abraço!!!!

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

6 respostass a esta questão

Posts Recomendados

  • 0
anabon, se o campo "cliente" esta como Sim/Não no access, deve ser só isso, tente ai:

If RS!cliente Then
variantes:
If RS("cliente") Then
If RS("cliente").Value Then
If RS.Fields("cliente") Then
If RS.Fields("cliente").Value Then

Obrigada Kuroi, mas todos esses eu já tentei infelizmente da sempre o mesmo erro ....

então mudei o codigo no modulo eu declarei assim: Global codigo_usuario As Integer

No botão que chama o forme cliente eu coloquei assim:

Private Sub cmdcadastro_cliente_Click()

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á operação!"

End If

Unload Me

End Sub

Só que agora da o erro: "Run-time error'- 2147217904(80040e10) Nenhum valor foi fornecido para um ou mais Parâmetros"

Já conferi o banco e o nome da tabela esta certa é login e o campo é codigo_usuario....

infelizmente não to enxergando o erro!!!!!

ops essa é a linha que aponta o erro:

Set RS = con.Execute("select * from login where codigo_usuario = ao_codigo_do_usuario_logado")
Editado por anabon
Link para o comentário
Compartilhar em outros sites

  • 0

hum, o erro anterior então devia ser porque o nome do campo estava errado. a sua tabela tinha mesmo um campo chamado "cliente"??

quanto ao erro de agora, essa mensagem significa q você ta digitando nomes de campos q não existem. essa linha:

Set RS = con.Execute("select * from login where codigo_usuario = ao_codigo_do_usuario_logado")
do jeito q esta ele espera q codigo_usuario e ao_codigo_do_usuario_logado sejam dois campos q existem na tabela login. se um desses dois for na verdade uma variavel do visual basic, você tem q chama-la e concatenar dentro da string. exemplo:
Set RS = con.Execute("select * from login where codigo_usuario = " & ao_codigo_do_usuario_logado)
ou se o campo codigo_usuario for do tipo texto, então você tem q passar entre aspa simples:
Set RS = con.Execute("select * from login where codigo_usuario = '" & ao_codigo_do_usuario_logado & "'")

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigada .... Obrigada ... em parte deu certo... porém, não importa se no banco ta sim ou não ele não abre o form ..

mudei o codigo para o botão que chamma o form:

Private Sub cmdcadastro_cliente_Click()

' uma query

Set RS = con.Execute("select * from login where codigo_usuario =" & frmLogin.txtcodigo.Text)

If RS!cliente = "s" Then

frmcadastro_clientes.Show

Else

MsgBox "Você não está autorizado, para está operação!"

End If

Unload Me

End Sub

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo muito, muito obrigada pela ajuda!!!! deu certo enfim....

codigo correto:

Private Sub cmdcadastro_cliente_Click()

Set RS = New ADODB.Recordset

Set con = New ADODB.Connection

con.Open (cnSQL)

Dim flag As Boolean

' uma query

Set RS = con.Execute("select * from login where codigo_usuario =" & frmLogin.txtcodigo.Text)

If RS!cliente Then

flag = True

End If

RS.MoveNext

'Wend

If flag = True Then

Me.Hide

frmcadastro_clientes.Show

Else

MsgBox "Você não está autorizado, para está operação!"

End If

End Sub

Podem fechar o post ou me fala como fecha ;-) .... é que sou nova por aki!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

são os moderadores q fecham os topicos, mas eu acho melhor deixar sempre aberto, sempre pode aparecer alguma coisa a ser acresentada.

mas o moderador da secao é o raphael_suporte, se ele achar melhor, ele vai fechando os topicos a medida q forem se resolvendo, não se preocupe com isso.

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