UNIDAD 5: VISUAL BASIC INTRODUCION A LAS BASES DE DATOS

TEMA 7: CONSULTA SQL SELECT VISUAL BASIC CGI

Existen una serie de operaciones y procesos que son muy comunes contra una tabla en una base de datos en disco, la mas comun es desplegar todos los renglones de la tabla que estan almacenados en disco, a este proceso le llamaremos SELECCION, consulta o despliegue.

Como se indico anteriormente la comunicacion con la base de datos se tendran que dar usando el lenguaje especializado de bases de datos llamado SQL(structured query language), la instruccion sql que se usa para resolver este problema tiene el siguiente formato:

SELECT [listacampos, * o ALL] FROM TABLA;

El procedimiento que se intenta seguir cuando se construya un programa asp.net que tenga que manipular una tabla en disco debera seguir los siguientes pasos:

1.- Crear una coneccion o enlace a la base de datos.

2.- Abrir la coneccion a la base de datos.

3.- Crear el enlace o adapater y cargarlo con la instruccion sql ( o cargar primero la instruccion sql en un objeto command y mandarlo a travez del adapter)

4.- Crear el dataset y cargarlo a travez del adapter

5.- Cargar un objeto table de html con el dataset

6.- Procesar el table de html (editar un renglon, agregar un renglon, modificar un renglon, etc)

7.- Cerrar la coneccion

Codigo prog18.html (opcional)

<HTML>
<FORM ACTION=/cgi-bin/tusitio/prog18.exe METHOD=get>
<INPUT TYPE=submit VALUE=consultar>
</FORM></HTML>

prog18.vb

Imports System
Imports System.Data
Imports System.Data.OleDb
Imports Microsoft.VisualBasic
PUBLIC CLASS prog18
' 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()
' 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")
' cargando el table de html con el dataset
System.Console.WriteLine("Content-Type:text/html" & vbCrLf)
System.Console.WriteLine("<HTML><TABLE Border=10 CellPadding=5><TR>")
' construyendo los encabezados de la tabla
System.Console.WriteLine("<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th></TR>")
' calculando la cantidad de renglones de la tabla dataset
' y empezar a estudiar las propiedades del dataset
' variables para despliegue
dim cren, ren, col as integer
dim temp as string
cren = tabla.Tables("mitabla").Rows.Count
' ciclo for renglon para visitar todos los renglones de la tabla dataset
' ciclo interno for columna para pasar el dato del dataset al table html
for ren = 0 to cren-1
System.Console.WriteLine("<TR>")
for col = 0 to 2
'cargando el dato a una variable string para que no quede muy grande el writeline de despliegue
temp = tabla.Tables("mitabla").Rows(ren)(col).ToString()
System.Console.WriteLine("<TD>"&temp.ToString() &"</TD>")
next col
System.Console.WriteLine("</TR>")
next ren
System.Console.WriteLine("</HTML>")
' cerrando todo
coneccion.Close()
END SUB
END CLASS

nota nota ojo aguas

A PARTIR DE AQUI TODOS LOS PROGRAMAS QUE SIGUEN Y QUE LLEVAN LOS IMPORTS system.data y sistem.data.oledbc se tendran que compilar con la instruccion siguiente:

C:> vbc /r:system.dll /r:system.xml.dll /r:system.data.dll /r:lnet.dll PROG234.VB

COMO SE NOTA SE INCLUYEN LIBRERIAS EXTRAS APARTE DE lnet.dll que se ha venido usando, la buena noticia es que el sistema las encuentra, es decir no es necesario tenerlas en el mismo folder de tareas ni subirlas a tu sitio en programacionfacil.

Les recuerdo que es mas facil construir y usar el archivo compilar.bat con la instruccion:

vbc /r:system.dll /r:system.xml.dll /r:system.data.dll /r:lnet.dll %1

corrida prog18.html

image382.jpg

corrida prog18.vb

image383.jpg

notas:

1.- revisar con cuidado el programa, proque como todo buen programa lleva incluida mucha documentacion o explicacion.

2.- Se sigue el procedimiento generico para procesar tablas usando ADO.NET

3.- Observar y siempre incluir los namespaces indicados.

4.- Se empieza creando las variables globales a ocupar y abriendo la coneccion a la base de datos, si se les hace muy grande la string del provedor, pueden cargarla primero en una variable string y carguen la string en el constructor de la coneccion, pero esto es opcional.

4.1) Otros provedores de bases de datos se dieron en el tema de ado.net para cuando se quieran accesar bases de datos diferentes de access.

5.- Tomar nota como se hace una referencia a la base de datos, esto es en c:\progfacil\tusitio\base.mdb

6.- Se crea el adapter y se carga el constructor con la instruccion sql y la coneccion, aqui es necesario entender que existen varias maneras de hacer esto:

Cargar una string con el sql y crear y usar un objeto command directamente por ejemplo comandtext=stringsql; y luego todavia se tendria que ejecutar con executenonquery(que ejecuta una string que no regresa datos por ejemplo insert o update para un adpater) o executereader(si en lugar de usar adapter se usa un reader) o executescalar( metodo que regresa un solo dato de la base de datos)

Usar algunas de las funciones descritas del adapter por ejemplo adpatercommandselect(stringsql)

Pero lo mas sencillo fue usar el metodo que se puso en el programa, es decir crear el adapter y pasarle directamente la instruccion sql.

7.- Luego se creo el dataset y se cargo con toda la base de datos en disco entender esto bien dataset puede quedar cargado con todas las tablas que tenga la base de datos por eso se usa un FILL para pasar al dataset solo una de las tablas(mi tabla), esto da origen a dos notas:

7.1.- Al programar mas adelante se ocupara explicitamente indicarle al compilador con cual tabla se va a trabajar, es por esta razon que se veran instrucciones tales como tabla.tables(“clientes”).etc.etc. aqui se esta informando al compilador que del dataset(TABLA) se va a realizar un proceso con la tabla de clientes.

7.2.- Para procesar dos o mas tablas, entonces se tendra que usar mucho el formato que se vio en la nota 7.1

8.- Posteriormente se carga el TABLE DE HTML con el dataset.

9.- Recordar que la tabla del dataset empieza con el renglon 0 y empieza en la columna 0.

10.- Para visitar o procesar todos los renglones de la tabla del dataset se usa un ciclo for renglon.

11.- Para visitar o procesar todas las columnas de un renglon se usa un ciclo for columna.

12.- Para procesar un dato, celda o columna de un renglon culaesquiera se usa el siguiente formato:

12.1 -(METODO GET segun microsoft)

variable string = DATASET.TABLES(nomtabla).ROWS(reng)(col)

ej:

string temp=tabla.Tables(“mitabla”).Rows(reng)(col)

Observar que del dataset salen strings

12.2.-(METODO SET segun microsoft)

DATASET.Tables(nomtabla).Rows(reng)(col)=dato.ToString()

Por supuesto que se cargara el dataset con puras strings tambien.

TAREAS PROGRAMACION VISUAL BASIC CGI

1.- Construir y desplegar una primera base de datos que contenga la primera tabla que disenaron en el tema de tablas.

2.- Construir una segunda base de datos que contenga cuando menos tres de las tablas ya disenadas y desplegar cualquiera de ellas usando una sola forma html donde el usuario selecciona cual quiere desplegar.

Politica de Privacidad