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]Consulta atualizar via VBA

    avatar
    SAPMM
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 369
    Registrado : 07/08/2011

    [Resolvido]Consulta atualizar via VBA Empty Consulta atualizar via VBA

    Mensagem  SAPMM 30/5/2012, 20:36

    Senhores,


    Tenho um botão em um form com o código abaixo, porém preciso, ajustar o código adicionando ao critério de seleção para que seja selecionado somente itens que na tabela GerarProtocolocab nos campos Canceladocadastro ou Canceladocontabil ou CanceladoContrato ou CanceladoCp tenha o valor “SIM” ou “5”. Estou tentando ajustar mas não consegui.


    Private Sub btAtualizar_Click()

    If IsNull(Me.DtaPrev) = True Or Me.DtaPrev.Value = "" Then
    MsgBox "Preencha uma data de previsão válida, não é permitido deixar este campo em branco!", vbCritical, "Atenção"
    Me.DtaPrev.BackColor = vbRed
    Me.DtaPrev.ForeColor = vbWhite
    Me.DtaPrev.SetFocus
    Exit Sub
    End If

    If (Not IsNull(DLookup("[DATA PREVISTA]", "GerarProtocoloItem", _
    "[DATA PREVISTA]=#" & Format(Me.DtaPrev, "mm/dd/yyyy") & "#"))) Then

    CurrentDb.Execute "UPDATE GerarProtocoloItem set [DATA PAGTO]=#" & Format(Me.dtaPgto, "mm/dd/yyyy") & "#, [BANCO PAGADOR]='BRASIL - BR' where [DATA PREVISTA] =#" & Format(Me.DtaPrev, "mm/dd/yyyy") & "# and IsNull([data pagto])"

    MsgBox "Data de Pagamento atualizada!", vbInformation, "ATUALIZADO"
    Else
    MsgBox "Não existe esta data de previsão de pagamento!", vbInformation, "Atenção"
    End If

    End Sub
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  Convidado 31/5/2012, 13:28

    Algo assim?

    CurrentDb.Execute "UPDATE GerarProtocoloItem set [DATA PAGTO]=#" & Format(Me.dtaPgto, "mm/dd/yyyy") & "#, [BANCO PAGADOR]='BRASIL - BR' where [DATA PREVISTA] =#" & Format(Me.DtaPrev, "mm/dd/yyyy") & "# and IsNull([data pagto]) And (((Cp)=Yes)) OR (((Cp1)=Yes) or ((Cp2)=Yes));"

    avatar
    SAPMM
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 369
    Registrado : 07/08/2011

    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  SAPMM 31/5/2012, 14:19

    Mas os campos novos estão em outra tabela. Na tabela GerarProtocolocab.
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  Convidado 31/5/2012, 15:31

    As tabelas são relacionadas?

    Se puder post um exemplo com as tabelas e o código.

    Cumprimentos.
    avatar
    SAPMM
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 369
    Registrado : 07/08/2011

    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  SAPMM 31/5/2012, 16:29

    Segue em anexo no access 2003
    Anexos
    [Resolvido]Consulta atualizar via VBA AttachmentAtualizardatapagtoemmassa2003.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (98 Kb) Baixado 84 vez(es)
    avatar
    SAPMM
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 369
    Registrado : 07/08/2011

    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  SAPMM 31/5/2012, 16:29

    Segue em access 2010
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  Convidado 31/5/2012, 18:59

    Faça uma breve descrição de como funciona essa atualização, os campos no form é para atualizar em que tabela.

    Descreva todo o processo.

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  Convidado 31/5/2012, 19:16

    Tente assim:

    CurrentDb.Execute "UPDATE GerarProtocoloCab LEFT JOIN GerarProtocoloItem ON GerarProtocoloCab.NUMERADOR = GerarProtocoloItem.NUMERADOR" _
    & " SET GerarProtocoloItem.[DATA PAGTO] = #" & Format(Me.dtaPgto, "mm/dd/yyyy") & "#, GerarProtocoloItem.[BANCO PAGADOR]" _
    & " = 'BRASIL - BR' WHERE (((GerarProtocoloCab.CANCELADOCADASTRO)='sim')) OR (((GerarProtocoloCab.CANCELADOCONTABIL)='sim')" _
    & " Or ((GerarProtocoloCab.CANCELADOCONTRATUAL)='sim') or ((GerarProtocoloCab.CANCELADOFISCAL)='sim'));"


    Última edição por Harysohn em 31/5/2012, 19:28, editado 1 vez(es) (Motivo da edição : Corrigir SQL)
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  Convidado 31/5/2012, 20:18

    Estive a ver a tabela, e os campos com valores sim/nao tem origem em uma caixa de combinação, entao os critérios não servirão da forma como está acima.

    ** a caixa de combinação tem duas opções SIM = 1 e NAO = 2

    Então substitua os SIM por 2 na SQL da mensagem anterior.

    Cumprimetos.
    avatar
    SAPMM
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 369
    Registrado : 07/08/2011

    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  SAPMM 31/5/2012, 20:47

    Mas também tenho que não atualizar os registros que não estão com o campo dataprevista preenchido.
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  Convidado 31/5/2012, 22:40

    Boas Donizeth, assim como pediu na otigem do tópico o fiz.

    Uma dica, ao colocar a dúvida, ja a explique em todo seu conteudo, assim evitasmos a ficar dando voltas em soluções..


    Especifique novamente qual campo e qual tabela.

    Cumprimentos.
    avatar
    SAPMM
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 369
    Registrado : 07/08/2011

    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  SAPMM 31/5/2012, 23:12

    No inicio do tópico coloquei de forma clara o que eu estava tentando fazer, ou seja, queria adicionar ao código existente a seleção do registros que na tabela Gerarprotocolocab nos campos : Canceladocadastro ou Canceladocontabil ou CanceladoContrato ou CanceladoCp[/b] tenha o valor “SIM” ou “5”

    Senhores,


    Tenho um botão em um form com o código abaixo, porém preciso, ajustar o código adicionando ao critério de seleção para que seja selecionado somente itens que na tabela GerarProtocolocab nos campos Canceladocadastro ou Canceladocontabil ou CanceladoContrato ou CanceladoCp tenha o valor “SIM” ou “5”. Estou tentando ajustar mas não consegui.


    Private Sub btAtualizar_Click()

    If IsNull(Me.DtaPrev) = True Or Me.DtaPrev.Value = "" Then
    MsgBox "Preencha uma data de previsão válida, não é permitido deixar este campo em branco!", vbCritical, "Atenção"
    Me.DtaPrev.BackColor = vbRed
    Me.DtaPrev.ForeColor = vbWhite
    Me.DtaPrev.SetFocus
    Exit Sub
    End If

    If (Not IsNull(DLookup("[DATA PREVISTA]", "GerarProtocoloItem", _
    "[DATA PREVISTA]=#" & Format(Me.DtaPrev, "mm/dd/yyyy") & "#"))) Then

    CurrentDb.Execute "UPDATE GerarProtocoloItem set [DATA PAGTO]=#" & Format(Me.dtaPgto, "mm/dd/yyyy") & "#, [BANCO PAGADOR]='BRASIL - BR' where [DATA PREVISTA] =#" & Format(Me.DtaPrev, "mm/dd/yyyy") & "# and IsNull([data pagto])"

    MsgBox "Data de Pagamento atualizada!", vbInformation, "ATUALIZADO"
    Else
    MsgBox "Não existe esta data de previsão de pagamento!", vbInformation, "Atenção"
    End If

    End Sub
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  Convidado 31/5/2012, 23:49

    Donizeth amigão, isso eu ja o fiz acima...

    mas olha o que falou logo em seguida:

    Mas também tenho que não atualizar os registros que não estão com o campo dataprevista preenchido.

    Isto não estava no início do código. Estou falando quanto a este problema que não havia citado.

    De detalhes sobre isso.

    Cumprimentos.
    avatar
    SAPMM
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 369
    Registrado : 07/08/2011

    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  SAPMM 1/6/2012, 11:59

    No exemplo, tenho que atualizar os registros na tabela gerarprotocoloitem somente se o campo "DATA PREVISTA" estiver preenchido e se o campo "DATA PAGTO" não estiver preenchido nessa tabela gerarprotocoloitem. Além desse critério deve-se verificar se os campos na outra tabela Gerarprotocolocab campos Canceladocadastro ou Canceladocontabil ou CanceladoContrato ou CanceladoCp[/b] tenha o valor diferente de “SIM” ou “5”

    As duas tabelas Geraprotocolocab e gerarprotocoloitem são relacionadas através do campo "Numerador".

    Sendo assim, a atualização deverá comparar campos nas duas tabelas e atualizar somente em uma delas e nesse caso atualizar na tabela Gerarprotocoloitem conforme informado acima.

    Minha dificuldade é transformar a SQL abaixo em código VBA.

    Fazendo a consulta em SQL ficou com a seguinte instrução :

    PARAMETERS [Formulários]![FormAtualizardata]![DtaPrev] DateTime, [Formulários]![FormAtualizardata]![dtaPgto] DateTime;
    UPDATE GerarProtocoloCab INNER JOIN GerarProtocoloItem ON GerarProtocoloCab.NUMERADOR = GerarProtocoloItem.NUMERADOR SET GerarProtocoloItem.[DATA PAGTO] = [Formulários]![FormAtualizardata]![dtaPgto]
    WHERE (((GerarProtocoloItem.[DATA PREVISTA])=[Formulários]![FormAtualizardata]![DtaPrev] And (GerarProtocoloItem.[DATA PREVISTA]) Is Not Null) AND ((GerarProtocoloItem.[DATA PAGTO]) Is Null) AND ((GerarProtocoloCab.CANCELADOCADASTRO) Is Null Or (GerarProtocoloCab.CANCELADOCADASTRO)="5") AND ((GerarProtocoloCab.CANCELADOCONTABIL) Is Null Or (GerarProtocoloCab.CANCELADOCONTABIL)="5") AND ((GerarProtocoloCab.CANCELADOFISCAL) Is Null Or (GerarProtocoloCab.CANCELADOFISCAL)="5") AND ((GerarProtocoloCab.CANCELADOCONTRATUAL) Is Null Or (GerarProtocoloCab.CANCELADOCONTRATUAL)="5"));
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  Convidado 1/6/2012, 14:43

    Amigão na tabela os campos cancelados tem valor 1 ou 2. de onde tirou esse 5?

    Com o auxilio do Mestre Balem:

    DoCmd.RunSQL "PARAMETERS [Formulários]![FormAtualizardata]![DtaPrev] DateTime, [Formulários]![FormAtualizardata]![dtaPgto] DateTime;" & _
    "UPDATE GerarProtocoloCab INNER JOIN GerarProtocoloItem ON GerarProtocoloCab.NUMERADOR = GerarProtocoloItem.NUMERADOR " & _
    "SET GerarProtocoloItem.[DATA PAGTO] = [Formulários]![FormAtualizardata]![dtaPgto] " & _
    "WHERE (((GerarProtocoloItem.[DATA PREVISTA])=[Formulários]![FormAtualizardata]![DtaPrev] And " & _
    "(GerarProtocoloItem.[DATA PREVISTA]) Is Not Null) AND ((GerarProtocoloItem.[DATA PAGTO]) Is Null) AND " & _
    "((GerarProtocoloCab.CANCELADOCADASTRO) Is Null Or (GerarProtocoloCab.CANCELADOCADASTRO)='5') AND " & _
    "((GerarProtocoloCab.CANCELADOCONTABIL) Is Null Or (GerarProtocoloCab.CANCELADOCONTABIL)='5') AND " & _
    "((GerarProtocoloCab.CANCELADOFISCAL) Is Null Or (GerarProtocoloCab.CANCELADOFISCAL)='5') AND " & _
    "((GerarProtocoloCab.CANCELADOCONTRATUAL) Is Null Or (GerarProtocoloCab.CANCELADOCONTRATUAL)='5'));"


    Cumprimentos.
    avatar
    SAPMM
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 369
    Registrado : 07/08/2011

    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  SAPMM 1/6/2012, 14:56

    ok, resolvido, obrigado.
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  Convidado 1/6/2012, 15:29

    O Fórum agradece o retorno.

    Cumprimentos.
    avatar
    Vanasantonio
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 2
    Registrado : 07/06/2012

    [Resolvido]Consulta atualizar via VBA Empty ola pessoal

    Mensagem  Vanasantonio 7/6/2012, 11:24

    Gostaria de uma ajuda, não consigo actualizar a minha base de dados que foi feita em Access
    apartir do VB, estou usando o Visual Basic 2010, alguem me pode ajudar
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  Convidado 7/6/2012, 15:58

    Boas Vanasantonio... como este é um fórum específico de Ms Access, creio que talvez não encontre aqui a solução de tua dúvida...

    Bem,de qualquer forma espero que consigas solucionar.

    Cumprimentos.

    Conteúdo patrocinado


    [Resolvido]Consulta atualizar via VBA Empty Re: [Resolvido]Consulta atualizar via VBA

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/5/2024, 20:25