Spanish [SOLUCIONADO] JRDC2 comando update, extraer los campos en el servidor

RAFA BRAVO

Active Member
Licensed User
Longtime User
Mi pregunta es la siguiente si yo desde android ejecuto este comando:

B4A:
Sub UpdateRecord(vindatabase As String, lotebombadatabase As String, fechabombadatabase As String, fechadatabase As String, horadatabase As String, numerobombadatabase As Int, posicionBombadatabase As String, ramdatabase As String, estadodatabase As String)
    Dim cmd As DBCommand = CreateCommand("completarRegistro", Array(vindatabase, lotebombadatabase, fechabombadatabase, fechadatabase, horadatabase, numerobombadatabase,posicionBombadatabase, ramdatabase, estadodatabase, item_id))
    Dim j As HttpJob = CreateRequest.ExecuteBatch(Array(cmd), Null)
    Wait For (j) jobDone(j As HttpJob)
    ProgressDialogShow("Espere porfavor...")
    If j.Success Then
    
        
    End If
    ProgressDialogHide
    j.Release
End Sub

Que debería hacer en la rutina del servidor para extraer las variables que envió, a parte de subirlas a la base de datos, quiero utilizarlas para otras cosas en el servidor. Creo que esta es la rutina:

B4J:
Private Sub ExecuteBatch2(con As SQL, in As InputStream, resp As ServletResponse) As String
    Dim ser As B4XSerializator
    Dim m As Map = ser.ConvertBytesToObject(Bit.InputStreamToBytes(in))
    Dim commands As List = m.Get("commands")
    Dim res As DBResult
    res.Initialize
    res.columns = CreateMap("AffectedRows (N/A)": 0)
    res.Rows.Initialize
    res.Tag = Null
    Try
        con.BeginTransaction
        For Each cmd As DBCommand In commands
            con.ExecNonQuery2(Main.rdcConnector1.GetCommand(cmd.Name), _
                cmd.Parameters)
                
        Next
        res.Rows.Add(Array As Object(0))
        con.TransactionSuccessful
    Catch
        con.Rollback
        Log(LastException)
        resp.SendError(500, LastException.Message)
    End Try
    Dim data() As Byte = ser.ConvertObjectToBytes(res)
    resp.OutputStream.WriteBytes(data, 0, data.Length)
    Return $"batch (size=${commands.Size})"$
End Sub

He hecho alguna prueba pero sin exito. gracias
 

josejad

Expert
Licensed User
Longtime User
¿Qué ocurre si en el servidor haces un Log(cmd.Parameters)?

saludos,
 

RAFA BRAVO

Active Member
Licensed User
Longtime User
Hola José, si es algo que había probado. Log(cmd.name) obtengo el nombre del comando "complatarRegistro"
Con log(cmd.Parameters) algo como [Ljava.lang.object;@5ccbeb64]
A partir del @ es la parte que varía respecto a otros comandos. Gracias
 

RAFA BRAVO

Active Member
Licensed User
Longtime User
Lo tengo, solo tenías que indicar que parámetro. Algo así:

B4J:
    If cmd.Name = "completarRegistro" Then
            Main.numvinExcel = cmd.Parameters(0)
            Main.lotebidonExcel = cmd.Parameters(1)
            Main.fechabidonExcel = cmd.Parameters(2)
    End If

Gracias
 
Top