Olá a todos! Gostaria de uma ajuda, eu tenho um banco de dados, nele tem uma tabela de usuários e senhas e um campo autonumérico como chave primária que é o código do usuário. Eu fiz o relacionamento 1 para muitos, do código do usuário na tabela de usuários com todas as outras tabelas. Gostaria que quando o usuário fizesse o login esse código do usuário fosse inserido automaticamente nas tabelas cujos os formulários ele abrir para fazer alguma coisa, pois assim eu saberia quem fez qualquer ação. Aguardo a resposta de vocês e quanto mais simples melhor, obrigado a todos os mestres desse forum que são muito bons no que fazem
2 participantes
[Resolvido]Código do usuário automaticamente ao fazer login nas outras tabelas
emacsabino- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 190
Registrado : 29/08/2011
Convidado- Convidado
Ola Emac.. Bem vindo ao Fórum...
Veja neste post há exemplos do Mestre João Paulo sobre historico de alteracões no BD
http://maximoaccess.forumeiros.com/t1707-resolvidoquem-introduziu-e-alterou?highlight=quem+intriduziu
Cumprimentos
Veja neste post há exemplos do Mestre João Paulo sobre historico de alteracões no BD
http://maximoaccess.forumeiros.com/t1707-resolvidoquem-introduziu-e-alterou?highlight=quem+intriduziu
Cumprimentos
emacsabino- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 190
Registrado : 29/08/2011
eu viu o exemplo do Mestre Paulo, mas eu queria que apenas o valor do campo do código de usuário fosse inserido na tabela, apenas isso. O exemplo do mestre paulo é muito bom, mas acho que pode ter uma maneira mais simples, já que apenas quero que quando o usuário logue quando ele abrir qualquer formulário o valor do campo do código do usuário seja inserido na tabela do formulário que ele abriu. Lembrando que a tabela de usuários e senha já está relacionada com todas as tabelas em 1 para muitos. Agradeço muito mesmo se alguém resolver isso
Avelino Sampaio- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 3900
Registrado : 04/04/2010
Olá Sabino
Dependo para que versões do Access vc está programado seu aplicativo, poderá usar uma função global ou uma variável da coleção TempVars.
Vou te passar um exemplo, usando uma função
1) crie uma variável e uma função publica, num módulo global. A variável pública irá armazenar o valor do usuário e a função servirá para chamar o valor da variável nas listas de propriedaes, consultas ou macros.
public idusuario as long
----------------------------------------------
public function fncIdUsuario as long
fncIdUsuario = idusuario
end function
2) No formulário de login, vc então passa o número do usuário para a variável pública, assim que logar.
idUsuario = me!NomeDoCampoNumeroDoUsuario
3) Nos seus formulários, basta acrescentar a função na propriedade "Valor padrão" do campo que recebe o número do usuário.
Valor padrão =fncIdusuario()
Para mais detalhes , acesse o tutorial abaixo que contem uma vídeo-aula bastante esclarecedora.
Video-aula
Bom estudo!!
Dependo para que versões do Access vc está programado seu aplicativo, poderá usar uma função global ou uma variável da coleção TempVars.
Vou te passar um exemplo, usando uma função
1) crie uma variável e uma função publica, num módulo global. A variável pública irá armazenar o valor do usuário e a função servirá para chamar o valor da variável nas listas de propriedaes, consultas ou macros.
public idusuario as long
----------------------------------------------
public function fncIdUsuario as long
fncIdUsuario = idusuario
end function
2) No formulário de login, vc então passa o número do usuário para a variável pública, assim que logar.
idUsuario = me!NomeDoCampoNumeroDoUsuario
3) Nos seus formulários, basta acrescentar a função na propriedade "Valor padrão" do campo que recebe o número do usuário.
Valor padrão =fncIdusuario()
Para mais detalhes , acesse o tutorial abaixo que contem uma vídeo-aula bastante esclarecedora.
Video-aula
Bom estudo!!
Convidado- Convidado
Prático e eficiente... Sua ajuda sempre é muito bem vinda Mestre Avelino...
Obrigado.
Obrigado.
emacsabino- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 190
Registrado : 29/08/2011
Mestre Avelino vou tentar sua dica, o access que eu tou usando é o 2003. Dá certo nessa versão?
Avelino Sampaio- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 3900
Registrado : 04/04/2010
Sim, mas usando a função. Esqueça o tempvars....
emacsabino- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 190
Registrado : 29/08/2011
Como faço para criar o evento após logar na tela de login, pois eu coloquei o comando no CMDEntrar após sair ficando
Private Sub cmdEntrar_Exit(Cancel As Integer)
CódigodoUsuário = Me!CódigodoUsuário
End Sub
Só que aparece a mensagem: "O Microsoft Office Access não pode localizar o campo 'CódigodoUsuário' referido em sua expressão. Eu acho que deve ser porque o código de usuário tá em uma tabela em que constam os registros dos usuários com as senhas e a tela login não tá puxando esse código eu até criei uma caixa de combinação na tela de login por essa tabela de usuários e selecionei o código do usuário na hora, mas não deu certo, apareceu a mesma mensagem. Por favor me ajudem!
Private Sub cmdEntrar_Exit(Cancel As Integer)
CódigodoUsuário = Me!CódigodoUsuário
End Sub
Só que aparece a mensagem: "O Microsoft Office Access não pode localizar o campo 'CódigodoUsuário' referido em sua expressão. Eu acho que deve ser porque o código de usuário tá em uma tabela em que constam os registros dos usuários com as senhas e a tela login não tá puxando esse código eu até criei uma caixa de combinação na tela de login por essa tabela de usuários e selecionei o código do usuário na hora, mas não deu certo, apareceu a mesma mensagem. Por favor me ajudem!
emacsabino- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 190
Registrado : 29/08/2011
Mestre avelino o problema anterior eu resolvi, fiz o seguinte, coloquei agora ao invés do código o próprio nome do usuário e coloquei na função o nome da caixa de texto do formulário do login e fiz o resto que você falou, só que tá acontecendo outro problema, eu entro com o nome de usuário e senha numa boa, ai abre o formulário principal , quando vou abrir o formulário a qual eu coloquei o valor padrão =fncTxtUser() no campo que pega no nome do usuário tá aparecendo um 0 e não o nome, pq tá acontecendo isso? será que seria pq no Módulo tem As Long? e ai como aagora não é mais número é texto teria que ser mudado.
Option Compare Database
Public txtUser As Long
Public Function fncTxtUser() As Long
fncTxtUser = txtUser
End Function
Option Compare Database
Public txtUser As Long
Public Function fncTxtUser() As Long
fncTxtUser = txtUser
End Function
Avelino Sampaio- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 3900
Registrado : 04/04/2010
Isso!
Public txtUser as string
Public Function fncTxtUser() as string
fncTxtUser = txtUser
End Function
Sucesso!
Public txtUser as string
Public Function fncTxtUser() as string
fncTxtUser = txtUser
End Function
Sucesso!
emacsabino- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 190
Registrado : 29/08/2011
Mestre avelino fiz a mudança no módulo, colocando string e agora quando abro o formulário o campo tá vazio não aparece nada. Será que eu tenho que mudar mais alguma coisa? Só lembrando que tou colocano
Private Sub cmdEntrar_Exit(Cancel As Integer)
txtUser = Me!txtUser
End Sub
No botão de login, ou seja ao sair
Private Sub cmdEntrar_Exit(Cancel As Integer)
txtUser = Me!txtUser
End Sub
No botão de login, ou seja ao sair
Avelino Sampaio- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 3900
Registrado : 04/04/2010
Fiz um exemplo bem rasteiro pra vc testar.
exemplo
lembrando que o valor padrão é para novos registros.
No aguardo
exemplo
lembrando que o valor padrão é para novos registros.
No aguardo
emacsabino- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 190
Registrado : 29/08/2011
Vou testar agora Mestre, e lhe dou o retorno ja já
emacsabino- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 190
Registrado : 29/08/2011
Deu certo Mestre Avelino, muito obrigado. Esse forum é excelente porque a quantidade de pessoas competentes e que entendem aqui do assunto é formidável
emacsabino- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 190
Registrado : 29/08/2011
Resolvido
Conteúdo patrocinado