Comando UPDATE SQL

Boa tarde,

Estou com problema em atualizar a linha do banco de dados através do comando UPDATE, não sei o que pode estar errado:

Tela com o histórico:

Código do botão alterar que realiza o UPDATE:

Tela de varáveis:

Código SQL na consulta UPDATE:

UPDATE teste_real

SET Campo1 = ‘<%novo_campo_1%>’ , Campo2 = ‘<%novo_campo_2%>’ , Campo3 = <%novo_campo_3%> , Campo4 = <%novo_campo_4%> ,Campo5 = ‘<%novo_campo_5%>’ , Campo6 = ‘<%novo_campo_6%>’ , Campo7 = ‘<%novo_campo_7%>’ , Campo8 = ‘<%novo_campo_8%>’ , Campo9 = ‘<%novo_campo_9%>’ , Campo10 = ‘<%novo_campo_10%>’ , Campo11 = ‘<%novo_campo_11%>’ , Campo12 = ‘<%novo_campo_12%>’ , Campo13 = ‘<%novo_campo_13%>’ , Campo14 = ‘<%novo_campo_14%>’ , Campo15 = ‘<%novo_campo_15%>’ , Campo16 = ‘<%novo_campo_16%>’ , Campo17 = ‘<%novo_campo_17%>’ , Campo18 = <%novo_campo_18%> , Campo19 = ‘<%novo_campo_19%>’
WHERE E3TimeStamp = #<%data%>#

Entendo que o problema possa estar na cláusula WHERE da sua Query.

Ao utilizar o operador de igualdade, tando data quanto HORA precisam ser iguais para atender a condição. Ao que parece, você está tentando fazer uma atualização dos dados de mesmo dia, independente do horário, correto?

Se sim, você pode atualizar a cláusula WHERE conforme este exemplo:

// SQL Server
WHERE CAST([E3TimeStamp] AS DATE) = CAST(#<%data%># AS DATE)

// Access
WHERE Format([E3TimeStamp], 'dd/mm/yyyy') = Format(#<%data%>#, 'dd/mm/yyyy');

No caso eu quero apenas alterar a linha selecionada, por isso pegar o valor da data e horário. Estou utilizando o botão “EDITAR” para pegar os valores da linha, segue código do botão:

Sub CommandButton10_Click()
Screen.Item("Texto1").Value = Screen.Item("E3Browser1").GetColumnValue(1)	
Screen.Item("spCliente").Value = Screen.Item("E3Browser1").GetColumnValue(0)
Screen.Item("spEquipamento").Value = Screen.Item("E3Browser1").GetColumnValue(2)
Screen.Item("spTempo").Value = Screen.Item("E3Browser1").GetColumnValue(3)
Screen.Item("spID").Value = Screen.Item("E3Browser1").GetColumnValue(4)
Screen.Item("spTipo").Value = Screen.Item("E3Browser1").GetColumnValue(5)
Screen.Item("spStatus").Value = Screen.Item("E3Browser1").GetColumnValue(6)
Screen.Item("spOP").Value = Screen.Item("E3Browser1").GetColumnValue(7)
Screen.Item("spOC").Value = Screen.Item("E3Browser1").GetColumnValue(8)
Screen.Item("spSerie").Value = Screen.Item("E3Browser1").GetColumnValue(9)
Screen.Item("spPressao").Value = Screen.Item("E3Browser1").GetColumnValue(11)
Screen.Item("spCriterio").Value = Screen.Item("E3Browser1").GetColumnValue(12)
Screen.Item("spCriterioreal").Value = Screen.Item("E3Browser1").GetColumnValue(13)
Screen.Item("spProcedimento").Value = Screen.Item("E3Browser1").GetColumnValue(16)
End Sub

Esses dados aparecem nos displays que estão na parte inferior, através deles eu posso alterar algum valor, e clilcar no botão “ALTERAR”, segue código do botão:

Sub CommandButton11_Click()
set update = Screen.Item("update")
	update.SetVariableValue "data" , Screen.Item("Texto1").Value
	update.SetVariableValue "novo_campo_1" , Screen.Item("spCliente").Value
	update.SetVariableValue "novo_campo_2" , Screen.Item("spEquipamento").Value
	update.SetVariableValue "novo_campo_3" , Screen.Item("spTempo").Value
	update.SetVariableValue "novo_campo_4" , Screen.Item("spID").Value
	update.SetVariableValue "novo_campo_5" , Screen.Item("spTipo").Value
	update.SetVariableValue "novo_campo_6" , Screen.Item("spStatus").Value
	update.SetVariableValue "novo_campo_7" , Screen.Item("spOP").Value
	update.SetVariableValue "novo_campo_8" , Screen.Item("spOC").Value
	update.SetVariableValue "novo_campo_9" , Screen.Item("spSerie").Value
	update.SetVariableValue "novo_campo_10" , Screen.Item("spSerie").Value
	update.SetVariableValue "novo_campo_11" , Screen.Item("spPressao").Value
	update.SetVariableValue "novo_campo_12" , Screen.Item("spCriterio").Value
	update.SetVariableValue "novo_campo_13" , Screen.Item("spCriterioreal").Value
	update.SetVariableValue "novo_campo_14" , 5
	update.SetVariableValue "novo_campo_15" , Screen.Item("spTransmissor").Value
	update.SetVariableValue "novo_campo_16" , Screen.Item("spProcedimento").Value
	update.SetVariableValue "novo_campo_17" , Screen.Item("spTransmissor").Value
	update.SetVariableValue "novo_campo_18" , 5
	update.SetVariableValue "novo_campo_19" , Screen.Item("spSerie").Value
	
	update.Execute(true)
	
	
End Sub

Entendi, tente então o método Requery do E3Browser.

Sub CommandButton1_Click()
	Dim update
	Set update = Screen.Item("Consulta1")

	// ...

	update.Execute(True)

	Dim browser
	Set browser = Screen.Item("E3Browser1")	
	browser.Requery()
End Sub