Como criar uma consulta atualização no access 2010 para atualizar com base no critério informado em um formulário?
3 participantes
[Resolvido]Criar consulta atualização com critério em Formulário
SAPMM- Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 369
Registrado : 07/08/2011
Senhores,
Como criar uma consulta atualização no access 2010 para atualizar com base no critério informado em um formulário?
Como criar uma consulta atualização no access 2010 para atualizar com base no critério informado em um formulário?
Alexandre Neves- Moderador Global
- Respeito às regras :
Sexo :
Localização :
Mensagens : 8496
Registrado : 05/11/2009
Não tenho o 2010, mas julgo que será igual ao 2003.
Sabe fazer o que pretende em 2003? Se não souber, procure aqui no fórum
Sabe fazer o que pretende em 2003? Se não souber, procure aqui no fórum
Convidado- Convidado
Tem um exemplo de caixa no forum que tem exemplo de consulta atualizaçào.. da uma olhadinha la...
SAPMM- Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 369
Registrado : 07/08/2011
não achei de atualização, achei apenas de exclusão e acrescimo. Estou procurando atualização com critério em form
Alexandre Neves- Moderador Global
- Respeito às regras :
Sexo :
Localização :
Mensagens : 8496
Registrado : 05/11/2009
Não sei como procurou, mas tem vários
veja este http://maximoaccess.forumeiros.com/t3740-resolvidoexecutar-update?highlight=update
veja este http://maximoaccess.forumeiros.com/t3740-resolvidoexecutar-update?highlight=update
SAPMM- Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 369
Registrado : 07/08/2011
Alexandre,
Não consegui baixar o arquivo de exemplo. O arquivo não existe mais.
Não consegui baixar o arquivo de exemplo. O arquivo não existe mais.
Alexandre Neves- Moderador Global
- Respeito às regras :
Sexo :
Localização :
Mensagens : 8496
Registrado : 05/11/2009
O exemplo não sei, mas tem o código
http://maximoaccess.forumeiros.com/t3740-resolvidoexecutar-update#32262
http://maximoaccess.forumeiros.com/t3740-resolvidoexecutar-update#32262
Agravina- Maximo VIP
- Respeito às regras :
Sexo :
Localização :
Mensagens : 1623
Registrado : 18/07/2010
Qual é o exemplo? qual criterio quer usar?
SAPMM- Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 369
Registrado : 07/08/2011
Quero incluir uma data em um formulário e em seguida clicar em um botão que executa uma consulta atualização com todos os registros que não tiver o campo data preenchido e preencher com o valor que adicionei no campo no form.
Convidado- Convidado
Tente assim:
CurrentDb.Execute "UPDATE SuaTabela set CamponaTabela= '" & Me.SeuCampoNoForm & "' WHERE SeuCampoNaTabela=Null;"
CurrentDb.Execute "UPDATE SuaTabela set CamponaTabela= '" & Me.SeuCampoNoForm & "' WHERE SeuCampoNaTabela=Null;"
SAPMM- Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 369
Registrado : 07/08/2011
Meu caro,
Preciso também além do update, preciso selecionar primeiramente os valores com um critério, por exemplo, tenho dois campos na tabela sendo um "data prevista" e o outro "data pagto". Primeiramente tenho que selecionar os registros que o campo "data prevista" possui uma determinada data e cujo campo "data pagto" esteja null e na sequencia atualizar o valor do campo "data de pagto" para o valor incluído no form.
Você poderia me passar um código para essas ações?
Preciso também além do update, preciso selecionar primeiramente os valores com um critério, por exemplo, tenho dois campos na tabela sendo um "data prevista" e o outro "data pagto". Primeiramente tenho que selecionar os registros que o campo "data prevista" possui uma determinada data e cujo campo "data pagto" esteja null e na sequencia atualizar o valor do campo "data de pagto" para o valor incluído no form.
Você poderia me passar um código para essas ações?
Convidado- Convidado
Tente assim:
CurrentDb.Execute "UPDATE SuaTabela set CamponaTabela=#" & Me.CampoDataNoForm & "# where CampoData1 = #" & Date & "# " and CampoData2=Null"
CurrentDb.Execute "UPDATE SuaTabela set CamponaTabela=#" & Me.CampoDataNoForm & "# where CampoData1 = #" & Date & "# " and CampoData2=Null"
SAPMM- Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 369
Registrado : 07/08/2011
Enviei o BD de exemplo para seu e-mail, pois não consigo postar arquivo no forum.
Não consegui utilizar o comando, você poderia verificar no meu BD de exemplo, minha ideia é atualizar em algum momento a data de pagto com base em uma data prevista na tabela. Por exemplo, a cada pagamento realizado fora do BD (extrato bancário) irei no BD é atualizo o campo data de pagto com base em uma data prevista especificada no critério de seleção.
Não consegui utilizar o comando, você poderia verificar no meu BD de exemplo, minha ideia é atualizar em algum momento a data de pagto com base em uma data prevista na tabela. Por exemplo, a cada pagamento realizado fora do BD (extrato bancário) irei no BD é atualizo o campo data de pagto com base em uma data prevista especificada no critério de seleção.
Convidado- Convidado
O BD do colega...
http://dl.dropbox.com/u/26441349/Donizeth.zip
http://dl.dropbox.com/u/26441349/Donizeth.zip
Convidado- Convidado
Taí amigão...
Escolha uma dta prevista, aplique na caixa texto e clique no botão atualizar, depois veja o resultado na tabela..
http://dl.dropbox.com/u/26441349/Donizeth_21_08_11.rar
Saudações
Escolha uma dta prevista, aplique na caixa texto e clique no botão atualizar, depois veja o resultado na tabela..
http://dl.dropbox.com/u/26441349/Donizeth_21_08_11.rar
Saudações
SAPMM- Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 369
Registrado : 07/08/2011
Meu caro, tá quase mas ainda não consigo finalizar, pois da forma que ficou não consigo informar o valor para a data de pagto, o access está preenchendo com a data atual, e não verdade o que eu gostaria é de informar a data prevista no form e para qual valor de data de pagto eu gostaria preencher.
Vc pode me dar uma força nessa questão?
Vc pode me dar uma força nessa questão?
Convidado- Convidado
Crie outra caixa texto e a nomeie de dtaPgto
No Código:
Private Sub btAtualizar_Click()
CurrentDb.Execute "UPDATE tblData set dtaPgto=#" & Me.DtaPgto & "# where dtaPrev = #" & Me.DtaPrev & "# "
MsgBox "Data de Pagamento atualizada!", vbInformation, "ATUALIZADO"
End Sub
No Código:
Private Sub btAtualizar_Click()
CurrentDb.Execute "UPDATE tblData set dtaPgto=#" & Me.DtaPgto & "# where dtaPrev = #" & Me.DtaPrev & "# "
MsgBox "Data de Pagamento atualizada!", vbInformation, "ATUALIZADO"
End Sub
SAPMM- Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 369
Registrado : 07/08/2011
Amigão, ficou ótimo, muito obrigado. E como ainda tenho muitas dúvidas, volta e meia estarei aqui no forum sanando minhas dúvidas.
Grande abraço.
Grande abraço.
Convidado- Convidado
Faltou o resolvido ai AMigão..
Bom trabalho
Bom trabalho
Convidado- Convidado
Porfavor.. teste ai ao se escolher a dataPrev.. se ela não estiver cadastrada.. veja se dará algum erro..
Isso é importante ver, pois caso o usuario digite uma data que não exista na tabelas pode ser que produza um erro na Expressão
Isso é importante ver, pois caso o usuario digite uma data que não exista na tabelas pode ser que produza um erro na Expressão
Convidado- Convidado
Quando a dtaPrev não existe ele não atualiza porem dá a mensagem de Atualizada..
Para corrigir isto:
Private Sub btAtualizar_Click()
If (Not IsNull(DLookup("[dtaPrev]", "tblData", _
"[dtaPrev] =#" & Me.DtaPrev & "# "))) Then
CurrentDb.Execute "UPDATE tblData set dtaPgto=#" & Me.DtaPgto & "# where dtaPrev = #" & Me.DtaPrev & "# "
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
Para corrigir isto:
Private Sub btAtualizar_Click()
If (Not IsNull(DLookup("[dtaPrev]", "tblData", _
"[dtaPrev] =#" & Me.DtaPrev & "# "))) Then
CurrentDb.Execute "UPDATE tblData set dtaPgto=#" & Me.DtaPgto & "# where dtaPrev = #" & Me.DtaPrev & "# "
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
SAPMM- Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 369
Registrado : 07/08/2011
Ótimo, ajustei conforme abaixo, mas encontrei uma outro probleminha, se o usuário não preencher a data prevista e clicar no botão atualizar, o access retorna com erro de expressão, é possível resolver isso?
Convidado- Convidado
- Código:
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("[dtaPrev]", "tblData", _
"[dtaPrev] =#" & Me.DtaPrev & "# "))) Then
CurrentDb.Execute "UPDATE tblData set dtaPgto=#" & Me.DtaPgto & "# where dtaPrev = #" & Me.DtaPrev & "# "
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
Saudações
SAPMM- Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 369
Registrado : 07/08/2011
Resolvido, ficou ótimo.
Convidado- Convidado
O Fórum agradece o retorno.
SAPMM- Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 369
Registrado : 07/08/2011
Harysohn, Não está funcionando quando a data prevista é de 01 a 09, exemplo: 03/10/2011, 02/09/2011, só funciona quando a data é a partir do dia 10, ou seja 10/09/2011, etc.
Tem alguma ideia?
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]=#" & Me.DtaPrev & "#"))) Then
CurrentDb.Execute "UPDATE GerarProtocoloItem set [DATA PAGTO]=#" & Me.dtaPgto & "# where [DATA PREVISTA] =#" & Me.DtaPrev & "#"
MsgBox "Data de Pagamento atualizada!", vbInformation, "ATUALIZADO"
Else
MsgBox "Não existe esta data de previsão de pagamento!", vbInformation, "Atenção"
End If
Tem alguma ideia?
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]=#" & Me.DtaPrev & "#"))) Then
CurrentDb.Execute "UPDATE GerarProtocoloItem set [DATA PAGTO]=#" & Me.dtaPgto & "# where [DATA PREVISTA] =#" & Me.DtaPrev & "#"
MsgBox "Data de Pagamento atualizada!", vbInformation, "ATUALIZADO"
Else
MsgBox "Não existe esta data de previsão de pagamento!", vbInformation, "Atenção"
End If
Convidado- Convidado
Não estou no meu pc.. mas no código em todas as instruções que contem datas faça como o exemplo abaixo:
#" & Me.DtaPrev & "# (Original)
#" & Format(Me.DtaPrev,"mm/dd/yyyy") & "# (Alterado) >>>> Faça assim como este
#" & Me.DtaPrev & "# (Original)
#" & Format(Me.DtaPrev,"mm/dd/yyyy") & "# (Alterado) >>>> Faça assim como este
Convidado- Convidado
f 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") & "# where [DATA PREVISTA] =#" & Format(Me.DtaPrev,"mm/dd/yyyy") & "#"
MsgBox "Data de Pagamento atualizada!", vbInformation, "ATUALIZADO"
Else
MsgBox "Não existe esta data de previsão de pagamento!", vbInformation, "Atenção"
End If
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") & "# where [DATA PREVISTA] =#" & Format(Me.DtaPrev,"mm/dd/yyyy") & "#"
MsgBox "Data de Pagamento atualizada!", vbInformation, "ATUALIZADO"
Else
MsgBox "Não existe esta data de previsão de pagamento!", vbInformation, "Atenção"
End If
SAPMM- Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 369
Registrado : 07/08/2011
resolvido.
SAPMM- Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 369
Registrado : 07/08/2011
Harysohn,
Estou tentando resolver dois problemas no código abaixo. Primeiro quero que uma vez atualizada a data de pagamento, caso execute novamente o botão o access não faça novo update no campo data de pagto, caso este campo já esteja preenchido. E um outro problema e que gostaria de atualizar um novo campo, por exemplo campo "BANCO" na mesma tabela atualizar para "banco do brasil"
Você pode dar uma olhada?
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") & "# where [DATA PREVISTA] =#" & Format(Me.DtaPrev, "mm/dd/yyyy") & "#"
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
Estou tentando resolver dois problemas no código abaixo. Primeiro quero que uma vez atualizada a data de pagamento, caso execute novamente o botão o access não faça novo update no campo data de pagto, caso este campo já esteja preenchido. E um outro problema e que gostaria de atualizar um novo campo, por exemplo campo "BANCO" na mesma tabela atualizar para "banco do brasil"
Você pode dar uma olhada?
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") & "# where [DATA PREVISTA] =#" & Format(Me.DtaPrev, "mm/dd/yyyy") & "#"
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
Alexandre Neves- Moderador Global
- Respeito às regras :
Sexo :
Localização :
Mensagens : 8496
Registrado : 05/11/2009
donizeth,
Espero que não limite a ajuda ao amigo Harysohn!
Tanto mais que ele está em recuperação. Aproveito para lhe reiterar as rápidas e definitivas melhoras.
Para verificar se a data prevista já está preenchida, não encontrei nenhum campo de controlo, além do [Data Prevista]. Seria conveniente ter um campo de um campo de identificação única do registo de forma a não afectar mais que o registo pretendido. Pense nisto!
veja se funciona:
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") Then
msgbox "O campo 'Data Prevista' já está preenchido."
ElseIf (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='Banco do Brasil' where [DATA PREVISTA] =#" & Format(Me.DtaPrev, "mm/dd/yyyy") & "#"
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
Para si e restantes membros:
Quando existir alguma dúvida, que não exista ainda no fórum, abra novo tema.
Se existir algum tema adequado já resolvido, utilize-o; Se já existir algum tema com alguma semelhança resolvido, abra novo tema e pode referenciar o tema já resolvido como tema semelhante.
Caso acrescentem ao tema já resolvido, levará a ser interpretado como resolvido.
Espero que não limite a ajuda ao amigo Harysohn!
Tanto mais que ele está em recuperação. Aproveito para lhe reiterar as rápidas e definitivas melhoras.
Para verificar se a data prevista já está preenchida, não encontrei nenhum campo de controlo, além do [Data Prevista]. Seria conveniente ter um campo de um campo de identificação única do registo de forma a não afectar mais que o registo pretendido. Pense nisto!
veja se funciona:
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") Then
msgbox "O campo 'Data Prevista' já está preenchido."
ElseIf (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='Banco do Brasil' where [DATA PREVISTA] =#" & Format(Me.DtaPrev, "mm/dd/yyyy") & "#"
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
Para si e restantes membros:
Quando existir alguma dúvida, que não exista ainda no fórum, abra novo tema.
Se existir algum tema adequado já resolvido, utilize-o; Se já existir algum tema com alguma semelhança resolvido, abra novo tema e pode referenciar o tema já resolvido como tema semelhante.
Caso acrescentem ao tema já resolvido, levará a ser interpretado como resolvido.
Conteúdo patrocinado