En ocaciones tenemos registros leidos desde la base de datos y almacenados en un DataSet, y se nos ocurre que podremos mostrarla en una aplicacion de Macromedia Flash, pues bien, Flash no tiene un soporte nativo para base de datos, pero si la lectura de archivos XML.
Pues bien para crear un archivo XML desde el DataSet basta lo siguiente:
'Esta es una clase que facilita la conexion y la ejecusion de consultas
Dim Conn As New Conectividad()
'Mi Objeto DataSet
Dim ds As New DataSet
'Llenamos el DataSet con el resultado de la consulta
ds = Conn.Consulta("Select * from datos", strError)
'E invocando al metodo WriteXml podemos crear tan facilmente un archivo XML
ds.WriteXml(Server.MapPath("MyXML.XML"), XmlWriteMode.IgnoreSchema)
Una ves creado el archivo XML, en Flash bastará este script para leer y mostrar cada uno de los registros del XML
//Este va en el fotograma 1
//Variables globales para control de recorrido por el XML
_global.pos=0;
_global.limite=0;
//Nuevo Objeto XML
var obj_xml:XML = new XML();
obj_xml.ignoreWhite = true;
//Esta Funcion sera invocada cuando se intente cargar un archivo XML
obj_xml.onLoad = function(exito) {
//La variable exito sera "true" si se cargo bien y "false" si el archivo no //existe o no se pudo cargar por errores en su estructura
if (exito) {
//Numero de registros
_global.limite=obj_xml.firstChild.childNodes.length;
//modelo, des y precio son los nombres de las instancias de componentes TextInput
modelo.text=obj_xml.firstChild.childNodes[_global.pos].childNodes[1].firstChild.nodeValue;
des.text=obj_xml.firstChild.childNodes[_global.pos].childNodes[3].firstChild.nodeValue;
precio.text=obj_xml.firstChild.childNodes[_global.pos].childNodes[2].firstChild.nodeValue;
//img es una instancia del componente Loader, al cual le indicamos la ruta de la //imagen a mostrar
img.contentPath=obj_xml.firstChild.childNodes[_global.pos].childNodes[4].firstChild.nodeValue;
img.load();
} else {
trace("Error"); //Que indique que hubo un error si no cargo el archivo
}
};
//Esta es la función que invoca la carga del archivo
function cargarXML() {
obj_xml.load("myXML.XML");
}
//Cargamos la funcion al iniciar
cargarXML();
Si deseamos un recorrido por cada uno de los registros deberemos incluir un boton de avance y otro de retroceso y escribir el siguiente script
//Boton retroceso
on (release) {
//Llamamos a la función de carga del archivo XML
_global.pos--;//Disminuimos la posicion actual
if (_global.pos<0) //Si se paso del indice 0
_global.pos=0; //Lo ponemos en 0
cargarXML(); //Cargamos el archivo nuevamente, pero con la posicion indicada
}
//Boton Avanzar
on (release) {
//Llamamos a la función de carga del archivo XML
_global.pos++;//aumentamos la posicion actual
if (_global.pos>_global.limite - 1) //Si nos pasamos del limite
_global.pos=_global.limite-1;// Ponemos el indice en el ultimo registro
cargarXML(); //Cargamos nuevamente el archivo
}
Espero y alguna ves les sea util este sencillo ejercicio