Hola buenas, he estado probando el funcionamiento del setFieldByteArray() para intentar guardar la codificación en Base64 en un campo Objeto texto, y he encontrado algo muy curioso que puede que sea un bug o quizá no entienda muy bien el funcionamiento. La documentación dice:
void setFieldByteArray(Number nCampo, VByteArray baBuffer) o void setFieldByteArray(String szIDPrimarioCampo, VByteArray baBuffer)
Modifica el contenido de un campo de tipo objeto con el contenido de un objeto VByteArray. También se puede utilizar para campos que no sean de tipo objeto. El campo destino se especifica mediante su número de campo.
Parámetros:
– nCampo: Number que contiene la posición campo. El primer campo es 0.
– baBuffer: Buffer con el contenido del objeto VByteArray a grabar en el campo objeto.
Pues bien he hecho este codigo, los identificadores están modificados para que se entienda
importClass(“VImage”);
importClass(“VByteArray”);
var oByteArray = new VByteArray();
var oTexto = new VByteArray();
var oImage = new VImage();
var EdTexto = theRoot.dataView().control(“Caja_Texto”);
var EdImagen = theRoot.dataView().control(“Objeto_Dibujo”);
oImage = EdImagen.image();
oTexto.setText(EdTexto.text());
theRegisterIn.setFieldByteArray(“Campo_ObjetoTexto”, oTexto);
theRegisterIn.setFieldImage(“IMG”, oImage);
theRoot.dataView().saveRegister();
alert(“Alta Realizada”);
Pues bien en esta linea
theRegisterIn.setFieldByteArray(“Campo_ObjetoTexto”, oTexto);
Tanto si pongo el Identificador como la posición del campo correctas, no funciona y no me guarda nada.
Sin embargo, si pongo
theRegisterIn.setFieldByteArray(“pepe”, oTexto); // o simplemente “”
Detecta cual es el campo ObjetoTexto y guarda el oTexto ahí, lo hace automático y lo hace bien.
Y por probar he quitado el ID del campo, es decir
theRegisterIn.setFieldByteArray(oTexto);
Pero ya de esta forma me salta error y no funciona.
Creo que quizá deba guardar el oTexto, que es un ByteArray, en un campo Objeto Binario, pero no estoy seguro.
Alguna sugerencia sobre el funcionamiento?
Gracias por la atención
Att Daniel.