UNIDAD 5: VISUAL BASIC INTRODUCION A LAS BASES DE DATOS

TEMA 13: EDICION DE REGISTROS UPDATE VISUAL BASIC CGI

Editar registros significa cambiar el contenido de algunos de los campos o columnas por nueva informacion o para corregir algun error de captura original o para agregar alguna columna que no existia por modificacion 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.vb: el mismo programa de busqueda por clave, pero ahora debera construir una forma.html dinamica( es decir un monton de system.console.writeline), que contendra un form action apuntando o ejecutando al prog25.vb o exe, ademas tendra todos los input text necesarios para cargar cada celda del renglon de busqueda.

3.- prog25.vb: 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/tusitiolauro/prog24.exe METHOD=get>
CLAVE A EDITAR-MODIFICAR.:<INPUT TYPE=text NAME=CLAVE><BR>
<INPUT TYPE=submit VALUE=BUSCAR>
</FORM></HTML>

prog24.vb

Imports System
Imports System.Data
Imports System.Data.OleDb
Imports Microsoft.VisualBasic
PUBLIC CLASS prog24
' creando y cargando coneccion, adpater, dataset como variables globales
SHARED DIM coneccion AS OLEDBCONNECTION
SHARED DIM canal AS OLEDBDATAADAPTER
SHARED DIM tabla AS DATASET
PUBLIC SHARED SUB MAIN()
' variables a usar
dim q, clave, nombre, edad as string
' enlazando coneccion a la base de datos
coneccion = NEW OLEDBCONNECTION("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\progfacil\tusitio\mibase.mdb")
'capturando clave a buscar
DIM capturar AS lnet = new lnet()
'clave se captura como string porque se usa mas adelante un oledbtype
'para convertirla y mandarla
clave = capturar.getparametro("CLAVE")
'creando string q con instruccion sql apropiada
' observar que tamben puede llevar variables parametros
q = "select * from mitabla where clave = @CLAVE"
canal = new OleDbDataAdapter(q, coneccion)
' cargando variable parametro con su valor y su tipo de dato
canal.SelectCommand.Parameters.Add(new OleDbParameter("@CLAVE", OleDbType.Integer))
canal.SelectCommand.Parameters("@CLAVE").Value = clave
' NO SE USO OBJETO COMMAND PARA DEMOSTRAR QUE OLEDBADAPTER TAMBIEN
' PUEDE USAR SELECT, INSERT, UPDATE, DELETE(ver tema asp.net)
'cargando el dataset y solo tendra un renglon de informacion(el cero)
tabla = NEW DATASET()
canal.FILL(tabla, "mitabla")
' CONSTRUYENDO LA FORMA DINAMICA
System.Console.WriteLine("Content-Type:text/html" & vbCrLf)
System.Console.WriteLine("<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)
System.Console.WriteLine("CLAVE:<INPUT TYPE=TEXT NAME=CLAVE VALUE=" &clave &"><BR>")
'sacando el nombre del renglon del dataset
nombre = tabla.Tables("mitabla").Rows(0)(1)
System.Console.WriteLine("NOMBRE:<INPUT TYPE=TEXT NAME=NOMBRE VALUE=" &nombre &"><BR>")
'sacando la edad del renglon del dataset
edad = tabla.Tables("mitabla").Rows(0)(2)
System.Console.WriteLine("EDAD:<INPUT TYPE=TEXT NAME=EDAD VALUE=" &edad &"><BR>")
System.Console.WriteLine("<INPUT TYPE=SUBMIT VALUE=EDITAR>")
System.Console.WriteLine("</FORM></HTML>")
' cerrando todo
coneccion.Close()
END SUB
END CLASS

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 a una forma html.

Prog25.vb

Imports System
Imports System.Data
Imports System.Data.OleDb
Imports Microsoft.VisualBasic
PUBLIC CLASS prog25
' creando y cargando coneccion, adpater, dataset, orden como variables globales
SHARED DIM coneccion AS OLEDBCONNECTION
SHARED DIM canal AS OLEDBDATAADAPTER
SHARED DIM tabla AS DATASET
SHARED DIM orden AS OLEDBCOMMAND
PUBLIC SHARED SUB MAIN()
' variables que se ocupan
dim q, clave, nombre, edad as string
'capturar todo incluyendo clave
DIM capturar AS lnet = new lnet()
clave = capturar.getparametro("CLAVE")
nombre = capturar.getparametro("NOMBRE")
edad = capturar.getparametro("EDAD")
'abriendo coneccion y COMMAND(A LO FLOJO)
coneccion = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\progfacil\tusitio\mibase.mdb")
' un problema de UPDATE de sql
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 edito
System.Console.WriteLine("Content-Type:text/html" & vbCrLf)
System.Console.WriteLine("REGISTRO MODFICADO USAR PROG18 PARA DESPLEGARLO")
' o mejor aun construir aqui, EN y UNA forma dinamica el prog18.HTML
'cerrando todo
coneccion.Close()
END SUB
END CLASS

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)

image395.jpg

prog24.html

image396.jpg

forma dinamica que construye el prog24.exe

image397.jpg

prog25.exe respondiendo

image398.jpg

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

image399.jpg

no fue raton fue batman!!

1.- construir programas de edicion para sus tablas y bases de datos

Politica de Privacidad