Si que utilizas el Sub JobDone.
Si sigues el tutorial pdf que tu subiste debes hacerlo.
Adjuntas la clase DBRequestManager al proyecto.
Lo que hago yo es un bucle para que me mande muchos registros y vuelque todos los datos, registro a registro.
A ver si me explico
Un ejemplo de lo que hago:
1 - Lo primero es saber cuantos registros tengo en la base remota para comprobar luego que he insertado todos, además es el que me inicia el bucle. Es un botón llamado btnDar
Sub btnDar_click
Operacion=14
Dim cmd As DBCommand
Dim Name As String
cmd.Initialize
cmd.Name = "select_mantenimiento"
cmd.Parameters = Array As Object(Name)
reqManager.ExecuteQuery(cmd, 0, Null)
End Sub
En el config.properties tengo:
sql.select_mantenimiento=SELECT COUNT(*) FROM MANTEPRETEMP
Cuando esta consulta se haya ejecutado saltará a Sub JobDone y según como tenga un valor operacion, hará una cosa u otra.
Sub JobDone(Job As HttpJob)
If Job.Success = False Then
Log("Error: " & Job.ErrorMessage)
Else
If sql1.IsInitialized=False Then sql1.Initialize(File.DirRootExternal,"Mantepre/Mantepre.db",True)
Else If Operacion=14 Then
If Job.JobName = "DBRequest" Then
Operacion=15
Dim result As DBResult = reqManager.HandleJob(Job)
If SQLIns.IsInitialized=False Then SQLIns.Initialize(File.DirRootExternal,"Mantepre/Mantepre.db",True)
x = SQLIns.ExecQuery("SELECT * FROM Mantepre WHERE RECIBIDO=0")
RegistrosLite=x.RowCount
Log("Lite "&RegistrosLite)
If x.RowCount>0 Then
MandaRegistro(0)
End If
End If
Else If Operacion=15 Then
If x.Position<x.RowCount Then MandaRegistro(x.Position+1)
Else If Operacion=16 Then
Dim result As DBResult = reqManager.HandleJob(Job)
For Each records() As Object In result.Rows
RegistrosServerF=records(0)
Next
Log("Final "&RegistrosServerF)
If RegistrosServerF=RegistrosServerI+RegistrosLite Then
ToastMessageShow("Registros enviados correctamente al SERVIDOR",True)
Operacion=0
If SQLIns.IsInitialized=False Then SQLIns.Initialize(File.DirRootExternal,"Mantepre/Mantepre.db",True)
SQLIns.BeginTransaction
SQLIns.ExecNonQuery("UPDATE Mantepre SET RECIBIDO=1")
SQLIns.TransactionSuccessful
SQLIns.EndTransaction
SQLIns.Close
End If
End If
Job.Release
End Sub
Sub MandaRegistro(pos As Int)
Dim cmd As DBCommand
cmd.Initialize
If pos<x.RowCount Then
x.Position=pos
cmd.Name = "insert_mantenimento"
cmd.Parameters = Array As Object(Parametros a insertar)
reqManager.ExecuteCommand(cmd, Null)
Else
Operacion=16
Dim cmd As DBCommand
Dim Name As String
cmd.Initialize
cmd.Name = "select_mantenimiento"
cmd.Parameters = Array As Object(Name)
reqManager.ExecuteQuery(cmd, 0, Null)
End If
End Sub
En Operacion=14 lo que hago es una consulta para saber los registros que quiero mandar, cambio Operacion a 15 y le digo que mande el primer registro que es la posición 0 del cursor. Y me voy a la rutina MandaRegistro, allí incremento la posicion del cursor en 1. Mientras If x.Position<x.RowCount Then MandaRegistro(x.Position+1) mandaré registros y cuando no se cumpla esa condición Operacion será 16,con lo que he terminado y comprueba el resultado final para comprobar que he insertado todos los registros.
Recuerda cada vez que uses el reqManager.ExecuteQuery o reqManagr.executeCommand, siempre saltará a JobDone para decirte si ha sido correcto o ha fallado.
Espero no haberte liado más.