MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    Consulta Atualização - Condição

    Compartilhe

    Pretor
    Novato
    Novato

    Respeito às Regras 100%

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

    Consulta Atualização - Condição

    Mensagem  Pretor em 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
    avatar
    ronaldojr1
    Avançado
    Avançado

    Respeito às Regras 100%

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

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

    Mensagem  ronaldojr1 em 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

    Pretor
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  Pretor em 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!!
    avatar
    ronaldojr1
    Avançado
    Avançado

    Respeito às Regras 100%

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

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

    Mensagem  ronaldojr1 em 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: 16/12/2018, 11:39