UNIDAD 5: VISUAL BASIC INTRODUCION A LAS BASES DE DATOS

TEMA 8: INSERCION REGISTROS INSERT VISUAL BASIC CGI

Insertar o agregar registros o renglones nuevos a una tabla en disco, es un proceso sencillo que usa la siguiente instruccion sql:

INSERT INTO TABLA(CAMPO1,CAMPO2..) VALUES(VALOR1,VALOR2..)

Recordar que solo se esta usando lo minimo de cada instruccion sql, es conveniente estudiar un tutorial de sql.

Prog19.html

<HTML>
<H4>INSERCCION NUEVO REGISTRO</H4>
<FORM ACTION=/cgi-bin/tusitio/prog19.exe METHOD=get>
NO SE CAPTURA CLAVE, DEBE SER ASIGNADA POR EL SISTEMA<BR>
NOMBRE.:<INPUT TYPE=text NAME=NOMBRE><BR>
EDAD...:<INPUT TYPE=text NAME=EDAD><BR>
<INPUT TYPE=submit VALUE=INSERTAR>
</FORM></HTML>

corrida prog19.html

image384.jpg

prog19.vb

Imports System
Imports System.Data
Imports System.Data.OleDb
Imports Microsoft.VisualBasic
PUBLIC CLASS prog19
' 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()
' enlazando coneccion a la base de datos
coneccion = NEW OLEDBCONNECTION("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\progfacil\tusitio\mibase.mdb")
' cargando el adapter con la instruccion sql
canal = NEW OLEDBDATAADAPTER("select * from mitabla", coneccion)
' cargando el dataset
tabla = NEW DATASET()
canal.FILL(tabla, "mitabla")
' variables que se ocupan
dim cren, nvaclave, edad as integer
dim nombre, q as string
'PRIMERO CONSTRUIR LA NUEVA CLAVE, PARA ESTO SE DEBERA LEER LA PRIMERA
'CELDA DEL ULTIMO RENGLON PARA OBTENER LA ULTIMA CLAVE GRABADA Y LUEGO
'LA INCREMENTAMOS EN UNO PARA OBTENER LA NUEVA CLAVE
cren = tabla.Tables("mitabla").Rows.Count
nvaclave =tabla.Tables("mitabla").Rows(cren-1)(0) + 1
'cargar el resto de la variables que se van a insertar tanto en dataset
'como en la base de datos
DIM capturar AS lnet = new lnet()
nombre = capturar.getparametro("NOMBRE")
edad = capturar.getparametro("EDAD")
'construir una string con la instruccion sql apropiada
q = "insert into mitabla(clave,nombre,edad) values(@CLAVE, @NOMBRE, @EDAD)"
'las variables raras(@CLAVE, @NOMBRE, etc) se conocen como variables PARAMETROS
'recordar no son las que estan en form19.html, ni tampoco son las que se
'acaban de crear en los renglones de arriba
'son variables que se deberan mandar a la base de datos y recordar que en la
'base de datos estas variables tienen su propio tipo de dato
'ahora se crea y carga el objeto OLEDBCOMMAND
orden = new OleDbCommand(q, coneccion)
'antes de mandar la string q al objeto coneccion, se deben cargar las variables
'parametros con el dato y el tipo de dato apropiado
orden.Parameters.Add(new OleDbParameter("@CLAVE", OleDbType.Integer))
orden.Parameters("@CLAVE").Value = nvaclave.ToString()
orden.Parameters.Add(new OleDbParameter("@NOMBRE", OleDbType.VarWChar, 20))
orden.Parameters("@NOMBRE").Value = nombre.ToString()
orden.Parameters.Add(new OleDbParameter("@EDAD", OleDbType.Integer))
orden.Parameters("@EDAD").Value = edad.ToString()
'observar que la variables parametros se cargan con strings
'es el OLEDBTYPE quien la convierte al tipo de dato de ACCESS
'ver el apendice de oledbtype's para tener la correspondencia access=oledbtype
'mandando la inserccion a la base de datos
orden.Connection.Open()
orden.ExecuteNonQuery()
orden.Connection.Close()
'avisando al usuario que ya se inserto
System.Console.WriteLine("Content-Type:text/html" & vbCrLf)
System.Console.WriteLine("REGISTRO INSERTADO 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

PARA COMPILAR ESTE PROGRAMA VER LA NOTA DEL TEMA ANTERIOR Y ES ULIMA VEZ QUE LO INDICO, SUERTE AL COMPILAR

corrida prog19.vb

image385.jpg

corrida prog18.exe

image386.jpg

Ahi esta el burrito insertado.

notas:

El programa esta bien documentado.

Se usa el metodo row.count de dataset.tables para conocer cuantos renglones tiene la tabla.

Con esta informacion ya se puede leer la primera columna ( la cero 0 desde luego) para sacar el dato de la ultima clave.

Luego se lee el ultimo renglon de la tabla con el metodo dataset.tables().rows(reng)(col).

Es importante que se entienda que con este formato dataset.tables().rows(reng)(col) se puede leer o cargar(GET-SET) cualquier celda o columna de la tabla.

Se desconto uno de la cantidad de renglones porque en tablas el primer renglon es el( Cero se acuerdan).

El metodo devolvio el valor de la ultima clave que esta en el ultimo renglon de la tabla, pero en string.

Al final se incremento en uno la variable entera para obtener el valor de la nuevaclave o clavesiguiente, misma que se cargo en su variable correspondiente.

Se crea la string q con el formato apropiado sql( como se indico al principio de este tema) observar que existen tres variables que llevan un @ antes, estas variables se llaman VARIABLES PARAMETROS, y se cargan con el objeto command.parameters()

Otra vez en este ejemplo para mandar la instruccion sql a la base de datos se crea y se usa el objeto COMMAND (llamado orden) que lleva como datos la string q y la coneccion, pero se agregan tres metodos command.parametro (orden.parameters()) en estos metodos se cargan las variables parametro, primero con el valor del dato de las variables y luego se transforman al tipo de dato apropiado usando los oledbtype(que hay que estudiar porque se tienen que asociar directamente a los tipos de datos que se usaron en access)

Ya con el objeto COMMAND(orden) listo y cargado para comunicar la instruccion sql a la base de datos, se abre la coneccion a la base de datos se manda el executenonquery(no se quiere regresar nada en esta parte recordar la nota respectiva que se dio en un tema anterior) y se cierra la coneccion y si dios quiere ya se mando el nuevo renglon a la base de datos en disco.

TAREAS PROGRAMACION VISUAL BASIC CGI :

1.- construir muchos programas de inserccion en las tablas de las bases de datos que tengan construidas

Politica de Privacidad