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

    Consulta Atualização - Condição

    avatar
    Pretor
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 27/02/2010

    Consulta Atualização - Condição Empty Consulta Atualização - Condição

    Mensagem  Pretor 26/11/2018, 18:47

    Galera, boa tarde!

    Estou trabalhando em um BD no qual existem diversas tabelas, sendo duas relevantes para o meu problema: tblProdutos e tblSubAcertoEstoque

    Na tblProdutos tenho o campo "Quantidade" e na tblSubAcertoEstoque os campos "Quantidade" e "TipoMov", sendo para este cabível "E" = entrada e "S" = Saída.

    Necessito realizar a atualização do campo "Quantidade" da tblProdutos à medida em que vou registrando as movimentações de "entrada" ou "saída". Ou seja:

    Preciso realizar o seguinte acerto:
    abobrinha = Entrada 100
    Banana = Saída de 50

    No caso preciso utilizar duas consultas atualização ao mesmo tempo, pois, para o registro abobrinha seria uma entrada de 100, enquanto para o registro banana seria uma saída de 50.

    Tentei utilizar o seguinte código, mas não funciona corretamente.

    Private Sub cmdSalvar_Click()
    '''On Error Resume Next
    'Esta função executa a consulta Atualiza Estoque, passando os


    'Defino variáveis ------------------------------------------------------------

    Dim BancoDeDados As Database
    Dim Consulta As QueryDef
    Dim strMsg As String
    Dim strTitle As String
    Dim intRetVal As Integer
    Dim Cancel As String

    'Pego o Banco de Dados em uso ------------------------------------------------
    Set BancoDeDados = CurrentDb()

    'Executo a consulta ----------------------------------------------------------

    If Me.NewRecord Then
    strMsg = "Verifique todos os lançamentos e clique em SIM para atualizar o Acerto do Estoque e NÃO para abortar a atualização!"
    strTitle = "Atualizando Estoque"
    Else
    strMsg = "Verifique todos os lançamentos e clique em SIM para atualizar o Acerto do Estoque e NÃO para abortar a atualização!"
    strTitle = "Atualizando Estoque"
    End If

    intRetVal = MsgBox(strMsg, vbExclamation + vbOKCancel, strTitle)

    Select Case intRetVal
    Case vbOK
    DoCmd.SetWarnings False
    If Me.frmSubEstoqueAcerto!Tipo = "E" Then
    DoCmd.OpenQuery "qryAtualizaEntradaEstoqueAcerto"
    DoCmd.Requery
    ElseIf Me.frmSubEstoqueAcerto!Tipo = "S" Then
    DoCmd.OpenQuery "qryAtualizaSaidaEstoqueAcerto"
    DoCmd.Requery
    Else
    End If
    DoCmd.SetWarnings True
    DoCmd.GoToRecord , , acNewRec
    CodChaveEstoqAcerto.SetFocus

    Case vbCancel
    Cancel = True
    CodChaveEstoqAcerto.SetFocus

    End Select
    End Sub

    Assim, pergunto aos colegas: É possível executar as duas consultas utilizando o "IF" ? Ou o que pretendo não é viável?

    Antecipo agradecimentos.

    Júlio Cesar - Pretor
    ronaldojr1
    ronaldojr1
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 419
    Registrado : 01/08/2011

    Consulta Atualização - Condição Empty Re: Consulta Atualização - Condição

    Mensagem  ronaldojr1 26/11/2018, 19:41

    boa tarde
    É possível executar as duas consultas utilizando o "IF" ? Ou o que pretendo não é viável?
    R: Sim, é viável, mas tem q fazer alguns ajustes. rs

    normalmente eu nao trabalho com consultas dessa maneira, pois elas é meio bugada mesmo. tem q controlar certinho.

    eu prefiro fazer o seguinte:
    1 - faço a construção da consulta normalmente pelo mode design da consulta.
    2 - após a consulta estiver funcionando perfeitamente eu troco o modo da consulta para "Modo SQL"
    3 - copio todo o codigo SQL da consulta
    4 - declaro uma variavel do tipo String. ex.: dim strSQL as string
    5 - colo o código copiado na etapa 3 e atribuo na variavel strSQL.
    6 - e por fim uso o comando: doCmd.RunSQL strSQL

    dica:
    para a string nao ficar em uma unica linha vc pode organizar quebrando o texto inserindo & _ depois das aspas duplas.
    segue exemplo completo:

    Código:
    dim strSQL as String

    'dica de fazer if com msgbox sem precisar da variavel intRetVal
    if MsgBox(strMsg, vbExclamation + vbOKCancel, strTitle) = vbOk then
       strSQL = "UPDATE SUA_TABELA SET SEUS_CAMPOS = VALOR " & _
                "WHERE SUA_CONDICAO "
    else
       strSQL = "UPDATE SUA_TABELA SET SEUS_CAMPOS = VALOR " & _
                "WHERE SUA_CONDICAO "
    end if

    doCmd.runSQL strSQL
    docmd.Requery

    abraços
    avatar
    Pretor
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 27/02/2010

    Consulta Atualização - Condição Empty Re: Consulta Atualização - Condição

    Mensagem  Pretor 29/11/2018, 20:26

    Ronaldo Jr., obrigado!

    Minhas questão é um pouco mais complexa, pois, envolve também a execução da consulta ação.
    Porém, sua ajuda contribuiu para eu reconstruir parte do código em outras partes do projeto.

    Valeu!!
    ronaldojr1
    ronaldojr1
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 419
    Registrado : 01/08/2011

    Consulta Atualização - Condição Empty Re: Consulta Atualização - Condição

    Mensagem  ronaldojr1 30/11/2018, 11:38

    opa que bom que ajudou, mas eu quero ver resolvido nesse tópico. rs
    então explica melhor para nós o que vc quer dizer na parte em que menciona que não está funcionando corretamente.
    e de preferencia mandar uma parte do bd para analisarmos juntos.

    grato

      Data/hora atual: 1/8/2021, 11:41