26Ene Editar un DataGrid con conexión a Access
Hace un tiempo ya hice un tutorial sobre como conectar Flash con Access a través de mdm Zinc. Y en los comentarios me preguntaron si habría posibilidad de editar directamente el datagrid sin tener que usar campos de texto.
He adaptado ese tutorial para que se pueda conseguir esto. Simplemente tenemos que permitir editar el datagrid y luego añadirle un listener a éste para que cada vez que cambie, se actualize la base de datos.
Esto se consigue con las siguientes lineas:
-
theDataGrid.editable=true;
-
myDataGridListener = new Object();
-
myDataGridListener.cellEdit = function(event){
-
var sqlString:String = "UPDATE ejemplo_agenda set nombre='"+theDataGrid.getItemAt(event.itemIndex).Nombre+"', apellidos='"+theDataGrid.getItemAt(event.itemIndex).Apellidos+"' where id="+theDataGrid.getItemAt(event.itemIndex).ID;
-
mdm.Database.MSAccess.runQuery(sqlString);
-
consulta();
-
}
-
theDataGrid.addEventListener("cellEdit", myDataGridListener);
Aquí os pongo la totalidad del código así como los archivos del ejemplo para que os los podáis descargar. He hecho un poco más simple la base de datos de access, solo tiene nombre y apellidos.
-
var databaseFile:String = "agenda.mdb";
-
var databasePassword:String = "";
-
var path:String = mdm.Application.path;
-
mdm.Database.MSAccess.connectAbs(path+databaseFile,databasePassword);
-
var success = mdm.Database.MSAccess.success();
-
if (success == false) {
-
var msg:String = "No se puede conectar a la bbdd";
-
mdm.Dialogs.prompt(msg);
-
return;
-
}
-
//FUNCION PARA HACER LA CONSULTA A LA BBDD
-
theDataGrid.editable=true;
-
function consulta(){
-
theDataGrid.removeAll();
-
-
var sqlString:String = "SELECT id,Nombre,Apellidos FROM ejemplo_agenda order by id asc";
-
// Ejecutamos la consulta sql
-
mdm.Database.MSAccess.select(sqlString);
-
// Comprobamos los errores
-
var error:Boolean = (mdm.Database.MSAccess.error() == "true");
-
if (error) {
-
var msg:String = "Ha ocurrido un error en la consulta!";
-
mdm.Dialogs.prompt(msg);
-
return;
-
}
-
//Obtenemos los datos de la consulta
-
var dataSet:Array = mdm.Database.MSAccess.getData();
-
-
var datos:Object;
-
var newItemsArray:Array = new Array();
-
-
for (var i = 0; i<dataset.length;i++){>
-
datos = {};
-
datos.ID = parseInt(dataSet[i][0]);
-
datos.Nombre = dataSet[i][1];
-
datos.Apellidos = dataSet[i][2];
-
newItemsArray.push(datos);
-
}
-
theDataGrid.dataProvider = newItemsArray;
-
}</dataset.length;i++){>
-
-
//FUNCION PARA MONTAR EL DATAGRID
-
function layoutGUI():Void {
-
// Montamos el encabezado del datagrid
-
theDataGrid.setStyle("fontSize",10);
-
theDataGrid.columnNames = [ "Nombre", "Apellidos"];
-
theDataGrid.vScrollPolicy = "auto";
-
var gridWidth:Number = theDataGrid.width;
-
-
theDataGrid.getColumnAt(0).width = 0.35*gridWidth;
-
theDataGrid.getColumnAt(0).headerText = "Nombre:";
-
theDataGrid.getColumnAt(1).width = 0.65*gridWidth;
-
theDataGrid.getColumnAt(1).headerText = "Apellidos:";
-
theDataGrid.setStyle("alternatingRowColors", [0xFFFFFF, 0xF9FCFD]);
-
}
-
-
//Funcion para insertar un dato
-
bot_insertar.onRelease=function(){
-
if(nombre_txt.text==""){
-
nombre_txt.text="Este campo no puede estar vacio";
-
}else{
-
mdm.Database.MSAccess.runQuery("INSERT INTO ejemplo_agenda (nombre,apellidos) VALUES ('"+nombre_txt.text+"','"+apellidos_txt.text+"')");
-
consulta();
-
nombre_txt.text="";
-
apellidos_txt.text="";
-
}
-
}
-
//Borrado de datos
-
bot_borrar.onRelease=function(){
-
LineaGrid = theDataGrid.selectedIndex;
-
if(LineaGrid!=undefined){
-
var sqlString:String = "DELETE FROM ejemplo_agenda where id="+theDataGrid.getItemAt(LineaGrid).ID;
-
mdm.Database.MSAccess.runQuery(sqlString);
-
consulta();
-
}
-
}
-
layoutGUI();
-
consulta(); //Obtenemos los datos de la bbdd
-
-
myDataGridListener = new Object();
-
myDataGridListener.cellEdit = function(event){
-
var sqlString:String = "UPDATE ejemplo_agenda set nombre='"+theDataGrid.getItemAt(event.itemIndex).Nombre+"', apellidos='"+theDataGrid.getItemAt(event.itemIndex).Apellidos+"' where id="+theDataGrid.getItemAt(event.itemIndex).ID;
-
mdm.Database.MSAccess.runQuery(sqlString);
-
consulta();
-
}
-
theDataGrid.addEventListener("cellEdit", myDataGridListener);
-
stop();
Y aquí están los archivos del ejemplo. El .fla guardado para flash 8, el .swf, la base de datos de access y el ejecutable final compilado con el mdm zinc.






Marzo 3rd, 2008 at 6:06
Gracias! Estaba esperando algo así…
Junio 19th, 2008 at 19:12
Hola amigos tengo una difilcultad tengo un archivo que compile en MDM ZIN 2.5 pero el exe que me genera no corre en Windows Vista, que puedo hacer y tengo el MDM ZINC 3.0 pero me muestra una pantalla en medio y no deja ver el contenido, será que este Pandora el exe corre en Windows Vista me urge es trabajo de la Universidad, desde El Salvador
Junio 19th, 2008 at 20:56
Te hace falta zinc 3.0 original. El que tienes es la versión trial y por eso te sale la marca de agua. El 2.5 tiene bastantes incompatibilidades con windows vista.
Septiembre 23rd, 2008 at 16:52
Estoy realisando un trabajo de la universidad y necesito conectar un datagrid con una base de datos que esta elaborada en access, como hago para presentar los datos del cliente en cada celda del datagrid.
Septiembre 23rd, 2008 at 18:28
Aquí tienes un ejemplo de como conectar flash con access usando zinc
http://blog.calleserpis.com/zinc/conectar-flash-con-access-a-traves-de-mdm-zinc/