GUARDAR EL XML EN UN CAMPO DE BASE DE DATOS
Publicado: Dom Nov 21, 2010 6:57 pm
Alguien le ha pasado algo parecido al siguiente caso:
Actualmente estoy implementando la factura electrónica en mi sistema desarrollado en delphi 2009 y me he topado con algo muy extraño. Mi aplicación trabaja en Win 32 y Atreves de internet por esta razón tengo que grabar el xml y la factura en Pdf en un campo dentro de una base de datos SQL Server o Access 2000 para posteriormente poder exportarlo desde cualquier lugar y ademas mantener un respaldo centralizado de la información fiscal.
Actualmente ya tengo generada mi cadena Original, Sello digital, y la factura en formato pdf para esto gravo La cadena Original en un campo memo y el sello en otro, con lo que refiere al pdf lo grave en un campo Blob.
El problema que se me presento es cuando gravo el XML en un campo memo para esto utilice el siguiente método, imaginemos para este ejemplo que mi XmlDoc contiene la información de mi factura:
var strXMLFactura: UTF8String;
XMLDoc.SaveToXML( strXMLFactura );
dsFacturaMasterFactElectXML.AsAnsiString := strXMLFactura;
Esto no me funciono, cuando obtengo el xml y lo quiero gravar en disco desde el campo memo me grava con formato invalido.
dsFacturaMasterFactElectXML.SaveToFile( FileFacturaXML );
Haciendo prouebas se me ocurrió utilizar un Stream y cambie mi lógica a la siguiente.
var XMLStream: TStringStream;
XMLDoc.SaveToStream(XMLStream);
dsFacturaMasterFactElectXML.LoadFromStream(XMLStream);
dsFacturaMasterFactElectXML.SaveToFile( FileFacturaXML );
Esto si funciona bien me grava el xml en el campo memo y después desde cualquier lugar lo puedo obtener y salvarlo como un xml valido PERO me pasa algo bien rarísimo al gravar el campo memo y verificar en mi base de datos usando en Access 2007 en el campo se ve que la información está en CHINO. Ya busque acerca de esto y la verdad no encuentro el por qué, aunque esta funcionando perfectamente al exportar la información.
Actualmente estoy implementando la factura electrónica en mi sistema desarrollado en delphi 2009 y me he topado con algo muy extraño. Mi aplicación trabaja en Win 32 y Atreves de internet por esta razón tengo que grabar el xml y la factura en Pdf en un campo dentro de una base de datos SQL Server o Access 2000 para posteriormente poder exportarlo desde cualquier lugar y ademas mantener un respaldo centralizado de la información fiscal.
Actualmente ya tengo generada mi cadena Original, Sello digital, y la factura en formato pdf para esto gravo La cadena Original en un campo memo y el sello en otro, con lo que refiere al pdf lo grave en un campo Blob.
El problema que se me presento es cuando gravo el XML en un campo memo para esto utilice el siguiente método, imaginemos para este ejemplo que mi XmlDoc contiene la información de mi factura:
var strXMLFactura: UTF8String;
XMLDoc.SaveToXML( strXMLFactura );
dsFacturaMasterFactElectXML.AsAnsiString := strXMLFactura;
Esto no me funciono, cuando obtengo el xml y lo quiero gravar en disco desde el campo memo me grava con formato invalido.
dsFacturaMasterFactElectXML.SaveToFile( FileFacturaXML );
Haciendo prouebas se me ocurrió utilizar un Stream y cambie mi lógica a la siguiente.
var XMLStream: TStringStream;
XMLDoc.SaveToStream(XMLStream);
dsFacturaMasterFactElectXML.LoadFromStream(XMLStream);
dsFacturaMasterFactElectXML.SaveToFile( FileFacturaXML );
Esto si funciona bien me grava el xml en el campo memo y después desde cualquier lugar lo puedo obtener y salvarlo como un xml valido PERO me pasa algo bien rarísimo al gravar el campo memo y verificar en mi base de datos usando en Access 2007 en el campo se ve que la información está en CHINO. Ya busque acerca de esto y la verdad no encuentro el por qué, aunque esta funcionando perfectamente al exportar la información.