Spanish Cuándo se ejecuta el JobDone? Se pueden llamar controles desde otros Activities?

renepatriana

Member
Licensed User
Cordial saludo.

Soy novato en B4A y tengo unas inquietudes en las que, espero, me puedan ayudar.

En el Activity Main tengo una sub (ConsultaMySQL) que hace la conexión a MySQL y ahí mismo está la sub JobDone. Aquí surge mi primera inquietud: Cuándo se ejecuta JobDone?

Ejemplo:

Sub mensaje
MsgBox("campo = " & campo1) 'campo1 es una variable global
End Sub

Sub prueba1
Dim Select = "select campo from tabla" As String
ConsultaMySQL(Select, "con1")
mensaje
End Sub

En el JobDone le asigno el valor del campo de la base de datos a la variable global "campo1". Eso lo hace bien, pero solo lo hace hasta cuando sale del sub "prueba1", es decir que la sub "mensaje" estando dentro de la sub "prueba1" cuando se ejecuta no tiene valor porque el JobDone no se ejecuta sino hasta cuando sale del sub "prueba1". Para ejecutar correctamente la sub "mensaje" tengo que llamarla posteriormente desde otro evento. Esta apreciación es correcta?

Ahora, otra más complicada:

Tengo otro Activity en el cual tengo un ListView que pretendo cargar con unos datos de MySQL. Para hacerlo, puedo utilizar la sub "ConsultaMySQL" definida en el Activity Main? o tendría que hacer otra sub similar en el Activity nuevo con su respectivo sub JobDone?

Se puede hacer un JobDone global?

Una última: B4A permite obtener datos o enviar datos a controles contenidos en un Activity desde otros Activity?

Gracias por la ayuda que me puedan suministrar.
 

Seneca

Active Member
Licensed User
Cordial saludo.


En el Activity Main tengo una sub (ConsultaMySQL) que hace la conexión a MySQL y ahí mismo está la sub JobDone. Aquí surge mi primera inquietud: Cuándo se ejecuta JobDone?

Ejemplo:

Sub mensaje
MsgBox("campo = " & campo1) 'campo1 es una variable global
End Sub

Sub prueba1
Dim Select = "select campo from tabla" As String
ConsultaMySQL(Select, "con1")
mensaje
End Sub

En el JobDone le asigno el valor del campo de la base de datos a la variable global "campo1". Eso lo hace bien, pero solo lo hace hasta cuando sale del sub "prueba1", es decir que la sub "mensaje" estando dentro de la sub "prueba1" cuando se ejecuta no tiene valor porque el JobDone no se ejecuta sino hasta cuando sale del sub "prueba1". Para ejecutar correctamente la sub "mensaje" tengo que llamarla posteriormente desde otro evento. Esta apreciación es correcta?
Hola.

La consulta MySQL es una tarea asíncrona, es decir, se ejecuta en segundo plano mientras la app continúa corriendo por su cuenta. El JobDone se ejecuta cuando la tarea MySQL finaliza (lo cual puede tardar más o menos dependiendo de su complejidad y otros factores). En el ejemplo que indicas, traslada la llamada a Mensaje al JobDone, de forma que se ejecutará cuando el MySQL haya finalizado.

Respecto a las otras consultas, te recomiendo que abras un hilo individual por cada una de ellas, no mezclando así temas distintos.

Saludos.
 
Top