SETAR RECORSET
Boa noite
Não estou conseguindo entender e não encontrei em nenhum lugar como esclarescer essa duvida:
Quando me refiro a duas tabelas qual devo setar como no exemplo abaixo
Set rs = CreateObject([Ô]ADODB.Recordset[Ô])
With rs
.Open [Ô]select a.aplicacao, b.acesso from aplicacoes a, acesso b where a.cod_aplicacao = b.cod_aplicacao [Ô] _
& [Ô]and b.cod_usuario=[Ô] & codigo, cnn, adOpenKeyset, adLockOptimistic
tenho ai duas tabelas aplicacoes e acesso mas se eu seto uma só retorna erro e usando and tambem
Se alguem puder me dar uma dica ou onde encontrar uma solução, agradeço
Nereu
Não estou conseguindo entender e não encontrei em nenhum lugar como esclarescer essa duvida:
Quando me refiro a duas tabelas qual devo setar como no exemplo abaixo
Set rs = CreateObject([Ô]ADODB.Recordset[Ô])
With rs
.Open [Ô]select a.aplicacao, b.acesso from aplicacoes a, acesso b where a.cod_aplicacao = b.cod_aplicacao [Ô] _
& [Ô]and b.cod_usuario=[Ô] & codigo, cnn, adOpenKeyset, adLockOptimistic
tenho ai duas tabelas aplicacoes e acesso mas se eu seto uma só retorna erro e usando and tambem
Se alguem puder me dar uma dica ou onde encontrar uma solução, agradeço
Nereu
Eu faço assim
Declaro uma variavel
Dim SQL as String
SQL = [Ô]SELECT [Ô]
SQL = SQL & [Ô]aplicacoes.aplicacao, [Ô]
SQL = SQL & [Ô]acesso.acesso [Ô]
SQL = SQL & [Ô]FROM [Ô]
SQL = SQL & [Ô]aplicacoes, acesso [Ô]
SQL = SQL & [Ô]WHERE aplicacoes.cod_aplicacao = acesso.cod_aplicacao [Ô]
SQL = SQL & [Ô]AND acesso.cod_usuario = [Ô] & codigo [ô]OBS Se o campo cod_usuario for do tipo String tem que coloca-lo entre Aspas Simples
Set rs = CreateObject([Ô]ADODB.Recordset[Ô])
rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic
Tenta ai e posta ai para saber-mos...
Declaro uma variavel
Dim SQL as String
SQL = [Ô]SELECT [Ô]
SQL = SQL & [Ô]aplicacoes.aplicacao, [Ô]
SQL = SQL & [Ô]acesso.acesso [Ô]
SQL = SQL & [Ô]FROM [Ô]
SQL = SQL & [Ô]aplicacoes, acesso [Ô]
SQL = SQL & [Ô]WHERE aplicacoes.cod_aplicacao = acesso.cod_aplicacao [Ô]
SQL = SQL & [Ô]AND acesso.cod_usuario = [Ô] & codigo [ô]OBS Se o campo cod_usuario for do tipo String tem que coloca-lo entre Aspas Simples
Set rs = CreateObject([Ô]ADODB.Recordset[Ô])
rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic
Tenta ai e posta ai para saber-mos...
Boa noite AlexLugon
Retornou erro sinalizando no rs dizento que a variavel não está declarada.
Estou tentando fazer um sistema de acesso com definições de acesso para cada usuário e a sub toda é:
Private Sub MDIForm_Load()
Dim codigo As Long
MnuCalculadora.Enabled = False
MnuDesconectar.Enabled = True
MnuOficina1.Enabled = False
MnuOficina2.Enabled = False
MnuOrcamento.Enabled = False
MnuRecepçao.Enabled = False
MnuProtocolo.Enabled = False
MnuBackup.Enabled = False
MnuCadUsuarios.Enabled = False
Set rsAcesso = CreateObject([Ô]ADODB.Recordset[Ô])
With rsAcesso
.Open [Ô]select a.aplicacao, b.acesso from aplicacoes a, Acesso b where a.cod_aplicacao = b.cod_aplicacao [Ô] _
& [Ô]and b.cod_usuario=[Ô] & codigo, cnn, adOpenKeyset, adLockOptimistic
If .RecordCount = 0 Then
MsgBox [Ô]Usuário sem acesso ao sistema![Ô], vbExclamation, [Ô]Erro[Ô]
Else
Do While Not .EOF
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]Calculadora[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuCalculadora.Enabled = True
End If
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]Oficina1[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuOficina1.Enabled = True
End If
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]Oficina2[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuOficina2.Enabled = True
End If
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]Orcamento[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuOrcamento.Enabled = True
End If
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]Recepçao[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuRecepçao.Enabled = True
End If
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]Protocolo[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuProtocolo.Enabled = True
End If
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]Backup[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuBackup.Enabled = True
End If
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]CadUsuarios[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuCadUsuarios.Enabled = True
End If
.MoveNext
Loop
End If
.Close
End With
End Sub
e ele não tá entendendo ou não encontrando na tabela Acesso, quando o acesso é igual a [Ô]1[Ô] e retornando sempre [Ô]Usuário sem acesso ao sistema![Ô] quer dizer acesso igual a [Ô]0[Ô].
A tabela acesso está correta, já conferi.
Acho que meu erro está em não saber setar corretamente, mas se os amigos tiverem outra opinião, estou aceitando
Nereu
Retornou erro sinalizando no rs dizento que a variavel não está declarada.
Estou tentando fazer um sistema de acesso com definições de acesso para cada usuário e a sub toda é:
Private Sub MDIForm_Load()
Dim codigo As Long
MnuCalculadora.Enabled = False
MnuDesconectar.Enabled = True
MnuOficina1.Enabled = False
MnuOficina2.Enabled = False
MnuOrcamento.Enabled = False
MnuRecepçao.Enabled = False
MnuProtocolo.Enabled = False
MnuBackup.Enabled = False
MnuCadUsuarios.Enabled = False
Set rsAcesso = CreateObject([Ô]ADODB.Recordset[Ô])
With rsAcesso
.Open [Ô]select a.aplicacao, b.acesso from aplicacoes a, Acesso b where a.cod_aplicacao = b.cod_aplicacao [Ô] _
& [Ô]and b.cod_usuario=[Ô] & codigo, cnn, adOpenKeyset, adLockOptimistic
If .RecordCount = 0 Then
MsgBox [Ô]Usuário sem acesso ao sistema![Ô], vbExclamation, [Ô]Erro[Ô]
Else
Do While Not .EOF
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]Calculadora[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuCalculadora.Enabled = True
End If
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]Oficina1[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuOficina1.Enabled = True
End If
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]Oficina2[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuOficina2.Enabled = True
End If
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]Orcamento[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuOrcamento.Enabled = True
End If
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]Recepçao[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuRecepçao.Enabled = True
End If
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]Protocolo[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuProtocolo.Enabled = True
End If
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]Backup[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuBackup.Enabled = True
End If
If rsAplicacoes([Ô]Aplicacao[Ô]) = [Ô]CadUsuarios[Ô] And rsAcesso([Ô]Acesso[Ô]) = 1 Then
MnuCadUsuarios.Enabled = True
End If
.MoveNext
Loop
End If
.Close
End With
End Sub
e ele não tá entendendo ou não encontrando na tabela Acesso, quando o acesso é igual a [Ô]1[Ô] e retornando sempre [Ô]Usuário sem acesso ao sistema![Ô] quer dizer acesso igual a [Ô]0[Ô].
A tabela acesso está correta, já conferi.
Acho que meu erro está em não saber setar corretamente, mas se os amigos tiverem outra opinião, estou aceitando
Nereu
Notei que você não seta a variável codigo.
Isso está certo?
Isso está certo?
VEJA SE AGORA FUNCIONA
Dim codigo As Long
MnuCalculadora.Enabled = False
MnuDesconectar.Enabled = True
MnuOficina1.Enabled = False
MnuOficina2.Enabled = False
MnuOrcamento.Enabled = False
MnuRecepçao.Enabled = False
MnuProtocolo.Enabled = False
MnuBackup.Enabled = False
MnuCadUsuarios.Enabled = False
Set rsAcesso = CreateObject([Ô]ADODB.Recordset[Ô])
rsAcesso.Open [Ô]select a.aplicacao, b.acesso from aplicacoes a, Acesso b where a.cod_aplicacao = b.cod_aplicacao [Ô] _
& [Ô]and b.cod_usuario=[Ô] & codigo, cnn, adOpenKeyset, adLockOptimistic
If rsAcesso.RecordCount = 0 Then
MsgBox [Ô]Usuário sem acesso ao sistema![Ô], vbExclamation, [Ô]Erro[Ô]
Else
Do While Not rsAcesso.EOF
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]Calculadora[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuCalculadora.Enabled = True
End If
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]Oficina1[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuOficina1.Enabled = True
End If
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]Oficina2[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuOficina2.Enabled = True
End If
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]Orcamento[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuOrcamento.Enabled = True
End If
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]Recepçao[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuRecepçao.Enabled = True
End If
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]Protocolo[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuProtocolo.Enabled = True
End If
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]Backup[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuBackup.Enabled = True
End If
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]CadUsuarios[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuCadUsuarios.Enabled = True
End If
rsAcesso.MoveNext
Loop
End If
rsAcesso.Close
vc estava fazendo um loop na recordset rsAplicacoes eu mudei para rsAcesso onde foi gerado a consulta da tabela aplicacaos e acessos.
Teste e poste ai.
Dim codigo As Long
MnuCalculadora.Enabled = False
MnuDesconectar.Enabled = True
MnuOficina1.Enabled = False
MnuOficina2.Enabled = False
MnuOrcamento.Enabled = False
MnuRecepçao.Enabled = False
MnuProtocolo.Enabled = False
MnuBackup.Enabled = False
MnuCadUsuarios.Enabled = False
Set rsAcesso = CreateObject([Ô]ADODB.Recordset[Ô])
rsAcesso.Open [Ô]select a.aplicacao, b.acesso from aplicacoes a, Acesso b where a.cod_aplicacao = b.cod_aplicacao [Ô] _
& [Ô]and b.cod_usuario=[Ô] & codigo, cnn, adOpenKeyset, adLockOptimistic
If rsAcesso.RecordCount = 0 Then
MsgBox [Ô]Usuário sem acesso ao sistema![Ô], vbExclamation, [Ô]Erro[Ô]
Else
Do While Not rsAcesso.EOF
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]Calculadora[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuCalculadora.Enabled = True
End If
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]Oficina1[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuOficina1.Enabled = True
End If
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]Oficina2[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuOficina2.Enabled = True
End If
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]Orcamento[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuOrcamento.Enabled = True
End If
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]Recepçao[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuRecepçao.Enabled = True
End If
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]Protocolo[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuProtocolo.Enabled = True
End If
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]Backup[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuBackup.Enabled = True
End If
If rsAcesso([Ô]Aplicacao[Ô]) = [Ô]CadUsuarios[Ô] And rsAcesso([Ô]acesso[Ô]) = 1 Then
MnuCadUsuarios.Enabled = True
End If
rsAcesso.MoveNext
Loop
End If
rsAcesso.Close
vc estava fazendo um loop na recordset rsAplicacoes eu mudei para rsAcesso onde foi gerado a consulta da tabela aplicacaos e acessos.
Teste e poste ai.
mas a variavel codigo não seria o 0 ou 1 ?
Alex
já tinha tentado dessa forma e retorna igualmente [Ô]Usuário sem acesso ao sistema![Ô]
Por isso achei que devia setar rsAcesso and rsAplicacoes, mas tambem não tive exito.
Nereu
já tinha tentado dessa forma e retorna igualmente [Ô]Usuário sem acesso ao sistema![Ô]
Por isso achei que devia setar rsAcesso and rsAplicacoes, mas tambem não tive exito.
Nereu
Se você criou uma variável long e não utilizou ela, o valor será 0.
Você tem um usuário 0?
Você tem um usuário 0?
não
o nosso amigo esta certo brother preste atenção se vc monta uma SELECT onde um dos criterios é a variavel CODIGO ele e não tem nenhum registro com o VALOR 0 na tabela o resultado sempre vai dar erro
veja a linha abaixo
rsAcesso.Open [Ô]select a.aplicacao, b.acesso from aplicacoes a, Acesso b where a.cod_aplicacao = b.cod_aplicacao [Ô] _
& [Ô]and b.cod_usuario=[Ô] & [txt-color=#e80000]codigo[/txt-color], cnn, adOpenKeyset, adLockOptimistic
veja a linha abaixo
rsAcesso.Open [Ô]select a.aplicacao, b.acesso from aplicacoes a, Acesso b where a.cod_aplicacao = b.cod_aplicacao [Ô] _
& [Ô]and b.cod_usuario=[Ô] & [txt-color=#e80000]codigo[/txt-color], cnn, adOpenKeyset, adLockOptimistic
boa noite
então amigos, a idéia é fazer com que quando um certo usuário acessar o programa, seja feita uma conferencia se ele tem permissão de acesso ao que ele está tentando usar.
Como deveria ser este select? Porque a principio ela estaria certo porque passa pela tabela Aplicacoes, que são as permissoes e pela tabela Acesso onde o [Ô]1[Ô] indica que ele tem permissão.
Qual seria então a compração correta do b.cod_usuario?
Nereu
então amigos, a idéia é fazer com que quando um certo usuário acessar o programa, seja feita uma conferencia se ele tem permissão de acesso ao que ele está tentando usar.
Como deveria ser este select? Porque a principio ela estaria certo porque passa pela tabela Aplicacoes, que são as permissoes e pela tabela Acesso onde o [Ô]1[Ô] indica que ele tem permissão.
Qual seria então a compração correta do b.cod_usuario?
Nereu
Tópico encerrado , respostas não são mais permitidas