Bien, comencemos con Flash.
Nota: En este tutorial haremos uso de Flash 8. Pero debería funcionar sin muchos cambios de fondo en otras versiones.
En el primer fotograma meteremos un DataGrid, 3 botones y 3 TextInput. Nos quedará una cosa como esta:
En otra capa pondremos todo el codigo actionscript. Voy a ir explicando poco a poco cada trozo de código, pero va todo seguido.
var databaseFile:String = "ejemplo_agenda.mdb";
var databasePassword:String = "";
var path:String = mdm.Application.path+databaseFile; mdm.Database.MSAccess.connect(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;
}
Comenzamos declarando cual es la base de datos que queremos acceder y su contraseña, si tiene.
A partir de aquí ya hay código de MDM así que lo explicaré linea a linea.
var path:String = mdm.Application.path+databaseFile;
Con esta línea indicamos que la ruta donde está la base de datos es la misma que donde está la aplicación.
mdm.Database.MSAccess.connect(databaseFile,databasePassword);
Conectamos con la base de datos access y le pasamos la contraseña.
var success = mdm.Database.MSAccess.success();
if (success == false) {
var msg:String = "No se puede conectar a la bbdd";
mdm.Dialogs.prompt(msg);
return;
}
Comprobamos si ha tenido exito la conexión, si no lo ha habido nos aparecerá un mensaje por pantalla indicandonos que no nos hemos podido conectar a la bbdd.
Sigamos con el siguiente bloque de instrucciones:
//FUNCION PARA HACER LA CONSULTA A LA BBDD
function consulta(){
theDataGrid.removeAll();
var sqlString:String = "SELECT id,nombre,apellidos,telefono 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];
datos.Telefono = dataSet[i][3];
newItemsArray.push(datos);
}
theDataGrid.dataProvider = newItemsArray;
}
Explicaré trozo a trozo este bloque de instrucciones.
theDataGrid.removeAll();
var sqlString:String = "SELECT id,nombre,apellidos,telefono FROM ejemplo_agenda order by id asc";
// Ejecutamos la consulta sql
mdm.Database.MSAccess.select(sqlString);
Limpiamos el DataGrid y hacemos la consulta a la bbdd de los campos que queremos obtener.
// 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;
}
Comprobamos si ha habido algún error en la consulta, si lo hubiera nos lo mostraría por pantalla.
//FUNCION PARA MONTAR EL DATAGRID
function layoutGUI():Void {
// Montamos el encabezado del datagrid
theDataGrid.setStyle("fontSize",10);
theDataGrid.columnNames = ["ID", "Nombre", "Apellidos", "Telefono"];
theDataGrid.vScrollPolicy = "auto";
var gridWidth:Number = theDataGrid.width;
theDataGrid.getColumnAt(0).width = 0.05*gridWidth;
theDataGrid.getColumnAt(0).headerText = "ID:";
theDataGrid.getColumnAt(1).width = 0.35*gridWidth;
theDataGrid.getColumnAt(1).headerText = "Nombre:";
theDataGrid.getColumnAt(2).width = 0.45*gridWidth;
theDataGrid.getColumnAt(2).headerText = "Apellidos:";
theDataGrid.getColumnAt(3).width = 0.15*gridWidth;
theDataGrid.getColumnAt(3).headerText = "Telefono:";
theDataGrid.setStyle("alternatingRowColors", [0xFFFFFF, 0xF9FCFD]);
}
Con este trozo de código no vamos a entretenernos ya que en la sección de tutoriales hay uno específico sobre este componente
Ahora ya nos queda asignarle las funciones a los botones:
Botón de insertar
//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,telefono)VALUES('"+nombre_txt.text+"','"+apellidos_txt.text+"',"+telf_txt.text+")");
consulta();
nombre_txt.text="";
apellidos_txt.text="";
telf_txt.text="";
}
}
Comprobamos que al menos el campo nombre no esté vacío, para poder insertar algún dato. Si es así, ejecutamos la consulta del Insert, llamamos a la función "consulta" para mostrar los cambios y dejamos vacios los campos.
Botón de borrar:
//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();
}
}
Para borrar algún dato debemos antes haber seleccionado el elemento en el DataGrid. Si es así, ejecutamos la consulta Delete y volvemos a llamar a la función "consulta" para mostrar los cambios.
Botón de editar:
//Edicion de datos
theDataGrid.addEventListener("change", editar); function editar(Obj) {
bot_editar.enabled=true;
//Obtiene los datos de la linea seleccionada
DatosGrid = Obj.target.selectedItem;
//Asigna valores de los campos de texto
nombre_txt.text = DatosGrid.Nombre;
apellidos_txt.text = DatosGrid.Apellidos;
telf_txt.text = DatosGrid.Telefono;
}
bot_editar.onRelease=function(){
LineaGrid = theDataGrid.selectedIndex;
var sqlString:String = "UPDATE ejemplo_agenda set nombre='"+nombre_txt.text+"', apellidos='"+apellidos_txt.text+"', telefono="+telf_txt.text+" where id="+theDataGrid.getItemAt(LineaGrid).ID;
mdm.Database.MSAccess.runQuery(sqlString);
consulta();
bot_editar.enabled=false;
nombre_txt.text = "";
apellidos_txt.text = "";
telf_txt.text = "";
}
Para editar datos, crearemos un listener del datagrid, para que al seleccionar un elemento nos lo muestre en los campos correspondientes así como activar el botón de editar. El botón editar es prácticamente igual que el de borrar, solamente que cambiamos la sql ( en este caso es un UPDATE ). Una vez hecho el UPDATE desactivamos el botón de editar y dejamos en blanco los campos.
Ahora ya sólo nos falta que al comenzar se monte el datagrid y hacer la consulta.
bot_editar.enabled = false;
layoutGUI();
consulta(); //Obtenemos los datos de la bbdd
Ahora que hemos visto tódo el código desglosado vemos como sería el resultado final:

Que bueno es ver que alguien anda en lo mismo de uno. Muy prolijo el codigo y por su estructura no deja dudas de que es super eficiente. Saludos. Ricardo. cutepizarroarrobahotmailpuntocom
ResponderEliminarsupongo que has probado el código y te has dado cuenta que no funcionan ni el editar, ni el insertar. Aunque si lo hacen la funcion conectar() y borrar()... posibles soluciones?
ResponderEliminar