Buenas tardes, los molesto por la siguiente inquietud.
soy novato en b4a aunque ya llevo mas o menos tres meses pegándome contra las paredes, he avanzado demasiado por me faltan conceptos.
Los molesto porque uno de ellos es fundamental.
He grabado en el el teléfono dos tablas sqlite, una cabeza y otra detalle. Ahora quiero pasar la info a mi servidor que tiene programas en php y actualizar bases postgresql.
El problema es que la cabecera la grabo bien, pero no se en que momento debo enviar los detalles porque el envío de estos arrancan antes que termine la actualización de la cabecera.
TODO ESTO EN UN MODULO DE SERVICIO.
Estoy usando OkHttpUtils2. Aclaro porque no se si usando OkHttP se hace de la misma manera.
Adjunto un ejemplo recortado que he armado enviando solo una tabla, faltaria la segunda.
Muchas gracias
Miguel
soy novato en b4a aunque ya llevo mas o menos tres meses pegándome contra las paredes, he avanzado demasiado por me faltan conceptos.
Los molesto porque uno de ellos es fundamental.
He grabado en el el teléfono dos tablas sqlite, una cabeza y otra detalle. Ahora quiero pasar la info a mi servidor que tiene programas en php y actualizar bases postgresql.
El problema es que la cabecera la grabo bien, pero no se en que momento debo enviar los detalles porque el envío de estos arrancan antes que termine la actualización de la cabecera.
TODO ESTO EN UN MODULO DE SERVICIO.
Estoy usando OkHttpUtils2. Aclaro porque no se si usando OkHttP se hace de la misma manera.
Adjunto un ejemplo recortado que he armado enviando solo una tabla, faltaria la segunda.
Muchas gracias
Miguel
B4X:
Sub Service_Start (StartingIntent As Intent)
Dim Proceso As String
If File.Exists(File.DirRootExternal,"db.db") = False Then
File.Copy(File.DirInternal,"db.db",File.DirRootExternal,"db.db")
End If
If SQL1.IsInitialized = False Then
SQL1.Initialize(File.DirRootExternal, "db.db", True)
End If
Dim Query As String
Registro = SQL1.ExecQuery("select campo1, campo2 from tabla")
For n = 0 To Registro.RowCount - 1
Registro.Position = n
X_campo1 = Registro.GetInt("campo1")
X_campo2 = Registro.GetString("campo2")
If X_id_pedido <> 0 Then
Proceso = "Procesa Pedidos"
ExecuteRemoteQuery("insert into base_server (campo1, campo2 ) values (" & X_campo1 & "," & X_campo2")", Proceso)
End If
Next
Service.StopAutomaticForeground 'Call this when the background task completes (if there is one)
End Sub
Sub ExecuteRemoteQuery(Query As String, JobName As String)
Dim json As JSONParser
Dim num As Int
Dim Cantidad_registros As Int
Dim Registros As List
Dim Conta As Int
Dim Externa As String
Dim Interna As String
Dim Porcentaje As Double
Dim Proceso As String
Dim Descripcion_error As String
Dim job As HttpJob
job.Initialize(JobName, Me)
If JobName = "Procesa Pedidos" Then
job.PostString("http://" & Main.Direccion_ip & "/xx/sincroniza1.php", Query)
wait for(job) JobDone(job As HttpJob)
Dim json As JSONParser
Dim req As OkHttpRequest
Dim Query As String
ProgressDialogHide
If job.Success Then
Dim res As String
res = job.GetString
Dim parser As JSONParser
parser.Initialize(res)
Dim m As Map
m = parser.NextObject
Registros = m.Get("Respuesta")
Cantidad_registros = Registros.Size
If Registros.Size > 0 Then
For i = 0 To Registros.Size - 1
m = Registros.Get(i)
Codigo_error = m.Get("codigo_error")
Next
job.Release
End If
Else
Codigo_error = "Con Errores"
End If
End If
end sub