Guía 7 Elaboración de script para mantenimiento de tablas Paso 1. Crear una base de datos en SQL o ACCESS, y crear una tabla que tenga de nombre álbum, y sus campos sean: Id: para identificar cada registro, Titulo: para colocarle un titulo a cada foto o imagen, Foto: donde se guardara el nombre y extensión de imagen o foto, Descip: donde pondrás la descripción de la foto. Posteriormente deberás crear el string de conexión para poderlo usar en la conexión de datos. Paso 2. En la carpeta App_Code cree un archivo de clases que tenga el nombre por default que seria Class1 y copie el código siguiente: El doble asterico ** significa comentario, no copiar ** seleccione proveer de datos Imports System.Data.OleDb Imports Microsoft.VisualBasic Public Class Class1 ** Creo dos variables publicas una donde creare un objeto de conexion (cnn) y otra que me servirá para enviar el resultado de consultas (reg) por esa razón es DataReader Public cnn As New OleDbConnection Public reg As OleDbDataReader ** Creo un metodo donde agrego el atributo donde guardo la conexión, y creo la creo, además de usar un try para que me envie un mensaje amigable por cualquier error de conexión. Public Sub ini() cnn.ConnectionString = (" Colocar aqui su string de conexión ") Try cnn.Open() Catch ex As Exception MsgBox("Error de conexión") End Try End Sub ** Creo un metodo para usarlo cuando quiera cerrar la conexión. Public Sub fin() cnn.Close() End Sub ** Creo un metodo que me sirve para ejecutar las consultas del programa, para ser mas específicos las de INSERT INTO, DELETE y UPDATE, las cuales no devuelven datos. Public Sub envia(ByVal texto As String) Dim con As New OleDbCommand(texto, cnn) con.ExecuteNonQuery() End Sub ** Creo un metodo que me sirve para ejecutar las consultas del programa, para ser mas específicos las de SELECT, porque estas devuelven datos, aquí regreso la variable reg con el resultado de la consulta. Public Function recibe(ByVal texto As String) As OleDbDataReader Dim con As New OleDbCommand(texto, cnn) con.ExecuteNonQuery() reg = con.ExecuteReader Return reg End Function End Class Paso 3. Creo una MasterPage para manejar el mantenimiento y creare un meno que tenga las siguientes opciones: Bienvenidos, Agregar Datos, Mostrar Datos y Mostrar Grid. La creación de estas ya la evaluamos por lo tanto no explicare aquí como hacerlas. Paso 4 Creación de páginas: Crear el script de agregación de datos (sumar.aspx), ejemplo: Y programaremos el botón, en el CodeBehind, de la siguiente manera. ** Creo un metodo que me sirve para registrar los datos en la base de datos. Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click ** Creamos la variable abc y la instanciamos para tengo las clases de Class1 y poder usar el objeto. Dim abc As New Class1 Dim texto As String = "INSERT INTO album (Titulo,Foto,Descrip) VALUES ('" & TitulFoto.Text & "','" & ArchivoFoto.FileName & "','" & DescripFoto.Text & "')" ** ahora hacemos uso de los métodos que creamos en Class1 abc.ini() abc.envia(texto) abc.fin() subir_la_foto() Response.Redirect("Default.aspx") End Sub ** ya que estamos aquí crearemos una método para subir la imagen o fotografía, a una carpeta que llamaremos “capturas” Sub subir_la_foto() Dim sName As String = ArchivoFoto.FileName() If ArchivoFoto.HasFile Then ArchivoFoto.SaveAs(MapPath("~/capturas/" & sName)) End If End Sub Una vez que hemos probado que funciona correctamente crearemos el script para ver nuestras capturas, haremos dos uno normal y otro con Grid. Creación de páginas: Crear el script de mostrar de datos (ver.aspx), ejemplo: Para este script no usaremos nada en el diseño, solo trabajaremos en el Page_Load, donde programaremos lo siguiente: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ** Defino la consulta y la guardo en una variable. Dim texto As String = "SELECT * FROM album" Dim abc As New Class1 abc.ini() abc.recibe(texto) Response.Write("<table border =0>") ** Para mostrar todos los archivos me auxilio de un while para recorer el arreglo. While abc.reg.Read Response.Write("<tr><td><img class=style1 height=100 width=100 src=capturas/" & abc.reg("Foto") & "/><td>") Response.Write("<td>" & abc.reg("Titulo") & "<td>") Response.Write("<td>" & abc.reg("Descrip") & "<td>") ** Creo un link para borrar registros. OJO voy a pasar por Get dos variables, el id para poder borrar el registro y el nombre del archivo de imagen para eliminarlo de la carpeta Response.Write("<td><a href=eliminar.aspx?eli=" & abc.reg("id") & "&eli2=" & abc.reg("foto") & ">eliminar</a><td>") End While Creación de páginas: Crear el script de eliminar datos (eliminar.aspx), ejemplo: Para este script no usaremos nada en el diseño, solo trabajaremos en el Page_Load, donde programaremos lo siguiente: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ** Recupera la variables para eliminar el registro y la imagen. Dim VarEli As String = Request.QueryString("eli") Dim PicEli As String = Request.QueryString("eli2") ** Elimino el registro. Dim abc As New Class1 Dim texto As String = "DELETE FROM album WHERE id =" & VarEli abc.ini() abc.envia(texto) ** Elimino la imagen del directorio. Dim borra As String = MapPath("~/capturas/" & PicEli) Kill(borra) Response.Redirect("default.aspx") End Sub Creación de páginas: Crear el script de Mostrar en Grid (vergrid.aspx), ejemplo: En el diseño agregamos un GridView vacio, y lo programamos de la siguiente manera: En primer lugar desactivamos la casilla de abajo que dice “Generar campos automáticamente” de esta forma configuraremos cada campo a nuestra forma: El primer campo será un ImagenField y lo configuraremos según la imagen de arriba, para que nos muestre la imagen por línea. Después agregaremos un campo para el Titulo y otro para la Descripción. Y por ultimo para llenar el GridView utilizaremos la siguiente progrmación en el Page_Load: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ** Obtengo la informacion Dim strcon As String = "SELECT * FROM album" Dim abc As New Class1 abc.ini() abc.recibe(strcon) ** En la primera línea lleno el GridView y en la segunda lo muestro. GridView1.DataSource = abc.reg GridView1.DataBind() End Sub Para completar puede auxiliarse del ejemplo, pero lo ideal es hacer por uno mismo para entenderlo mejor.