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)

image324.jpg

prog24.html

image325.jpg

forma dinamica que construye el prog24.exe

image326.jpg

prog25.exe respondiendo

image327.jpg

otra vez prog18.exe para ver como quedo la tabla original

image328.jpg

no fue raton fue batman!!

1.- construir programas de edición para sus tablas y bases de datos

 


 


Driven by DokuWiki

Politica de Privacidad