Olá, parceiros!
Estou lutando há dias para construir um código que atualize um registro de uma tabela considerando os valores passados para cada campo de chave da mesma.
Mas, todos os códigos tentados resultam no mesmo: são alterados todos os registros que possuem anteriormente o mesmo valor no campo alterado de um único registro.
Explicando melhor:
Há um Formulário principal (FM_CADASTROOBRA) que exibe em lista os dados da Tabela OBRACOMODO num subformulário (SF_OBRACOMODO).
Quando eu dou duplo clique numa linha desse subformulário, eu abro um formulário popup (FM_OBRACOMODO) com os dados da linha dispostos num formulário normal.
O usuário altera os dados que quiser, por exemplo o campo Forms!FM_OBRACOMODO!CDPAV.
Ao fechar o Formulário Popup (FM_OBRACOMODO) o código abaixo é executado.
Mas, a retornar o controle para o Formulário principal, todos os registros que possuíam anteriormente o mesmo valor que tinha o campo CDPAV, também são alterados na tabela e, logicamente no Subform.
Em suma, as condições definidas na cláusula WHERE não estão sendo respeitadas.
Agradeço muitíssimo qualquer ajuda que vier.
Abs
Henrique
Seguem as partes principais de dois dos Códigos já tentados e que produziram o mesmo efeito:
CurrentDb.Execute "UPDATE OBRACOMODO " & _
"Set [OBRACOMODO].[CDPAV]=(""" & Forms!FM_OBRACOMODO!CDPAV & """), [OBRACOMODO].[CDPAD]=(""" & Forms!FM_OBRACOMODO!CDPAD & """),[OBRACOMODO].[CDREV] = (""" & Forms!FM_OBRACOMODO!CDREV & """) WHERE [OBRACOMODO].[CDOBRA] = " & Forms!FM_OBRACOMODO!CDOBRA & " And [OBRACOMODO].[SQCOM] = " & Forms!FM_OBRACOMODO!SQCOM & ""
*****************************
Set rst = dbs.OpenRecordset("SELECT * FROM OBRACOMODO WHERE CDOBRA = " & Forms!FM_OBRACOMODO!CDOBRA & _
"AND CDCOM = " & Forms!FM_OBRACOMODO!CDCOM & _
"AND SQCOM = " & Forms!FM_OBRACOMODO!SQCOM)
rst.Edit
rst!CDPAV = Forms!FM_OBRACOMODO!CDPAV
rst!CDPAD = Forms!FM_OBRACOMODO!CDPAD
rst!CDREV = Forms!FM_OBRACOMODO!CDREV
rst!AREA = Forms!FM_OBRACOMODO!AREA
rst!PEDIR = Forms!FM_OBRACOMODO!PEDIR
rst!CDREB = Forms!FM_OBRACOMODO!CDREB
rst!ARREB = Forms!FM_OBRACOMODO!ARREB
rst.Update
Estou lutando há dias para construir um código que atualize um registro de uma tabela considerando os valores passados para cada campo de chave da mesma.
Mas, todos os códigos tentados resultam no mesmo: são alterados todos os registros que possuem anteriormente o mesmo valor no campo alterado de um único registro.
Explicando melhor:
Há um Formulário principal (FM_CADASTROOBRA) que exibe em lista os dados da Tabela OBRACOMODO num subformulário (SF_OBRACOMODO).
Quando eu dou duplo clique numa linha desse subformulário, eu abro um formulário popup (FM_OBRACOMODO) com os dados da linha dispostos num formulário normal.
O usuário altera os dados que quiser, por exemplo o campo Forms!FM_OBRACOMODO!CDPAV.
Ao fechar o Formulário Popup (FM_OBRACOMODO) o código abaixo é executado.
Mas, a retornar o controle para o Formulário principal, todos os registros que possuíam anteriormente o mesmo valor que tinha o campo CDPAV, também são alterados na tabela e, logicamente no Subform.
Em suma, as condições definidas na cláusula WHERE não estão sendo respeitadas.
Agradeço muitíssimo qualquer ajuda que vier.
Abs
Henrique
Seguem as partes principais de dois dos Códigos já tentados e que produziram o mesmo efeito:
CurrentDb.Execute "UPDATE OBRACOMODO " & _
"Set [OBRACOMODO].[CDPAV]=(""" & Forms!FM_OBRACOMODO!CDPAV & """), [OBRACOMODO].[CDPAD]=(""" & Forms!FM_OBRACOMODO!CDPAD & """),[OBRACOMODO].[CDREV] = (""" & Forms!FM_OBRACOMODO!CDREV & """) WHERE [OBRACOMODO].[CDOBRA] = " & Forms!FM_OBRACOMODO!CDOBRA & " And [OBRACOMODO].[SQCOM] = " & Forms!FM_OBRACOMODO!SQCOM & ""
*****************************
Set rst = dbs.OpenRecordset("SELECT * FROM OBRACOMODO WHERE CDOBRA = " & Forms!FM_OBRACOMODO!CDOBRA & _
"AND CDCOM = " & Forms!FM_OBRACOMODO!CDCOM & _
"AND SQCOM = " & Forms!FM_OBRACOMODO!SQCOM)
rst.Edit
rst!CDPAV = Forms!FM_OBRACOMODO!CDPAV
rst!CDPAD = Forms!FM_OBRACOMODO!CDPAD
rst!CDREV = Forms!FM_OBRACOMODO!CDREV
rst!AREA = Forms!FM_OBRACOMODO!AREA
rst!PEDIR = Forms!FM_OBRACOMODO!PEDIR
rst!CDREB = Forms!FM_OBRACOMODO!CDREB
rst!ARREB = Forms!FM_OBRACOMODO!ARREB
rst.Update