Problema com SQLEXcute ou Sqlite

 Como estou dando meus primeiros passos com XOJO e Sqlite , testado regravao em uma tabela que criei, e inclui na mo o primeiro registro, no estou conseguindo atualizar campo de um registro. 

Fiz um teste conectando o banco de dados de acordo com as instrues do Adelar e foi tudo bem. Depois tentei regravar o registro usando o SQLExeute no me retorna erro mas tambm no atualiza o registro.

No sei se alguma falha no Sqlite j que nunca trabalhei com ele. Andei vendo exemplos na internet mas todos os exemplos que tinha no mostra o comando update com variaves , somente com campos fixos, vou colocar o cdigo que escrevi, se algum poder ajudar agradeo.

Dim sql As String
Dim estoque As Integer
estoque = CDbl(TxfProduto.Text) // transformando o TxfProduto em integer para ficar igual o campo da tabela
sql = “Update sequencia Set estoque =estoque Where id = 1 ;” // Tabela chamando sequencia com um campo chamado estoque do tipo Integer
App.MyDb.SQLExecute(sql)

If App.MyDb.Error Then
MsgBox("Erro na Atualizao Sequencia " + App.MyDb.ErrorMessage)
Return
End If

MsgBox(“Atualizao feita com Sucesso”)

[quote=178465:@Cauby Osorio]Como estou dando meus primeiros passos com XOJO e Sqlite , testado regravação em uma tabela que criei, e inclui na mão o primeiro registro, não estou conseguindo atualizar campo de um registro.

Fiz um teste conectando o banco de dados de acordo com as instruções do Adelar e foi tudo bem. Depois tentei regravar o registro usando o SQLExeute não me retorna erro mas também não atualiza o registro.

Não sei se alguma falha no Sqlite já que nunca trabalhei com ele. Andei vendo exemplos na internet mas todos os exemplos que tinha não mostra o comando update com variaves , somente com campos fixos, vou colocar o código que escrevi, se alguém poder ajudar agradeço.

Dim sql As String
Dim estoque As Integer
estoque = CDbl(TxfProduto.Text) // transformando o TxfProduto em integer para ficar igual o campo da tabela
sql = “Update sequencia Set estoque =estoque Where id = 1 ;” // Tabela chamando sequencia com um campo chamado estoque do tipo Integer
App.MyDb.SQLExecute(sql)

If App.MyDb.Error Then
MsgBox("Erro na Atualização Sequencia " + App.MyDb.ErrorMessage)
Return
End If
MsgBox(“Atualização feita com Sucesso”)[/quote]

Olá Cauby. O que você fez no seu código, foi simplesmente dizer que seu campo estoque é igual a seu campo estoque. Ou seja, se ele tinha um valor de 2, continuou tendo um valor de 2.

Primeiro de tudo, para evitar confusões, use um nome de variável diferente do nome do campo da sua tabela. Por exemplo, myEstoque, ou varEstoque, qualquer coisa do tipo, para evitar erros.

Em segundo, você precisa compôr a sua variável que forma a sentença SQL, levando em conta a sua variável que armazena o valor, concatenando as duas. No seu exemplo, ficou tudo direto dentro das aspas, sem unir nada. Se o nome da sua variável fosse diferente do nome do campo da tabela, você teria com certeza, uma mensagem de erro.

Terceiro, você não deve converter seu texto para inteiro, porque no momento de unir com a sentença SQL, vai ter que fazer o contrário, para poder concatenar sem erros. Então, resumindo, ficaria mais ou menos assim:

Dim sql As String
Dim myEstoque As String  // Tipo String
myEstoque = TxfProduto.Text           // Sem conversão... 
sql = "Update sequencia Set estoque = " + myEstoque + " Where id = 1 ;"     // Concatenando sentença sql com a sua variável
App.MyDb.SQLExecute(sql)

Note que você poderia concatenar o campo direto… deixei com a variável apenas para não mudar muito a sua lógica.
Claro que você precisa garantir no formulário de entrada de dados, que seu controle TxfProduto aceite apenas números.

Veja se funciona, e qualquer dúvida, poste…

Tudo entendido Adelar.
Mais uma vez obrigado.

A disposio, e Feliz Pscoa!

Para voc e sua famlia tambm