Hola.
Acabo de descubrir que DBUtils.ExecuteMap SIEMPRE devuelve un MAP con todos sus valores tipo Cadena, aunque los campos de la BD sean de tipo numérico. Si no se tiene esto en cuenta, en determinados casos el código no va a funcionar como se espera.
Supongamos que en la BD tenemos una tabla con un campo tipo numérico llamado "campo1" y que en el primer registro tiene almacenado el valor numérico 1. Nos encontramos lo siguiente
Una vez que se conoce esto, no tiene mayor problema, pero mientras tanto el código no hace correctamente su función.
Saludos.
Acabo de descubrir que DBUtils.ExecuteMap SIEMPRE devuelve un MAP con todos sus valores tipo Cadena, aunque los campos de la BD sean de tipo numérico. Si no se tiene esto en cuenta, en determinados casos el código no va a funcionar como se espera.
Supongamos que en la BD tenemos una tabla con un campo tipo numérico llamado "campo1" y que en el primer registro tiene almacenado el valor numérico 1. Nos encontramos lo siguiente
B4X:
mapRegistro = DBUtils.ExecuteMap (Starter.sqlBD, "SELECT * FROM tabla.........................)
Log (mapRegistro.Get("campo1") = 1) '----> Devuelve False, cuando esperamos que devuelva True
Log (mapRegistro.Get("campo1") = "1") '----> Devuelve True
If mapRegistro.Get("campo1") = 1 then 'Aunque se trata de un campo numérico, esta expresión es incorrecta
....
End
If mapRegistro.Get("campo1") = "1" then 'Esto es lo correcto, a pesar de tratarse de un campo numérico en la BD
....
End
Una vez que se conoce esto, no tiene mayor problema, pero mientras tanto el código no hace correctamente su función.
Saludos.