UNIDAD 5: INTRODUCION A LAS BASES DE DATOS
JSCRIPT TEMA 13: EDICION DE REGISTROS
Editar registros significa cambiar el contenido de algunos de los campos o columnas por nueva informacÃón o para corregir algun error de captura original o para agregar alguna columna que no existia por modificación de la tabla o la base de datos.
En general se tiene otro problema de sql UPDATE, sin embargo ahora se tendran que construir varios programas, estos son:
1.- prog24.html: una forma normal de busqueda por clave
2.- prog24.js: el mismo programa de busqueda por clave, pero ahora debera construir una forma.html dinamica( es decir un monton de print's), que contendra un form action apuntando o ejecutando al prog25.js o exe, ademas tendra todos los input text necesarios para cargar cada celda del renglon de busqueda.
3.- prog25.js: recoje los datos ya modificados de la forma.html dinamica y realiza directamente un sql update en la base de datos
prog24.html
<HTML> <FORM ACTION=/cgi-bin/tusitio/prog24.exe METHOD=get> CLAVE A MODIFICAR.:<INPUT TYPE=text NAME=CLAVE><BR> <INPUT TYPE=submit VALUE=BUSCAR> </FORM></HTML>
prog24.js
import System;
import System.Data;
import System.Data.OleDb;
// creando variables globales
var coneccion:OleDbConnection;
var canal:OleDbDataAdapter;
var tabla:DataSet;
var capturar:lnet = new lnet();
var clave:String = capturar.getparametro("CLAVE");
coneccion=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\progfacil\\lauro\\mibase.mdb");
var q:String = "select * from mitabla where clave = @CLAVE";
canal = new OleDbDataAdapter(q, coneccion);
// clave es string porque oledbtype es quien la convierte
canal.SelectCommand.Parameters.Add(new OleDbParameter("@CLAVE", OleDbType.Integer));
canal.SelectCommand.Parameters["@CLAVE"].Value = clave;
// creando y cargando un nuevo dataset que solo contiene el
// renglo 0(cero) buscado
tabla = new DataSet();
canal.Fill(tabla, "mitabla");
// CONSTRUYENDO LA FORMA DINAMICA
print("Content-Type:text/html\n");
print("<HTML><FORM ACTION=/CGI-BIN/LAURO/PROG25.EXE METHOD=GET>");
// sacando la clave del renglon del dataset y no se declara porque ya se creo y uso arriba
clave = tabla.Tables["mitabla"].Rows[0][0].ToString();
print("CLAVE:<INPUT TYPE=TEXT NAME=CLAVE VALUE="+clave.ToString()+"><BR>");
// sacando el nombre del renglon del dataset
var nombre:String = tabla.Tables["mitabla"].Rows[0][1].ToString();
print("NOMBRE:<INPUT TYPE=TEXT NAME=NOMBRE VALUE="+nombre.ToString()+"><BR>");
//sacando la edad del renglon del dataset
var edad:String = tabla.Tables["mitabla"].Rows[0][2].ToString();
print("EDAD:<INPUT TYPE=TEXT NAME=EDAD VALUE="+edad.ToString()+"><BR>");
print("<INPUT TYPE=SUBMIT VALUE=MODIFICAR>");
print("</FORM></HTML>");
// cerrando todo
coneccion.Close();
Recordar que los parametros se pueden agregar a un adapter(canal) o a un command(orden) todo depende de si se quiere trabajar con el dataset(este caso es canal) o directemente con la coneccion(este caso es command).
Es mas facil este ultimo caso, pero si se quiere desplegar la tabla que se tiene en memoria, entonces se tendria que volver a cargar el canal=dataset, pero si solo se quiere hacer un cambio directamente en la tabla en disco, es mejor usar directamente el objeto command.
En este ejemplo usamos canal-dataset porque se quieren pasar los valores del dataset una forma html.
Prog25.js
import System;
import System.Data;
import System.Data.OleDb;
// creando variables globales
var coneccion:OleDbConnection;
var orden:OleDbCommand;
var capturar:lnet = new lnet();
var clave =capturar.getparametro("CLAVE");
var nombre =capturar.getparametro("NOMBRE");
var edad =capturar.getparametro("EDAD");
// abriendo coneccion y COMMAND(A LO FLOJO)
coneccion = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\progfacil\\lauro\\mibase.mdb");
var q = "UPDATE mitabla SET clave= @CLAVE, nombre= @NOMBRE, edad = @EDAD where clave= @CLAVE";
orden = new OleDbCommand(q, coneccion);
//cargando y convirtiendo parametros
orden.Parameters.Add(new OleDbParameter("@CLAVE", OleDbType.Integer));
orden.Parameters["@CLAVE"].Value = clave;
orden.Parameters.Add(new OleDbParameter("@NOMBRE", OleDbType.VarWChar, 20));
orden.Parameters["@NOMBRE"].Value = nombre;
orden.Parameters.Add(new OleDbParameter("@EDAD", OleDbType.Integer));
orden.Parameters["@EDAD"].Value = edad;
// mandando actualizacion a la base de datos
orden.Connection.Open();
orden.ExecuteNonQuery();
orden.Connection.Close();
// avisando al usuario que ya se inserto
print("Content-Type:text/html\n");
print("REGISTRO ACTUALIZADO USAR PROG18 PARA DESPLEGARLO");
// cerrando todo
coneccion.Close();
Aqui mejor se trabajo directamente un objeto COMMAND con el CONECCTION porque solo se quiere hacer el cambio en la tabla en disco y solo avisarle a usuario que ya se realizo (si funciona bien el programa).
Veamos la corrida completa:
Prog18.exe (tabla original)
prog24.html
forma dinamica que construye el prog24.exe
prog25.exe respondiendo
otra vez prog18.exe para ver como quedo la tabla original
no fue raton fue batman!!
1.- construir programas de edición para sus tablas y bases de datos