Hola:
Echando un ojo así por encima a tu proyecto, ya que no he podido ejecutarlo porque me da errores:
- Para exportar un proyecto B4XPages, no puedes hacerlo con el menú Archivo->Exportar, eso sirve para proyectos "normales" (con Activities). Tienes que pulsar la tecla Control y darle al enlace que hay en B4XMainPage que pone
Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip
(puedes cambiar "Project.zip" por otro nombre)
- Estás creando un proyecto con B4XPages, lo cual es la mejor manera, pero estás programando como si fuese un proyecto normal con Activity. Es decir, estás creando tu programa en la pestaña Main, cuando para B4XPages esa pestaña no debes tocarla, y hacer toda la lógica de tu programa en B4XMainPage. Por favor, echa un ojo al manual de B4XPages (
lo tienes aquí en español). Crea un proyecto nuevo de B4XPages, y copia todo lo que tienes en Main, en B4XMainPage. Además de esta forma, puedes cargar cada uno de tus layouts en una B4XPage distinta y no tienes tantas variables declaradas en una sola clase.
el Activity_Create (False) es una sentencia que utilizo para que una vez ejecutado algo en la base de datos me vuelva a cargar la pagina principal, ya que anteriormente cuando ejecutaba me cargaba el customlistview en blanco.
Esto es un error, y tienes varios de ese tipo en tu código. Cuando modificas o quieres refrescar algo, no es necesario reiniciar la actividad, ni hacer un Activity.RemoveAllViews, simplemente por ejemplo tendrías que recrear el customlistview para que muestre los nuevos datos.
- Asegúrate de entender bien
este ejemplo de sqlite de Klaus.
Efectivamente recibo el mensaje "Equipo Modificado"
Es lógico, no me había dado cuenta de que muestras ese mensaje cuando el usuario acepta el MsgBox, no cuando efectivamente ejecutas la sentencia SQL
- Como te ha dicho ldasl4a, es mejor usar sentencias preparadas. Sería algo así: (no lo he probado y puede tener errores)
Private Sub ButtonModificarMaq_Click
Dim mensaje As Int
mensaje=Msgbox2("¿Desea modificar el siguiente equipo?", "Confirmación", "Si","","No",Null)
TIPO=B4XComboBoxTipoModificar.SelectedItem
NOMBRE=EditTextModificarNombreMaquinaria.Text
MARCA=EditTextModificarMarcaMaquinaria.Text
MODELO=EditTextModificarModeloMaquinaria.Text
Select mensaje
Case DialogResponse.POSITIVE
'Añadimos los parámetros a una lista
Dim params As List
params.Initialize
params.AddAll(Array(TIPO, NOMBRE, MARCA, MODELO, TIPO, MARCA)))) 'el número de elementos del array debe coincidir con el número de ? de la sentencia SQL, y estar en el mismo orden
sql1.ExecNonQuery2("Update maquinaria set TIPO = ?, NOMBRE= ? ,MARCA = ? , MODELO =? where TIPO = ? AND NOMBRE = ? AND MARCA = ?")
ToastMessageShow("Equipo Modificado!", True)
Case DialogResponse.NEGATIVE
ToastMessageShow("Se ha cancelado la modificación", True)
End Select
' Activity_Create (False) Elimina esta línea y limpia la vista que te muestre los datos
' Por ejemplo
CLVMaq.Clear
CLVMaq.Add(cargarmaquinaria,i) 'Aquí tendrías que volver a leer los datos de la base de datos para que te refresque el update. Sería incluso mejor actualizar sólo el ítem que has actualizado
End Sub
Ánimo y dale caña