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

 




Google
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
Politica de Privacidad