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


2 participantes

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    augustopimenta
    augustopimenta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 151
    Registrado : 19/03/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  augustopimenta 11/3/2013, 16:54


    Tenho uma tabela onde são cadastrados as quadra andares de uma obra.(tblQuadraAndar)
    Nesta tabela tenho os campos:
    CodQuadraAndar - código da QuadraAndar
    DescricaoQuadraAndar - Andar 1, andar 2 , etc..
    Fiz um form baseado nessa tabela.

    Tenho outra tabela onde cadastro os servicos disponíveis em cada andar. (tblDetQuadraAndar)
    Nesta tabela tenho os campos:
    CodDetQuadraAndar - Codigo daQuadraAndar
    CodServico - Código do servico
    DescricaoServico - Serviço a ser realizado no andar .. Ex.: reboco, chapisco, etc ..
    UnidadeMedida - Und, Metro Quadrado, kg , etc ...
    QtdLimite - Quantidade limite que será usada naquele serviço. Ex.: 200 Und.
    Fiz um subform dessa tabela

    Tenho duas outras tabelas onde lanço os movimentos.. tblMovimento e tblDetMovimento.
    Fiz um form e subform destas tabelas..
    Onde lanço a obra, o período de execução e outras coisas...
    No subform eu lanço o operário, a quantidade do serviço que ele fez ..


    Minha questão é a seguinte: Como faço para que ao lançar um determinado serviços de um operário o access compare aquele determinado serviço que estou lançando e os demais(iguais a esse que estou lançando) que já foram lançados com a qtdLimite da tabela (tblDetQuadraAndar) e assim me informe se a quantidade limite daquele servico já está atingida ?
    É que acontece muito de a quantidade do servico ter passado do limite e ainda assim aparecerem lançamentos daquele serviço naquele andar..

    Não sei se me expliquei bem...
    Alguém tem algum código ou algo parecido que possa ajudar ? Que eu possa adaptar ?
    Desde já agradeço ...
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  Cláudio Más 11/3/2013, 17:08

    Se vc puder enviar o que já tem pronto, facilita bastante com a solução.
    augustopimenta
    augustopimenta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 151
    Registrado : 19/03/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  augustopimenta 11/3/2013, 23:13

    Olá Cláudio .. Obrigado pela ajuda..
    Estou te mandando o banco ... Uso o acccess 2007 ..
    No frmMovimento tem um subform (sfrmDetMovimento) onde desejo realizar o que mencionei acima...
    No subform depois de informar o colaborador e o serviço , gostaria que ao informar a quantidade o access verificasse se a quantidade do serviço ainda está disponível..
    Exemplo:
    Abro o frmMovimento e começo o lançamento.... Digito a obra e os outros campo do frmMovimento.. Ao entrar no subformDetMovimento digito o colaborador, a Qd/Andar e o serviço (serviço X, por exemplo). Na hora de digitar a quantidade, gostaria que o access, verificasse quanto já foi digitado do serviço X. Ou seja, o access teria que achar todos os serviços X já lançados somar suas quantidades juntamente com a que estou lançando naquele momento e comparar com o campo QtdLimite que está na tblDetQuadraAndar.
    Se essa quantidade estivesse dentro do limite, o cadastro continuaria normalmente, mas se estivesse fora desse limite ele emitira uma mensagem de aviso.

    Novamente, não sei se fui claro..
    Mas desde já agradeço e espero alguma dica ...

    Anexos
    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado AttachmentBanco.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (167 Kb) Baixado 12 vez(es)
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  Cláudio Más 12/3/2013, 14:43

    Adicione CodMovimentoDet (invisível) ao sub-form.

    Com a consulta abaixo, você verifica quanto já foi digitado do serviço X:

    SELECT Sum(Quantidade) AS QTotal
    FROM tblDetMovimento
    GROUP BY [CodQdAndarMov], [CodServicoMov], [CodMovimentoDet]
    HAVING [CodQdAndarMov]=[Formulários]![frmMovimento]![sfrmDetMovimento].[Formulário]![cboCodQd] AND [CodServicoMov]=[Formulários]![frmMovimento]![sfrmDetMovimento].[Formulário]![cboServico] AND [CodMovimentoDet]<>[Formulários]![frmMovimento]![sfrmDetMovimento].[Formulário]![CodMovimentoDet]


    Com a consulta abaixo, você verifica o limite:

    SELECT Limite FROM (tblQdAndar INNER JOIN tblDetMovimento ON tblQdAndar.CodQdAndar = tblDetMovimento.CodQdAndarMov) INNER JOIN tblDetQdAndar ON tblQdAndar.CodQdAndar = tblDetQdAndar.CodDetQdAndar
    WHERE tblDetMovimento.CodQdAndarMov=[Formulários]![frmMovimento]![sfrmDetMovimento].[Formulário]![cboCodQd] AND tblDetQdAndar.CodQdAndarServ=[Formulários]![frmMovimento]![sfrmDetMovimento].[Formulário]![cboServico]


    Após atualizar a quantidade, faça um DLookUp na consulta 1 e outro na consulta 2; se o limite for maior que o valor que já foi lançado mais a quantidade digitada, permite continuar.
    augustopimenta
    augustopimenta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 151
    Registrado : 19/03/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  augustopimenta 13/3/2013, 15:29

    Ok Claudio ..
    Devo criar 2 consultas, beleza...
    Não tenho muita experiência com VBA e com as funções... MAs tenho lido muitas dicas por aqui e feito alguma coisa..
    Estou fazendo esse banco baseado nas dicas do forum e algumas apostilas que foram recomendadas..
    Como ficaria a chamada dessas 2 consultas no evento após atualizar do campo com a função Dlookup ? Ainda tenho alguns problemas com a sintaxe das funções..
    E mais uma vez eu agradeço sua ajuda...

    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  Cláudio Más 13/3/2013, 18:15

    Código:
    Dim TotalServiço, Limite

    TotalServiço = DLookUp("[QTotal]", "Consulta 1")
    Limite = DLookUp("[Limite]", "Consulta 2")
    augustopimenta
    augustopimenta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 151
    Registrado : 19/03/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  augustopimenta 15/3/2013, 13:31

    Olá Cláudio .
    Não está funcionando ..
    Criei as consultas e coloquei o código no evento após atualizar, mas não está a funcionar...
    O que estou fazendo de errado ..???
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  Cláudio Más 15/3/2013, 13:40

    Não dá pra adivinhar... Smile

    Só vendo mesmo.
    augustopimenta
    augustopimenta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 151
    Registrado : 19/03/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  augustopimenta 15/3/2013, 14:13

    Criei 2 consultas como vc indicou ..
    Consulta1 - que verifica o serviço..
    Consulta2 - que verifica o limite ....
    No evento apos atualizar do campo Quantidade coloquei o código como vc indicou:

    Dim TotalServiço, Limite

    TotalServiço = DLookUp("[QTotal]", "Consulta1")
    Limite = DLookUp("[Limite]", "Consulta2")

    Depois fiz:
    If TotalServico > Limite Then
    MsgBox "Estourou limite.", vbCritical, "Erro ..."
    Me.ValorUnitarioMov.SetFocus
    End If

    Mas depois que atualizo, nada aconcete ...
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  Cláudio Más 15/3/2013, 14:34

    Se nada acontece, é porque não estourou o limite...

    Tente essas alterações:

    Código:
    Dim TotalServiço, Limite

    TotalServiço = Nz(DLookup("[QTotal]", "Consulta1"), 0)
    Limite = Nz(DLookup("[Limite]", "Consulta2"), 0)

    If (CDbl(TotalServico) + Nz(Me.Quantidade, 0)) > CDbl(Limite) Then
        MsgBox "Estourou limite.", vbCritical, "Erro ..."
        Me.ValorUnitarioMov.SetFocus
    End If
    augustopimenta
    augustopimenta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 151
    Registrado : 19/03/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  augustopimenta 15/3/2013, 14:45

    Deu: uso de Null inválido...
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  Cláudio Más 15/3/2013, 15:24

    É estranho, no código não está sendo feita nenhuma operação envolvendo valor nulo.
    Pode enviar o programa para facilitar com a solução?
    augustopimenta
    augustopimenta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 151
    Registrado : 19/03/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  augustopimenta 15/3/2013, 15:44

    Ok..

    Segue o banco ...
    Anexos
    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado AttachmentBanco.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (465 Kb) Baixado 24 vez(es)
    augustopimenta
    augustopimenta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 151
    Registrado : 19/03/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  augustopimenta 15/3/2013, 16:09

    Olá Claudio ..
    Acabei de descobrir..
    Era um Ç mal colocado que estava atrapalhando o código ...
    A variável foi criada com ç e eu a escrevi sem o cedilha .. Não gosto de colocar esses acentos justamente para não atrapalhar..
    Como copiei o seu código ele veio com o cedilha e eu não reparei ...
    Culpa minha... Peço desculpas..
    Vou dar mais algumas testadas e te digo se ficou realmente legal...
    Agradeço mais uma vez...
    Mais tarde te mando a resposta definitiva..
    Até mais tarde ....
    augustopimenta
    augustopimenta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 151
    Registrado : 19/03/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  augustopimenta 18/3/2013, 01:04

    Olá Cláudio ..
    Testei o código e ele só funciona no registro atual ..
    Por exemplo, se existirem lançamentos daquele serviço em outros registros, ele não pega. Ele teria que verificar se os lançamentos anteriores mais o atual que eu estiver fazendo naquele momento, se a soma deles ultrapassa ou não o limite cadastrado..
    Alguma dica...
    Já te agradecendo novamente ...
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  Cláudio Más 18/3/2013, 11:41

    Eu achei que CodMovimentoDet era a chave primária de tblDetMovimento.

    Crie um campo do tipo numeração automática, chave primária, chamado Id nessa tabela.
    Adicione esse campo (invisível) no subform sfrmDetMovimento.
    A consulta qryVerificaServico fica assim:

    SELECT Sum(Quantidade) AS QTotal FROM tblDetMovimento WHERE CodQdAndarMov=[Formulários]![frmMovimento]![sfrmDetMovimento].[Formulário]![cboCodQd] AND CodServicoMov=[Formulários]![frmMovimento]![sfrmDetMovimento].[Formulário]![cboServico] AND Id<=[Formulários]![frmMovimento]![sfrmDetMovimento].[Formulário]![Id]
    augustopimenta
    augustopimenta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 151
    Registrado : 19/03/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  augustopimenta 18/3/2013, 12:49

    Olá Cláudio..
    Funcionou perfeitamente..
    Obrigado pela paciência e pela competência na execução da rotina..
    Sucesso ...
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  Cláudio Más 18/3/2013, 13:24

    Valeu, sucesso

    Conteúdo patrocinado


    [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado Empty Re: [Resolvido]Comparar dados em tabelas diferentes e emitir uma mensagem de aviso de acordo com o resultado

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 18:28