Spanish [SOLUCIONADO]Problema con update

TheFalcon

Active Member
Licensed User
Buenas, mas que un problema es una rayada.
Estoy revisando mi aplicación para subirla a googleplay pero en el móvil no me hace un UPDATE de sql, pero en el AndroidVirtual si me lo hace, y no se que puede ser ya me estoy rayando un poco.

B4X:
SQL1.ExecNonQuery("UPDATE Diario set Nombre ='"& nombre &"', Peso = '" & peso & "', Tipo = '" & tipo & "',Observaciones = '" & observaciones & "' WHERE Fecha_Ticks = '" & Fecha_Tick & "'")
Msgbox("Datos Actualizados","Información")

Activity.RemoveAllViews
    StartActivity(Main)
    Activity.Finish
En otro sitio hago un update para otra cosa y hay si me funciona, la única diferencia es que en este update en la linea de update a veces hay valores vacíos, no se si afecta pero por si acaso e puesto que si los valores están vacíos escriba NULL, y aun así tampoco me va en el móvil, pero si me va en el android virtual.
 

Heppy

Active Member
Licensed User
Hola TheFalcon.

Veo tu consulta y la veo bien. Prueba a ejecutar transacciones
B4X:
SQL1.BeginTransaction
SQL1.ExecNonQuery("Update................')
SQL1.TransactionSuccessful
SQL1.EndTransaction
 

dar2o3

Active Member
Licensed User
Buenas tardes, el código se ve bien pero ... no veo Que cierres e sql1, lo tienes declarado a nivel global? si Es Así y has realizado Alguna consulta o Inserción y no lo cierras al volver una usarlo podría generarte Problemas te digo lo que yo suelo hacer (Que Seguro que no es lo mejor, Pero a mi me Funciona; - ))
yo creo una clase para todo Lo relaccionado con la BASE DE DATOS.

B4X:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Dim sql1 As SQL
End Sub

Sub consulta(textosql As String)As Cursor
If sql1.IsInitialized = False Then
            sql1.Initialize(File.DirRootExternal, "/nombrecarpeta/nombrebd", True)
End If

    Dim Cursor As Cursor
    Cursor = sql1.ExecQuery(textosql)
    Return Cursor
    'sql1.Close
End Sub

Sub anadirnuevoregistro (textosql As String) As Boolean


If sql1.IsInitialized = False Then
            sql1.Initialize(File.DirRootExternal, "/nombrecarpeta/nombrebd", True)
End If

    Try

        Dim Cursor As Cursor
        'Cursor = sql1.ExecNonQuery(textosql)
        Return True
    Catch
   
            Return False

    End Try

End Sub
y la llamo cunado la necesito desde cualquier parte del código.


B4X:
Dim cur As Cursor
    cur= tareas.consulta("select nombre from Clientes")
    If cur.RowCount>0 Then
        Spinner1.Add("Seleccione el cliente")
    End If

cur.Close
Así me aseguro siempre de cerrar el sql, puedes incluir transacciones, control de errores etc. en una sola parte del código ... innumerables las Ventajas. espero haberme explicado.
 
Last edited:

TheFalcon

Active Member
Licensed User
Buenas no pude contestar antes, ya lo solucione y ni idea, se me rayarían los datos de la base de datos de hacer pruebas, por que fue borrar toda la base de datos y añadir registros otra vez de 0 y no me da el problema, cosa rara pero bueno, gracias por la ayuda y dar2o3 me cojo tu código para los próximos que me va a venir muy bien con tu consentimiento :).
Ya tengo colgada mi Primera aplicación en Google Play :) ya soy feliz jeje.
 

TheFalcon

Active Member
Licensed User
"Diario Cetrero" no es gran cosa pero yo estoy mas feliz que barcenas con un sobre :). Es para llevar el control de las aves de cetrería
 
Top