MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


3 participantes

    [Resolvido]Campo não armazenando informação

    avatar
    HelenaBarbosa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 14
    Registrado : 10/05/2016

    [Resolvido]Campo não armazenando informação Empty [Resolvido]Campo não armazenando informação

    Mensagem  HelenaBarbosa 8/2/2017, 17:05

    Boa tarde Senhores,
    por mais uma vez venho pedir uma ajuda.
    Tenho um banco de dados de alunos que armazena até 4 notas com pesos distintos.
    Utilizei a fórmula abaixo para atribuir o resultado para um campo MEDIA do meu registro:

    =Arred(SeImed(([Peso_2]=0);([Nota_1]*[Peso_1])/[Peso_1];SeImed(([Peso_3]=0);(([Nota_1]*[Peso_1])+([Nota_2]*[Peso_2]))/([Peso_1]+[Peso_2]);SeImed(([Peso_4]=0);(([Nota_1]*[Peso_1])+([Nota_2]*[Peso_2])+([Nota_3]*[Peso_3]))/([Peso_1]+[Peso_2]+[Peso_3]);(([Nota_1]*[Peso_1])+([Nota_2]*[Peso_2])+([Nota_3]*[Peso_3])+([Nota_4]*[Peso_4]))/([Peso_1]+[Peso_2]+[Peso_3]+[Peso_4]))));2)

    O cálculo é feito de forma correta, mas o campo MEDIA está sempre zerado.

    Desde já agradeço
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    [Resolvido]Campo não armazenando informação Empty Re: [Resolvido]Campo não armazenando informação

    Mensagem  FabioPaes 8/2/2017, 17:49

    Essa formula vc colocou na propriedade do campo Fonte de Controle?

    Se for, deverá mudar, pois na fonte de controle deve ficar o Nome do Campo da tabela para armazenar esse valor...
    E o Calculo deve passar pelo VB em algum evento... (Me.NomeCampoMedia = coloque aqui a formula adaptada para VB)


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    HelenaBarbosa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 14
    Registrado : 10/05/2016

    [Resolvido]Campo não armazenando informação Empty Re: [Resolvido]Campo não armazenando informação

    Mensagem  HelenaBarbosa 9/2/2017, 11:12

    Bom dia Fabio, e obrigada pelo retorno.
    Foi exatamente o que você disse. Fiz outros testes que deram certo.
    Mas eu tenho obrigatoriamente que passar pelo VB?
    Não tenho como atribuir o valor de outra forma.
    Fiquei na dúvida pois terei que testar todas as notas e pesos para saber se houve alteração e assim chamar a rotina em VB?
    Hoje quando insiro um aluno chamo a rotina abaixo, e depois para inclusão/alteração de notas e pesos, fica por conta do access:

    Private Sub Btn_Insere_Aluno_Nota_Click()
    If IsNull(Me!Caixa_Sigla_turma_Nota) Or IsEmpty(Me!Caixa_Sigla_turma_Nota) Then
    MsgBox "O campo Sigla da Turma é obrigatório"
    Me!Caixa_Sigla_turma_Nota.SetFocus
    ElseIf IsNull(Me!Caixa_Disciplina) Or IsEmpty(Me!Caixa_Disciplina) Then
    MsgBox "O campo Disciplina é obrigatório"
    Me!Caixa_Disciplina.SetFocus

    ElseIf IsNull(Me!Caixa_Aluno_Matriculado) Or IsEmpty(Me!Caixa_Aluno_Matriculado) Then
    MsgBox "O campo Aluno matriculado é obrigatório"
    Me!Caixa_Aluno_Matriculado.SetFocus
    Else
    Dim Tabela_Notas As Database
    Dim Registro_Notas As Recordset
    Set Tabela_Notas = CurrentDb
    Set Registro_Notas = Tabela_Notas.OpenRecordset("Tbl_Notas", dbOpenTable)

    If DCount("[NIP_Aluno_matriculado]", "Cns_Turmas_Disciplinas_Notas", "[NIP_Aluno_matriculado]='" & [Caixa_Aluno_Matriculado].Column(1) & "'") > 0 Then
    MsgBox "O Aluno " & Me![Caixa_Aluno_Matriculado] & " já está inserido.", vbCritical
    Me!Caixa_Aluno_Matriculado.SetFocus
    Me.Undo
    Else
    Registro_Notas.AddNew
    Registro_Notas!Sigla_Turma = Caixa_Sigla_turma_Nota
    Registro_Notas!Disciplina = Caixa_Disciplina
    Registro_Notas!NIP_Aluno_matriculado = Me![Caixa_Aluno_Matriculado].Column(1)
    Registro_Notas!Peso_1 = Me!Peso_1
    Registro_Notas!Peso_2 = Me!Peso_2
    Registro_Notas!Peso_3 = Me!Peso_3
    Registro_Notas!Peso_4 = Me!Peso_4

    Registro_Notas.Update
    End If

    Registro_Notas.Close
    Set Registro_Notas = Nothing
    Set Tabela_Notas = Nothing
    Me.Requery

    End If
    End Sub



    Mais uma vez obrigada pela ajuda!
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4140
    Registrado : 29/06/2012

    [Resolvido]Campo não armazenando informação Empty Re: [Resolvido]Campo não armazenando informação

    Mensagem  Noobezinho 9/2/2017, 11:33

    Helena

    O que vincula/acopla um controle do formulário com o campo da tabela é exatamente isso.

    Para conferir, abra a folha de propriedade de qualquer caixa de texto, na aba dados, veja

    a primeira propriedade Fonte de controle:

    Se deixar em branco, na caixa de texto irá aparecer "Não acoplado" , caso contrario irá aparecer o nome do campo.

    Se colocar uma formulá na fonte de controle, irá aparecer o resultado da formula, mas a caixa de texto estará desacoplada

    do campo da tabela.

    Então precisamos definir via VBA que o resultado vá para a caixa de texto e assim não perder o vinculo com o campo.

    Mas veja, isso é somente para calculos ou qualquer coisa que queira que aparece na caixa de texto e que deve ser salvo no

    campo correspondente da tabela.

    O código que exibiu está correto, mas n tem nada haver com o que estamos explicando

    No caso da tua formula, como o Fabio disse: deveria se fazer assim, por exemplo

    Se o cálculo tem que ser feito e todos os registros, então colocaremos o código no

    evento NoAtual do formulário:

    Me.NomeCampoMedia =Arred(SeImed(([Peso_2]=0);([Nota_1]*[Peso_1])/[Peso_1];SeImed(([Peso_3]=0);(([Nota_1]*[Peso_1])+([Nota_2]*[Peso_2]))/([Peso_1]+[Peso_2]);SeImed(([Peso_4]=0);(([Nota_1]*[Peso_1])+([Nota_2]*[Peso_2])+([Nota_3]*[Peso_3]))/([Peso_1]+[Peso_2]+[Peso_3]);(([Nota_1]*[Peso_1])+([Nota_2]*[Peso_2])+([Nota_3]*[Peso_3])+([Nota_4]*[Peso_4]))/([Peso_1]+[Peso_2]+[Peso_3]+[Peso_4]))));2)

    Com isso a cada registro exibido, o campo/caixa de texto será atualizado pela fórmula.

    Mas, isso é apenas um exemplo que dei, veja se isso serve para o que pretende.

    [ ]'s


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    HelenaBarbosa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 14
    Registrado : 10/05/2016

    [Resolvido]Campo não armazenando informação Empty Agradecimento

    Mensagem  HelenaBarbosa 9/2/2017, 14:06

    Quero agradecer imensamente a ajuda dos amigos FabioPaes e Noobezinho.
    o problema foi resolvido com a ajuda de vocês.
    Converti a função SeImed para cadeia de IF´s e coloquei no evento Após Atualizar:

    If Me!Peso_2 = 0 Then
    Me!Caixa_Media = ((Me!Nota_1 * Me!Peso_1) / Me!Peso_1)
    Else
    If Me!Peso_3 = 0 Then
    Me!Media = ((Me!Nota_1 * Me!Peso_1) + (Me!Nota_2 * Me!Peso_2)) / (Me!Peso_1 + Me!Peso_2)
    Else
    If Me!Peso_4 = 0 Then
    Me!Media = ((Me!Nota_1 * Me!Peso_1) + (Me!Nota_2 * Me!Peso_2) + (Me!Nota_3 * Me!Peso_3)) / (Me!Peso_1 + Me!Peso_2 + Me!Peso_3)
    Else
    Me!Media = ((([Nota_1] * [Peso_1]) + ([Nota_2] * [Peso_2]) + ([Nota_3] * [Peso_3]) + ([Nota_4] * [Peso_4])) / ([Peso_1] + [Peso_2] + [Peso_3] + [Peso_4]))
    End If
    End If
    End If


    Mais uma vez obrigada!!!!
    avatar
    HelenaBarbosa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 14
    Registrado : 10/05/2016

    [Resolvido]Campo não armazenando informação Empty Re: [Resolvido]Campo não armazenando informação

    Mensagem  HelenaBarbosa 9/2/2017, 14:09

    Resolvido
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    [Resolvido]Campo não armazenando informação Empty Re: [Resolvido]Campo não armazenando informação

    Mensagem  FabioPaes 9/2/2017, 14:46

    Grato pelo retorno amigo, até a próxima se Deus Quiser!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Conteúdo patrocinado


    [Resolvido]Campo não armazenando informação Empty Re: [Resolvido]Campo não armazenando informação

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/3/2024, 16:13