Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
LENGUAJE DE PROGRAMACIÓN
INDICE
1.- ASP NET
1.1 Asp Net
1.2 ADO NET
1.3 Clases Basicas pa gestion de Datos
1.4 Acciones de Ida y Vuelta de Una WEB
1.5 Directivas den ASP
1.6 Tipos de Datos
1.7 Web Form - controles
1.8 Funciones Numéricas , cadenas y Fechas
2.- Aplicaciones
2.1 Web- form calculo matemáticos
2.2 Empleando el Datgrid1
2.3 Consultas con Hipervínculos
2.4 Consultas en cascada
2.5 Genrador de Propiedades de un datagrid
2.6 Actualizaciones en linea
2.7 Empleando Store Procedure
3.- Reportes
3.1 Crystal Report entorno para el diseño
3.2 Creacion de un reportes simple con campos enlazados
3.3 Ejecucion de un reporte desde un formulario
3.4 Filtros en un reporte
Responsable:
Prof. Ing. Alberto Moreno –Coordinador de Lenguajes Visuales
Docencia:
- Universidad Tecnologica del Peru
- Universidad Nacional de Ingenieria
- Universidad Catolica S.S.
Email: am_alberto@hotmail.com
“Si quieres ganar, superar, vencer, vuelve a comenzar porque en este mundo hay que
hacerlo todo dos o mas veces
Asp_net -3-
CAPITULO 1
1 Introducción a la plataforma .NET
Simplificando mucho las cosas para poder dar una definición corta y comprensible,
se podría decir que la plataforma .NET es un amplio conjunto de bibliotecas de
desarrollo que pueden ser utilizadas por otras aplicaciones para acelerar
enormemente el desarrollo y obtener de manera automática características
avanzadas de seguridad, rendimiento, etc...
En realidad .NET es mucho más que eso ya que ofrece un entorno gestionado de
ejecución de aplicaciones, nuevos lenguajes de programación y compiladores, y
permite el desarrollo de todo tipo de funcionalidades: desde programas de consola
o servicios Windows hasta aplicaciones para dispositivos móviles, pasando por
desarrollos de escritorio o para Internet. Son estos últimos de los que nos
ocuparemos en este curso. Pero antes conviene conocer los fundamentos en los
que se basa cualquier aplicación creada con .NET, incluyendo las que nos
interesan.
Dada la ingente cantidad de clases que existen debe existir algún modo de
organizarlas de un modo coherente. Además hay que tener en cuenta que
podemos adquirir más funcionalidades (que se traducen en clases) a otros
fabricantes, por no mencionar que crearemos continuamente nuevas clases
propias.
Asp_net -4-
eligiendo el lenguaje que deseas, que puede ser Visual Basic .NET, Visual C#
.NET o Visual C++.NET
Existen mas características RAD en Visual Studio .NET, las cuales trataremos
mas adelante.
Web Forms (formularios web) que permiten, entre otras cosas, separar la interfaz del
usuario de la funcionalidad de la aplicación.
Internet Information Server (IIS), es el servidor Web de Microsoft que corre sobre
plataformas Windows. Los servicios que ofrece son: FTP, SMTP, NNTP y
HTTP/HTTPS
HTML Forms
Suma.html
<html>
<body>
<form>
<input type="text" name="op1" />
+
<input type="text" name="op2" />
<input type="submit" value=" = " />
</form>
</body>
</html>
Asp_net -8-
Procesamiento en el Servidor
Resultado
Codificación.-
<%@ Page language="vb"%>
<HTML>
<body>
<center>
<form name="frmintro" method="post" action="demo1.aspx">
Asp_net -10-
<h3>Primer Ejemplo</h3>
<h3>Ingrese Su Nombre :<input type =text name = "nombre"
value ="<%=request.form("nombre")%>">
Carrera : <select name="categoria" size=1>
<%
Dim i as integer
Dim values() as string={"Ing. Sistemas","Medicina","Psicologia","Administracion"}
for i=0 to values.length -1
%>
<% if request.form("categoria")=values(i) then%>
<option selected>
<%else%>
<option>
<%end if%>
<%=values(i)%></option>
<%next%>
</selected></h3>
<input type =submit name="busqueda" value ="busqueda">
<%if(not request.form("busqueda")=nothing) then%>
<p> Hola, <%=request.form("nombre")%>, has seleccionado la Carrera de :
<% =request.form("categoria")%> </p>
<%end if%>
</form>
</center>
</body>
</HTML>
<html>
<head>
<script language="VB" runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
If Not IsPostBack Then si la pagina no esta cargada
Dim values as ArrayList= new ArrayList()
values.Add ("Visual Net")
values.Add ("Power Builder")
values.Add ("Macromedia MX")
values.Add ("Sql Server")
values.Add ("Oracle")
Asp_net -11-
values.Add ("Linux")
DropDown1.DataSource = values
DropDown1.DataBind
End If
End Sub
Nota.-
En vez de un array List tambien se puede emplear un arrgelo dinamico
Dim values() as string={ Visual Net Power Builder Macromedia Mx sql server }
Dropdown1.datasource=values
Ejercicios:
Controles Intrínsicos y WebForms:
1.-- Ingresar como datos : Nombre del Trabajador, sueldo y cantidad de Días por
vacaciones Mostrar el pago por vacaciones, la fecha de retorno y el día de retorno,
además si el día es sábado o domingo pintarlo con rojo sino pintarlo de color azul.
(se debe codificar solo en el pagina aspx)
Calendario de Pagos
<<<Retornar
Los incrementos de precio, son de acuerdo a los meses de pago y son 20%, 40%
y 60% respectivamente, la cuota mensual es constante.
3.- El gobierno tiene un plan para vivienda para el sector privado, bajo las
siguientes condiciones: Si los ingresos del comprador son menores a $1000, dará
como cuota inicial del 2% del costo de la casa y el resto lo distribuirá en pago
mensuales constantes, a pagar en 5 años; Si los ingresos del comprador es
mayor a $1000 la cuota inicial será del 5% y el resto se pagara en pago
mensuales de 4 años
Se pide mostrar la cuota inicial y el pago mensual y el saldo respecto a cada mes
en una cuadricula de datos(grid) ; Los departamentos son seleccionados a través
de la tabla
area Costo Datos de ingreso:
85 Mts c $15000 Nombre del comprador, Sueldo ,el tipo de
departamento y la fecha de compra
. 100 Mts c $ 18000
120 mts c. $ 21000 Todos los datos deben ser validados
5.- Una librería ofrece ofertas de libros, para ello en una lista muestra la categoría
(Ciencia, Lenguaje, Historia), al seleccionar una categoría va mostrar solo los
libros de esa categoría en otra lista: por ejemplo ciencia(Matemática I, Física I,
Química, Anatomía); Lenguaje( Antónimos, sinónimos, Caligrafía); Historia (
Historia del Perú, Historia Universal, Geografía), a cada libro colocarlo un precio
en la a través de un arreglo, al seleccionar un libro mostrara su precio.
Luego elegir el tipo de venta: Publico General, estudiante o Docente deberá
calcular un descuento de (0%, 10% y 30% respectivamente), mostrar también el
total a pagar.
Asp_net -14-
6.- Unir las paginas con un pagina tipo Índice tipo menú empleando el Framset
(división de ventanas) , el cual será mostrado en una pagina principal con dos
marcos de paginas para tener acceso a las demás paginas.
Asp_net -15-
CAPITULO 2
Ubicación fisica
12.- El Proyecto web creado en ASP NET 2.0 no incluye el tradicional Subfolder
BIN. Cuando generamos y ejecutamos nuestro proyecto Web, ASP NET genera
una colección de archivos temporales en la carpeta:
\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET
Files\webprueba1
APLICACIÌN WebApli01.aspx
Asp_net -19-
1. cuando cargue la página deberá de limpiar todas las cajas de textos, se deberá de
mostrar la fecha de sistema en el lblFecha.
2..-Cuando se ingrese una fecha inicial, en la caja de texto txtfechainicial, y
numero de incremento de meses en la caja de texto txtmes, y haga clic en el
botón Calcular, se deberá de mostrar la fecha incrementada en meses en la caja
de texto txtfechaRes, y además los días en letras correspondientes de la
fecha en los label lblDiaInicio y lblDiaFinal.
3.-Cuando ingrese una fecha Actual en txtfechaactual y una fecha previa o
anterior en txtfechaanterior y haga clic en el botón mostrar, se deberá de
mostrar los días en letras en los labels lblDiaFecActual y
LblDiaFechaAnterior. También se deberán de mostrar todos los parámetros de esa
diferencia de fechas, como cuantos días paso, meses años etc, e inclusive si esa
fecha actual es bisiesto es o no.
4.-cuando haga clic en el botón nuevo, se deberá de limpiar todos las cajas de
texto.
5.-cuando haga clic en el botón cerrar, nos deberá de permitir salir de la
aplicación.
1.-usara el Try catch, para controlar los errores producidos en el código que
programara, y mostrara el mensaje en el label lblerrores.
6.-cuando haga clic en hiperlink Menu principal, nos deberá de enviar a la pagina
Webprincipal.aspx.
WebApli01.aspx
Asp_net -20-
Resultado de la pagina
f) usara el Try catch, para controlar los errores producidos en el código que
programara, y mostrara el mensaje en el label lblerrores.
g) cuando haga clic en hiperlink Menu principal, nos deberá de enviar a la pagina
Webprincipal.aspx.
Resultado de la pagina.
Asp_net -22-
CAPITULO 3.
DIRECTIVE DESCRIPCION
Codigos
Public Class SystemClass
Inherits System.Web.UI.Page
Protected WithEvents txtRadius As
System.Web.UI.WebControls.TextBox
Protected WithEvents butCalculate As
System.Web.UI.WebControls.Button
Protected WithEvents txtSort As
System.Web.UI.WebControls.TextBox
Protected WithEvents butSort As
System.Web.UI.WebControls.Button
Protected WithEvents litResult As
System.Web.UI.WebControls.Literal
+ codigo Generado
ShowResult(dblCircArea)
End Sub
Controles de validación
Asp_net -28-
RequieredFieldValidator.-(valida2)
Errormensage Campo oblugatorio
ControlTovalidate:Txtmon
RangeValidator (Valida1)
ErrorMessage.- Mes entre 6- 18
Public Class WebForm3 ControlTovalidate.- Txtmes
Inherits System.Web.UI.Page
+codigo Generado ValidationSummary .- Resumen de errores
Dim dt As DataTable
Dim dr As DataRow
Procesamiento en el Servidor
ASP.NET
ASP.NET - Ventajas
1) Directorio BIN
a) Contiene el assembly de la aplicación (Ej.: MiAplic.dll)
b) Cero o más assemblies (Componentes externos)
2) Enlaces a Servicios Web XML
a) Permiten a la aplicación ASP.NET enviar y recibir datos desde Servicios
Web
Practica 2.-
2.- El gobierno tiene un plan para vivienda para el sector privado, bajo las
siguientes condiciones: Si los ingresos del comprador son menores a $1000, dará
como cuota inicial del 2% del costo de la casa y el resto lo distribuirá en pago
mensuales constantes, a pagar en 5 años; Si los ingresos del comprador es
mayor a $1000 la cuota inicial será del 5% y el resto se pagara en pago
mensuales de 4 años
Se pide mostrar la cuota inicial y el pago mensual y el saldo respecto a cada mes
en una cuadricula de datos(grid) ; Los departamentos son seleccionados a través
de la tabla
area Costo Datos de ingreso:
85 Mts c $15000 Nombre del comprador, Sueldo ,el tipo de
departamento y la fecha de compra
. 95 Mts c $ 18000
Todos los datos deben ser validados
105 mts c. $ 21000
boton general para visualizar el Precio Total, el IGV y el neto a pagar en dolores
y soles.
Asp_net -33-
CAPITULO 4
Acceso a datos
ADO.NET
El acceso a fuentes de datos es algo indispensable en cualquier lenguaje o
plataforma de desarrollo. La parte de la BCL que se especializa en el acceso a
datos se denomina de forma genérica como ADO.NET.
ADO.NET ofrece una funcionalidad completamente nueva, que tiene poco que ver
con lo existente hasta la fecha en el mercado. Sin embargo, con el ánimo de retirar
barreras a su aprendizaje, Microsoft denominó a su nuevo modelo de acceso a
datos con un nombre similar y algunas de sus clases recuerdan a objetos de
propósito análogo en el vetusto ADO.
Arquitectura de ADO.NET
El concepto más importante que hay que tener claro sobre ADO.NET es su modo
de funcionar, que se revela claramente al analizar su arquitectura:
Asp_net -34-
Capa conectada
La clase DataAdapter hace uso de las tres anteriores para actuar de puente entre
la capa conectada y la desconectada.
Estas clases son abstractas, es decir, no tienen una implementación real de la que
se pueda hacer uso directamente. Es en este punto en donde entran en juego los
proveedores de datos. Cada origen de datos tiene un modo especial de Así, por
ejemplo, las clases específicas para acceder a SQL Server se llaman
SqlConnection, SqlCommand, SqlDataReader y SqlDataAdapter y se
encuentran bajo el espacio de nombres System.Data.SqlClient. Es decir, al
contrario que en ADO clásico no hay una única clase Connection o Command que
Asp_net -35-
Existen proveedores nativos, que son los que se comunican directamente con el
origen de datos (por ejemplo el de SQL Server o el de Oracle), y proveedores
"puente", que se utilizan para acceder a través de ODBC u OLEDB cuando no
existe un proveedor nativo para un determinado origen de datos.
Capa desconectada
Una vez que ya se han recuperado los datos desde cualquier origen de datos que
requiera una conexión ésta ya no es necesaria. Sin embargo sigue siendo
necesario trabajar con los datos obtenidos de una manera flexible. Es aquí cuando
la capa de datos desconectada entra en juego. Además, en muchas ocasiones es
necesario tratar con datos que no han sido obtenidos desde un origen de datos
relacional con el que se requiera una conexión. A veces únicamente necesitamos
un almacén de datos temporal pero que ofrezca características avanzadas de
gestión y acceso a la información.
System.Data
Las clases del nombre de espacio System.Data son bastantes extensas y variadas.
Quizás las clases más importantes son la clase DataView, la clase DataSet y la clase
DataTable.
La clase DataSet
La clase DataView
Asp_net -37-
La clase DataTable
El objeto Connection
El objeto Command
El objeto DataReader
El paradigma de la conexión
Cuando abordamos un proyecto de acceso a fuentes de datos, siempre
nos encontramos con una duda existencial.
¿Debemos crear una conexión con la base de datos al principio de
nuestra aplicación y cerrarla cuando la aplicación se cierre?, ¿o debemos
crear una conexión con la base de datos sólo cuando vayamos a trabajar
con la fuente de datos?. ¿Y si estamos trabajando continuamente con
una fuente de datos?, ¿cómo penalizarían todas estas acciones?.
Es difícil de asumir que acción tomar en cada caso, y es que
dependiendo de lo que vayamos a realizar, a veces es más efectiva una
acción que otra, y en otras ocasiones, no está del todo claro, ya que no
existe en sí una regla clara que especifique qué acción tomar en un
momento dado.
Lo que sí está claro es que el modelo de datos de ADO.NET que hemos
visto, quedaría resumido en cuanto a la conectividad de la manera en la
que se representa en la figura 1.
Figura 1
El objeto DataReader sólo permite que nos desplacemos por los datos en
una sola dirección, sin vuelta atrás.
Por el contrario, el objeto DataSet nos permite movernos por los registros
para adelante y para atrás.
Además, sólo podemos utilizar el objeto DataReader con conexiones
establecidas en una sentencia SQL por ejemplo, pero no podemos variar
esta.
Para hacerlo, debemos entonces modificar la conexión con el comando
establecido.
DataReader es rápido
Para trabajar con este objeto, utilizaremos los objetos siguientes del proveedor de
acceso a datos:
Connection
Command
DataReader
Un resumen gráfico de esto es lo que podemos ver en la figura 1.
3. En caso de que quiera escribir los Tags HTML directamente en esta ventana,
siéntase a gusto, sin embargo, le mostraré los controles en la ventana de Design.
Siendo así, haga click en el botón Design en el pie de la página.
6. Para definir la fuente de datos, en Choose Data Source seleccione New Data Source.
Asp_net -45-
Usted puede seleccionar cualquier fuente de datos, pero en este caso elija Database.
Note que ya se define un ID (SqlDataSource1), y en caso de que quiera alterarlo bastará
con escribirlo. Como vamos a utilizar esta conexión en varios ejercicios, deje el
checkbox de conexión seleccionado para que la string de conexión sea almacenada en el
archivo Web.Config.
8. Una vez configurada la cadena de conexión necesita identificar cuál es la tabla que
será usada como fuente de datos. Seleccione Productos y algunos campos.
Asp_net -46-
10. En la Smart Tag se muestran los checkboxes para que active las operaciones.
Seleccione:
• Enable Paging, para permitir la paginación.
• Enable Sorting, para permitir el ordenado por columna.
• Enable Editing, para permitir la edición de datos directamente en el GridView.
• Enable Deleting, para permitir la exclusión de datos.
11. Si desea editar las columnas, seleccione Edit Columns. Primero deberá “de
seleccionar” el tilde campo “Auto generate Columns”, y luego añadir las columnas
que desee
Asp_net -48-
12. Puede aplicar el formato que desee en los campos, por ejemplo configure el
formato en el campo “ProductNumber para que sea exhibido como numérico, sin
decimales (DataFormatString = {0:n0}).
Se puede aplicar cualquier formato a las columnas.
13. Como fue permitida la edición de datos en el control, personalice los botones al
idioma en el que el control será utilizado. Para ello, seleccione el Command Field,
localice las propiedades Text de cada botón y modifique el texto.
Asp_net -49-
14. Seleccione Auto Format en el Smart Tag, y aplique un formato de acuerdo con su
agrado. (en el ejemplo adjunto en el material se utiliza un Theme para la definición
del estilo)
Cantidad de Pedidos
<<Retorno
2.-Seleccione una categoría desde un combo , seleccionando una categoría muestre todos
los productos de esa categoría
Mes Total
Enero
Febrero
Total Monto
Retorno
Asp_net -51-
5.- Consulta en Cascada .- Ingrese dos rangos de fecha (fecha inicial y fecha final ) validar
para que la fecha final sea mayor al inicial , debe mostrar todos los pedidos en esa fecha
(OrederId, Companyname y fecha ) ademas en el detalle habra un hipervínculo para
mostrar su detalle correspondiente en ota pagina similar a la pregunta nro 4.
CAPITULO 5
Lo más habitual cuando se crea una aplicación o un sitio Web es que las
páginas que lo conforman sean todas bastante parecidas o al menos que
existan varios grupos de páginas similares que sólo varían ciertos contenidos
entre ellas. Por ejemplo, puede haber una categoría de páginas para
mostrar artículos en el que todas son iguales excepto por el contenido del
propio artículo en su parte central, mientras que en otra zona de la
aplicación el diseño es completamente diferente pero sus páginas se parecen
todas entre sí
Por ejemplo, la siguiente figura muestra capturas de dos páginas pertenecientes al
portal MSDN:
Asp_net -54-
Una Master Page proporciona una forma de definir una estructura e interfaz
comunes para un grupo de páginas pertenecientes a un mismo sitio Web.
Esta estructura común se almacena en un único archivo independiente. Ello
facilita mucho su mantenimiento puesto que, para actualizar todas las
páginas que lo utilizan, basta con editar dicho archivo
Asp_net -55-
directiva <% @ master %> en lugar de una directiva <% @ page %>. Por lo
demás se pueden considerar prácticamente equivalentes. Esto es importante
porque significa que ya sabemos todo lo necesario para crearlas.
Para agregar una Master Page a nuestro proyecto sólo hay que elegir el
icono Página Principal en el diálgo de agregar nueva referencia de cualquier
carpeta del mismo:
De este modo, cuando una página normal derive de una MP, sólo se podrá
introducir código dentro de las zonas definidas por estos comodines de contenido
Cuando añadimos una nueva página ASPX a nuestro proyecto y existe al
menos una Master Page, podemos marcar una opción para que, antes
de crearla, nos permita seleccionar de qué MP derivará:
Temas y skin
Asp_net -58-
Gracias a las Master Pages podemos definir una estructura común para las
páginas de nuestra aplicación Web. Sin embargo aún no hemos resuelto
todas las cuestiones sobre el mantenimiento de la interfaz que habíamos
planteado. Los controles que añadamos a las zonas de contenido de
nuestras páginas todavía tendrán el aspecto predeterminado. Podemos
configurar su aspecto estableciendo las propiedades de apariencia del
control (como BackColor, Font, etc...). El problema que tiene este método
es que, si deseamos cambiar por completo la apariencia de estos controles,
tendríamos que tocar una por una todas las páginas. Esta no es una opción
admisible en cuanto la aplicación dispone de más de unas pocas página
HOJAS DE ESTILO
text-decoration: none;
color: #DBB94F;}
Asp_net -59-
En este fragmento, las etiquetas definen el aspecto que deben tomar los enlaces y
el cuerpo de la página.
La gran ventaja de esta técnica es que basta con tocar el archivo CSS
para que todas las páginas que lo utilizan vean su aspecto modificado de
manera acorde a los cambios. Da igual que sea sólo una o haya miles. Al
tener el aspecto centralizado en una ubicación única el mantenimiento es
muy sencillo.
La gran ventaja de esta técnica es que basta con tocar el archivo CSS
para que todas las páginas que lo utilizan vean su aspecto modificado de
manera acorde a los cambios. Da igual que sea sólo una o haya miles. Al
tener el aspecto centralizado en una ubicación única el mantenimiento es
muy sencillo.
Creara una Página Maestra y creara tal como se muestra en el diseño mostrado.
El Diseño del Master Page (MasterPage.Master)
Creara un Master Page, que se diseño único que tomaran todas las paginas Web
que vienen a continuación.
Asp_net -65-
Customers.Aspx
La ejecución sera:
Asp_net -66-
CAPITULO 6
DetailsView
Construir un formulario con el control DetailsView para visualizar y
modificar los registros de la tabla “Employes” de la base de datos
AdventureWorks.
1. Agregue un nuevo Web Form al Solution Explorer, llámelo DetailsView.aspx.
2. Abra la Toolbox y arrastre un control DetailsView hacia el formulario. Se abrirá una
ventana con la Smart Tag para informar la fuente de datos. Seleccione New data
source:
5. Haga click en el botón Advanced Options y seleccione los dos checkboxes para que
sean creados los métodos para soportar la inserción y edición de datos.
6. Volviendo al Smart Tag, seleccione todos los checkboxes para activar la paginación
y el mantenimiento de datos.
7. .Ingrese a la opción “EditFields…” y des seleccione la opción “Auto generate
columns”. Del mismo modo que hizo con la grilla, añada los campos que desee por
medio de la opción “Add New Field…”
Capitulo 7
FormView
Objetivo: Construir un formulario con el control FormView para visualizar
los registros de la tabla “Customers” de la base de datos NorthWind.
DataList
Construir un formulario con el control DataList. Este control muestra diversos
registros en la misma página en la que usted debe determinar el área de datos
y el respectivo layout.
1. Agregue un nuevo Web Form al Solution Explorer.
Arrastre el control DataList hacia el formulario.
Como en los ejercicios anteriores seleccione el DataSource, en este caso seleccione
la tabla Orders.
Note que en el HTML, la propiedad clave para exhibir los datos es la Text donde usa el Eval(field).
La conexión puede efectuarse con SqlServer o con cualquier otro Proveedor de BDD
Como se muestra en la figura.
Imports system.data.sqlClient
Imports System.data.OleDb
Imports system.data
Public Class WebApli01
Inherits System.Web.UI.Page
Dim CnSql As New SqlConnection("Server=localhost;uid=sa;database=BDventas")
Dim CnOle As New OleDbConnection("Provider=SQlOLEDB;uid=sa;database=ventas")
End Sub
End Class
Su diseño
Imports System.Data
Imports System.Data.sqlclient
Public Class Web02
Inherits System.Web.UI.Page
Dim cn As New SqlConnection("Server=(Local);Uid=sa;database=Bdventas")
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
If Not Page.IsPostBack Then
Dim dr As SqlDataReader
Dim sql1 As String = "Select * From Clientes"
Dim sql2 As String = "Select * From Fac_Cabe"
Asp_net -79-
4.- Aplicación en cascada , al seleccionar un cliente que muestre todas sus facturas:
Asp_net -81-
Para no hacer redundancia con sqldataAdapter , dataset y el llenado del dataset en memoria,
seria ideal de realizar una función, de tal modo que cada vez que se desea tener acceso a
una tabla de BDD o consulta invocamos a la funcion.
RUNSQL
CadSql
Puede ser :
Select * from Cliente
Try
Dim codigo As String =chr(39)+ DropDownList1.SelectedValue+ chr(39)
Dim strsql As String
strsql = "Select Fac_num From Fac_Cabe where Cli_cod=" & codigo
DropDownList2.Datasource=Runsql(Strsql)
DropDownList2.Databind()
If DropDownList2.items.count=0 then
lblMensaje.Text = " * No tiene Facturas"
lblMensaje.ForeColor = Color.Red
'Ocultando la respuesta del datagrid
Panel1.Visible = False
Exit Sub
Else
lblMensaje.Text = ""
Panel1.Visible = True
End If
Catch ex As SqlException
Response.Write(ex.Message)
End Try
End Sub
Private Sub DropDownList2_SelectedIndexChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles DropDownList2.SelectedIndexChanged
Try
Dim factura As String = chr(39)+DropDownList2.SelectedItem.Text+chr(39)
Dim strsql As String
strsql = "Select Art_nom,P.Art_Pre,Art_Can,Total=(P.Art_Pre*Art_can) " & _
" From Fac_deta d, Articulos p where d.Art_cod=p.Art_cod " & _
" and Fac_Num=" & factura
Dim da As New SqlDataAdapter(strsql, cn)
Dim ds As New DataSet
da.Fill(ds, "Detalle")
GridView1.DataSource = ds.Tables("Detalle")
DataGrid1.DataBind()
'Obteniendo la suma total del detalle
txtTotal.Text = Format(ds.Tables("Detalle").Compute("Sum(Total)", ""), "##0.##") Catch
ex As SqlException
Response.Redirect(ex.Message)
End Try
End Sub
End Class
Asp_net -83-
Aplicacion 5.-
La salida será
Aplicación 05.aspx
Imports System.Data
Imports System.Data.SqlClient
Public Class Web05
Inherits System.Web.UI.Page
Dim cn As New SqlConnection("Server=localhost;uid=sa;database=bdventas")
ListBox1.DataValueField = "Cli_cod"
ListBox1.DataBind()
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
Try
Dim codigo As String = chr(39) & ListBox1.SelectedItem.Value & chr(39)
Dim strsql As String
RadioButtonList
Rbletras
TxtTotal
Codificación web06.aspx
Imports System.Data
Imports System.Data.SqlClient
Public Class Web06
Inherits System.Web.UI.Page
Dim cn As New SqlConnection("Server=localhost;uid=Sa;database=Northwind") Dim ds
As New DataSet
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
If Not Page.IsPostBack Then
Dim da As New SqlDataAdapter("Select CustomerID,CompanyName,ContactName From
Customers", cn)
da.Fill(ds, "Clientes")
GridView1.DataSource = ds.Tables("Clientes")
GridView1.DataBind()
txtTotal.Text = ds.Tables(0).Rows.Count
Dim i As Integer
For i = 65 To 90 ‘para llenar las opciones como letras
Rbletras.Items.Add(Chr(i)) Next
End If
End Sub
Private Sub Opciones_SelectedIndexChanged(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Opciones.SelectedIndexChanged
Try
Dim letras As String = Opciones.SelectedItem.Text
Asp_net -86-
{0}=hace referencia al
campo.
Asp_net -88-
Cuando se termina de Editar las plantillas para el datalist quedara como se muestra:
El boton eleminar , realizara la accion de borrar físicamente todos los registros que haya
marcado con el Checkbox (Ck1=> nombre que se dio en la plantilla)
Imports System.Data
Imports System.Data.SqlClient
Partial Class lista
Inherits System.Web.UI.Page
Const cadcon = "Server=(Local); DataBase=BDInstituto; Uid=sa
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Me.Load
If Not Page.IsPostBack Then
listado()
End If
End Sub
Sub listado()
Dim da As New SqlDataAdapter("select * from alumno", cadcon)
Dim dt As New DataTable
da.Fill(dt)
DataList1.DataSource = dt
DataList1.DataBind()
End Sub
Asp_net -89-
End Sub
End Class
La presentacion final sera:
APLICACION 2: (WebApli02.aspx)
Para realizar esta aplicación usara 2 Listboxs, un DropDownList1 donde
agregara como ítems
(>,<,>=,<=,=) y una caja de texto donde se podrá filtrar el la carga ingresada y se mostrara
en Listbox2.
Diseño:
Colocar Tres controles Textbox para Cuastomers, Ordenes (la BDD para este proyecto es
el NorthWind)
Asp_net -93-
CAPITULO 8
Introducción:
Acceder y manipular datos directamente en una base de datos desde un formulario Web
Form puede constituir un uso muy ineficaz de los recursos, y puede crear riesgos de
seguridad. Una forma de mejorar la eficacia y seguridad del acceso a las bases de datos
es crear procedimientos almacenados en el servidor de la base de datos, e invocar
estos procedimientos almacenados desde nuestro formulario Web Form. Acceder a una
base de datos a través de un procedimiento almacenado limita el código del formulario
Web Form y el ancho de banda de la red que debemos utilizar cuando realizamos
tareas complicadas. Acceder a una base de datos mediante un procedimiento
almacenado también protege la base de datos al limitar el acceso directo a la base de
datos a procedimientos almacenados locales y de confianza.
Una alternativa al acceso directo a bases de datos desde nuestra aplicación Web es
invocar un procedimiento almacenado que accederá a la base de datos por nosotros.
El uso de procedimientos almacenados tiene varias ventajas respecto al acceso
directo a bases de datos, incluyendo la eficacia, seguridad y la protección de la base de
datos.
Asp_net -95-
retorna un valor es devolver el valor total de los tres últimos movimientos que se
han procesado en una cuenta bancaria.
del objeto Command, y guardamos el resultado en una variable del tipo de datos apropiado.
Asp_net -97-
Go
daClientes.SelectCommand.Connection = conn
daClientes.SelectCommand.CommandText = "Sp_ListadoClientes"
daClientes.SelectCommand.CommandType = CommandType.StoredProcedure
daClientes.SelectCommand.CommandType =CommandType.StoredProcedure
daClientes.Fill(ds, "Categories")
Utilizando parámetros
Parámetro Uso
WebApli02.aspx
Procedimientos Almacenados:
Go
Imports System.Data
Imports System.Data.SqlClient
Public Class WebApli02
Inherits System.Web.UI.Page
Dim cn As New SqlConnection("Server=localhost;uid=sa;database=Ventas")
Sub LimpiarControles()
txtcodigo.Text = ""
txtnombres.Text = "" txtdireccion.Text = "" txtTelefono.Text = "" txtruc.Text = ""
txtfechaing.Text = Now.ToShortDateString 'Fecha del Sistema
End Sub
Sub GenerarCodigo()
Dim cmd As New SqlCommand("Sp_GenCodigo", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@Cod_Cli", SqlDbType.Char, 5).Direction =
ParameterDirection.Output cn.Open()
cmd.ExecuteNonQuery()
cn.Close()
txtcodigo.Text = cmd.Parameters("@Cod_Cli").Value
End Sub
Exit Sub
End If
Dim cmd As New SqlCommand("Sp_UpdClientes", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@Cod_Cli", SqlDbType.Char, 5).Value = txtcodigo.Text
cmd.Parameters.Add("@Nom_cli", SqlDbType.VarChar, 50).Value = txtnombres.Text
cmd.Parameters.Add("@Direccion", SqlDbType.VarChar, 100).Value = txtdireccion.Text
cmd.Parameters.Add("@Telefono", SqlDbType.Char, 8).Value = txtTelefono.Text
cmd.Parameters.Add("@Ruc", SqlDbType.Char, 18).Value = txtruc.Text
cmd.Parameters.Add("@fecha_ing", SqlDbType.Char, 12).Value = txtfechaing.Text
cn.Open()
Dim i As Integer = cmd.ExecuteNonQuery() If i = 1 Then
lblmensaje.Text = "Registro Actualizado"
lblmensaje.ForeColor = Color.Blue
End If
Catch ex As SqlException
lblmensaje.Text = ex.Message
Finally
cn.Close() End Try
End Sub
Private Sub CmdEliminar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles
CmdEliminar.Click
Try
Dim cmd As New SqlCommand("Sp_EliClientes", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@Cod_Cli", SqlDbType.Char, 5).Value = txtcodigo.Text cn.Open()
Dim i As Integer = cmd.ExecuteNonQuery
If i = 1 Then
lblmensaje.Text = "Registro Eliminado"
lblmensaje.ForeColor = Color.Blue
End If
Catch ex As SqlException
lblmensaje.Text = ex.Message
Finally
cn.Close() End Try
End Sub
End Class
Asp_net -105-
Resultado:
Asp_net -106-
1.-Pasando dos fechas que muestre la lista de pedidos entre ambas fechas (Orderid ,
Companyname, Freight, Total Pedido y un Hipervínculo en el Grid para ver su detalle),
el detalle sera colocado en otro GridView2 que tendra las siguientes
columnas(Productid, Productname,Quantity, UnitPrice y Total)
3.- Colocar una lista de opciones ( Clientes que tengan pedido y Clientes que no hayan
hecho pedido) y un combo que visualiza los años ; entoces al seleccionar una opcion y
escoger un año que muestre en el Gridview su resultado
5.- Elobrar un SiteMenu y un master Page para unir todos los formularios anteriores
Capitulo 9
¿Qué es un control de usuario?
<BODY>, o <FORM>
Los controles de usuario son páginas ASP.NET con una extensión de archivo
Un control de usuario está formado por HTML y código, pero como los controles
de usuario son utilizados por formularios Web Forms, no contienen las etiquetas
HTML <HEAD>, <BODY> ni <FORM>. En lugar de ello, estas etiquetas se
incluyen en cada formulario Web Form que utilice el control de usuario.
Cuando un formulario Web Form utiliza un control de usuario, éste último participa
en el ciclo de vida del evento del formulario Web Form. Además, como un control
de usuario es una página ASP.NET, tiene su propia lógica de página. Por ejemplo,
un control de usuario puede gestionar su propio postback en su procedimiento de
evento Page_Load.
Asp_net -109-
Al igual que los formularios Web Forms tienen páginas de código subyacente, los
controles de usuario también tienen una página de código subyacente asociada.
La directiva @ Page se utiliza en los formularios Web Forms para asociar una
página de código subyacente, mientras que la directiva @ Control se utiliza para
hacer referencia a una página de código subyacente desde una página de control
de usuario. La directiva @ Control sólo puede utilizarse con controles de usuario, y
únicamente podemos incluir una directiva @ Control por cada archivo .ascx. Por
ejemplo, para hacer referencia a una página de código subyacente de un control
de usuario denominada WebUserControl1, en un proyecto de aplicación Web
denominado test, utilizamos la siguiente directiva @ Control:
Utilizar la directiva @ Register para incluir un control de usuario en una página ASP.NET
Src="numberbox.ascx" %>
Aplicaciones.-
NavigateURL= "WebApli02.aspx?CategoryID="&
DataBinder.Eval(Container.DataItem,"CategoryID")
End If
End Sub
End Class
WebApli02.aspx
Procedimientos Almacenados
Create Procedure Sp_C9Productos
@CategoryID int
As
if @CategoryID=0
Select ProductID,ProductName From Products Order by ProductID
else
Select ProductID,ProductName From Products where
CategoryID=@CategoryID Order By ProductID
Go
WebApli01.aspx
Procedimientos Almacenados
Create Procedure Sp_C9Ordenes
@CustomerID char(5) As
if @CustomerID=''
Select OrderID,OrderDate From Orders
else
Select OrderID,OrderDate From Orders where CustomerID=@CustomerID
Go
Create Procedure Sp_C9Detalle
@Orden int
As
Select P.ProductID,ProductName,P.UnitPrice,Quantity,
Resultado Final
Asp_net -117-
Ejercicio.-
SEMANA 11
XML
Aunque se almacena una gran cantidad de datos en bases de datos Microsoft® SQL Server y se gestionan mediante
Microsoft ADO.NET, recientemente Extensible Markup Language (XML) se ha convertido en un sólido estándar para el
almacenamiento, gestión y transferencia de datos. XML tiene dos grandes ventajas en el almacenamiento y transferencia de
datos:
• XML es un estándar aceptado por el mercado.
• XML utiliza únicamente texto plano.
¿Qué es XML?
Introducción
Actualmente, las empresas se enfrentan a numerosos problemas en la
organización de los datos porque necesitan cumplir con los siguientes
requerimientos:
• Las estaciones de trabajo y los usuarios necesitan leer datos.
• Tanto el contenido como la estructura de los datos deben estar definidos.
• La estructura de los datos debe estar separada de su presentación.
• La estructura de los datos debe ser abierta y extensible.
• XML satisface todos estos requerimientos, y por tanto es una ayuda para la
organización de datos en las empresas.
Definición:
XML es el formato universal utilizado para describir e intercambiar documentos y
datos estructurados en Internet. XML es un subconjunto del Standard Generalized
Markup Language (SGML), y está definido por el World Wide Web Consortium
(W3C), y garantiza que los datos estructurados son uniformes e independientes de
las aplicaciones Web y de los fabricantes.
XML define la estructura de los datos de un modo abierto y autodescriptivo.
Asp_net -120-
Este modo abierto y autodescriptivo permite que los datos sean fácilmente
transferidos a través de una red y que el receptor los procese de modo coherente.
XML describe cómo se estructuran los datos, no cómo deberían mostrarse o
utilizarse, de forma similar a Hypertext Markup Language (HTML). Los documentos
XML contienen etiquetas que otorgan significado al contenido del documento.
Estas etiquetas permiten a los programadores encontrar los datos que necesitan
en el documento XML.
Instrucción de procesamiento
La mayoría de documentos XML empiezan con una instrucción de procesamiento
para el procesador XML indicando que el documento sigue las recomendaciones
XML del W3C.
Elementos
A continuación de la instrucción de procesamiento puede definirse un conjunto de
elementos anidados. Respecto a los elementos:
• Normalmente, un elemento está formado por un par de etiquetas: una
etiqueta de inicio y una etiqueta de cierre.
• Entre el par de etiquetas de inicio y cierre, un elemento puede contener el
contenido de datos u otros elementos.
• Un elemento puede estar formado únicamente por la etiqueta de cierre.
• El primer elemento que encuentra el procesador XML debe estar formado
por una etiqueta de inicio y una etiqueta de cierre. El primer elemento
contiene el resto de elementos y se denomina elemento raíz.
• El resto de elementos, tras el primero, pero dentro del elemento raíz, se
denominan elementos secundarios.
• Los elementos secundarios pueden anidar otros elementos secundarios. La
mayoría de los datos del contenido XML se almacenan entre la etiqueta de
inicio y la etiqueta de cierre de los elementos secundarios.
Atributos
Cualquier elemento puede contener atributos. El uso de atributos es una
alternativa al uso de elementos para almacenar el contenido. Los atributos definen
datos que pertenecen a un único elemento. Respecto a los atributos:
• Crear un atributo en la etiqueta de inicio de un elemento.
• Declarar el nombre del atributo, seguido de una asignación del valor.
• Utilizar comillas simples o dobles para establecer el valor de un atributo.
Asp_net -121-
Comentarios
Los comentarios son opcionales.
XML de formato correcto
Un documento XML con un formato correcto cumple las especificaciones listadas
en la Recomendación W3C de XML 1.0. Un documento XML se considera con el
formato correcto si:
• Contiene exactamente un elemento raíz (el elemento documento).
• Todos los elementos secundarios están anidados correctamente uno dentro
de otro.
• Existen las etiquetas de inicio y final de un determinado elemento en el
cuerpo del mismo elemento primario.
Ejemplo de XML con el formato correcto:
<Temp>22</Temp>
Ejemplo de XML mal formado:
<Temp>22</temp>
El error en el ejemplo anterior es que la etiqueta de cierre <temp> no coincide con
la etiqueta de inicio <Temp>.
XML válido
El XML es válido si su vocabulario cumple con una serie de requisitos descritos en
un esquema:
• En XML, un esquema es la descripción de un documento XML.
• Un esquema se utiliza para validar documentos XML. Los documentos XML
validados con un esquema se denominan documentos instancia. Si un
documento instancia coincide con la definición del esquema, el documento
instancia se considera válido.
</Libro>
</Libros>
Generara un enlace, le damos doble clic para visualizar documento completo que
se ha generado y guardamos el documento XML con el nombre de
Customers.xml.
Asp_net -123-
Cuando intentamos abrir el archivo, nos mostrara un error debido a que no existe un
elemento raíz.
Lo abrimos en el navegado
Web.
XML y los DataSets comparten una estrecha conexión. Los DataSets son la base para el
almacenamiento en modo desconectado y la manipulación de datos relacionales. Los
DataSets también son un contenedor para una o más tablas de datos. XML es el formato
estándar para los datos presentes en DataSets.
Asp_net -126-
XML desempeña un importante papel en el modo en que el .NET Framework gestiona los
datos. XML es el formato utilizado en el .NET Framework para almacenar y transferir todo
tipo de datos. Los DataSets pueden almacenar y transferir datos en formato XML.
Respecto a las características de los DataSets y XML:
• La estructura de un DataSet puede definirse en un esquema XML Schema
La estructura de un DataSet que incluye tablas, columnas, relaciones y
restricciones puede definirse utilizando un esquema XML. Los esquemas XML son
un formato basado en estándares del W3C que pueden utilizarse para definir la
estructura de datos XML.
• Generar una clase DataSet
Podemos generar una clase DataSet que incorpore información de esquema para
definir sus estructuras de sus datos (como tablas y columnas) como miembros de
clase.
• Métodos DataSet
Podemos leer un documento XML o generar un flujo en un DataSet utilizando el
método ReadXML del DataSet y a continuación escribir un DataSet en XML
utilizando el método WriteXML del DataSet. Como XML es un formato estándar
para intercambiar datos entre distintas aplicaciones Web, podemos cargar un
DataSet con información formateada en XML que haya sido enviada por otras
aplicaciones. De forma similar, un DataSet puede escribir sus datos como un flujo
XML o un documento que será compartido con otras aplicaciones o simplemente
almacenado como un documento XML.
• Crear una vista XML del contenido de un DataSet
Podemos crear una vista XML (un objeto XmlDataDocument) del contenido de
un DataSet, y visualizar y manipular los datos utilizando métodos relacionales
(mediante el DataSet) o métodos XML. Las dos vistas se sincronizan
automáticamente cuando se modifican.
• Transformación de datos
Podemos utilizar el objeto XSLTransform para cargar una hoja de estilo .xsl y
aplicar la transformación. El documento resultante puede ser un archivo XML o
HTML.
Asp_net -127-
ReadXML
Para rellenar un DataSet con datos de XML, utilizamos el método ReadXml del objeto
DataSet. El método ReadXml lee de un archivo, un flujo o un XmlReader.
El método ReadXml lee el contenido del flujo o documento XML y carga el DataSet con
esos datos. ReadXml también crea el esquema relacional del DataSet, dependiendo del
XmlReadMode especificado y de si existe ya o no un esquema relacional.
WriteXML
Para escribir un DataSet a un archivo, flujo o XmlWriter, utilizamos el método
WriteXml. El primer parámetro que pasamos a WriteXml es el destino de la salida XML.
Por ejemplo, podemos pasar una cadena que contenga un nombre de archivo, un objeto
System.IO.TextWriter, etc. Podemos pasar un segundo parámetro opcional de un
XmlWriteMode para especificar cómo debe escribirse la salida XML.
Veamos un ejemplo: Como generar un documeno XML, con los metodos WriteXML y ReadXML.
Código Fuente:
Asp_net -128-
Imports System.Data
Imports System.Data.SqlClient
Partial Class WebXML
Inherits System.Web.UI.Page
Dim cn As New SqlConnection("Server=localhost;Integrated
Security=SSPI;database=NorthWind")
Protected Sub btnWriteXML_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnWriteXML.Click
Try
Dim da As New SqlDataAdapter("Select Top 2 * From Products", cn)
Dim ds As New DataSet
da.Fill(ds, "Productos")
ds.DataSetName = "ListadoProductos"
'Guardamos el XML sin el esquema generado por el DataSet
ds.WriteXml("g:\Productos.xml", XmlWriteMode.IgnoreSchema)
Lblmensaje.Text = "El documento XML Productos.xml se ha generado"
Catch ex As Exception
Response.Write(ex.Message)
End Try
End Sub
Protected Sub btnReadXML_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnReadXML.Click
'Mostrando el documento en la caja de texto txtxml y GridView1
Try
Dim dsXML As New DataSet
dsXML.ReadXml("g:\Productos.xml")
'Mostrando en la caja de texto txtxml
TxtXML.Text = dsXML.GetXml
'Mostrando en el GridView1
GridView1.DataSource = dsXML.Tables(0)
GridView1.DataBind()
Catch ex As Exception
Response.Write(ex.Message)
End Try
End Sub
End Class
Resultado de WebXML.aspx
Asp_net -129-
Nota: Si le das 2 veces doble clic en el botón generar documento o Mostrar documento,
mostrara el mensaje siguiente:
Para solucionar este problemas, nos ubicamos en source de la pagina Web WebXML.aspx,
y agregamos los siguiente en la directiva.
Asp_net -130-
Asp_net -131-
Crystal reports
Teniendo la BDD Bdinsituto que cuenta con las talas :Alumno,Notas,Curso, Pagos y
Especialidad vamos realizar los siguientes reportes:
a) Reporte de Alumno por Especialidad
siguiente y nos mostrara un diagrama para verificar los enlaces de las tablas
Asp_net -133-
aunque esta ficha es opcional nos pregunta si deseamos ordenar los resúmenes por
especialidad
Asp_net -136-
aunque las demas opciones dependen del tipo de reporte a presentar , luego de finalizar:
las secciones que displayan son:
Asp_net -137-
se pueden cambiar los atributos , tamaño, color de los objetos a través de las propiedades ,
si desea una vista rápida del reporte mediante las opciones del menú
Asp_net -138-
Aplicacacion con reportes por ejemplo se desea obtener la lista de alumno por cada curso.
Como la conexión ya esta establecida , procedemos a insertarlas tablas que nos interesan :
Asp_net -139-
codificación.
Imports System.Data
Imports System.Data.SqlClient
Public Class frmcurso
Dim cn As New SqlConnection("data source=(local)\SQLEXPRESS; integrated
security=SSPI; database=bdinstituto")
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim da As New SqlDataAdapter("select idcurso,nomcurso from curso ", cn)
Dim dt As New DataTable
da.Fill(dt)
cbc.DataSource = dt
cbc.DatatextField = "nomcurso"
cbc.DataValueField = "idcurso"
End Sub
Private Sub cbc_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbc.SelectedIndexChanged
Dim fr As New repNOTA
cr1.ReportSource = fr
cr1.SelectionFormula = "{curso.idcurso}='" + cbc.SelectedValue.ToString + "'"
cr1.RefreshReport()
End Sub
End Class
Asp_net -144-
1. La capa de presentación que en este caso esta formada por los Componentes de IU, y los
componentes de proceso de IU. Los componentes de IU pueden ser vistos como la parte
con la cual interactuar el usuario. Las ventanas o páginas web, por decirlo de alguna
manera. Los componentes de proceso de IU podríamos asociarlos a clases de tipo
controladora en UML. Es decir estos encapsulan lógica de navegación y control de eventos
de la interfase.
2. La capa de negocios encapsula lógica de negocios. Los servicios de esta capa son
encapsulados en tres tipos de componentes, dos de los cuales se tocan en este ejercicio. Las
entidades empresariales, que representan objetos que van a ser manejados o consumidos
por toda la aplicación, estos podrían ser un modelo de objetos, xml, datasets con tipo,
estructuras de datos, que permitan representar objetos que han sido identificados durante el
modelamiento. Los otros tipos de objetos son los componentes empresariales que contienen
lógica de negocio, y en algunos casos al usar COM+ son los objetos raíz que inician las
transacciones.
3. La capa de acceso a datos que contiene clases que interactúan con la base de datos. Estas
clases surgen como una necesidad de mantener la cohesión o clases altamente
especializadas que ayuden a reducir la dependencia entre las clases y capas. Aquí podemos
encontrar también una clase con métodos estáticos que permiten uniformizar las
operaciones de acceso a datos a través de un único conjunto de métodos, esta clase es el
SQLHelper que también se usa en este proyecto
Asp_net -146-
Imports System.Data.SqlClient
Imports System.Data
Public Class clsdata
CN.Open()
DA.Dispose()
End Function
End Function
End Class
El diseño
Imports System.Data
Partial Class _Default
Inherits System.Web.UI.Page
Dim cl As New clsdata
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
mostar()
End If
End Sub
Asp_net -150-
Imports System.Data
Partial Class page2
Inherits System.Web.UI.Page
Dim cl As New clsdata
Protected Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles TextBox1.TextChanged
mm()
End Sub
Sub mm()
Me.ListBox1.DataSource = cl.RUNPRO("sp_por", Me.TextBox1.Text)
Me.ListBox1.DataTextField = "ProductName"
Me.ListBox1.DataValueField = "ProductID"
Me.ListBox1.DataBind()
Me.TextBox1.Focus()
End Sub
Sub pais()
Me.cbo1.DataSource = cl.RUNPRO("sp_pais")
Me.cbo1.DataTextField = "ShipCountry"
Me.cbo1.DataValueField = "ShipCountry"
Me.cbo1.DataBind()
End Sub
End Sub
Me.GridView1.DataBind()
Me.lbltotal.Text = vista.Compute("sum(total)", "")
End Sub
End Sub
End Class
Asp_net -154-
APLICACIÓN 3.-
Su Store procedure
create proc sp_1
as
select CustomerID,CompanyName from customers
go
create proc sp_2
@cod char(6)
as
select OrderID from orders
where CustomerID=@cod
go
create proc sp_3
@nom nvarchar(30)
as
select d.OrderID,OrderDate=convert(char(10),OrderDate,103),UnitPrice
,Quantity,total=sum(UnitPrice *Quantity)
from orders o,[order details] d
Asp_net -155-
Codificacion:
Imports System.Data
Imports System.Data.SqlClient
Inherits System.Web.UI.Page
Dim cl As New clsdata
Dim codigos As String = ""
Dim tabla As New DataTable
Public Const Cn = " Data Source=(local);Initial
Catalog=northwind;Integrated Security=True"
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
End Sub
Sub ok()
Me.ListBox1.DataSource = cl.RUNPRO("sp_1")
Me.ListBox1.DataTextField = "CompanyName"
Me.ListBox1.DataValueField = "CustomerID"
Me.ListBox1.DataBind()
End Sub
End If
Next
codigos = codigos.Substring(0, codigos.Length - 1)
Response.Write(codigos)
llena(codigos)
End Sub
End Sub
Asp_net -157-
Asp_net -158-
WEB SERVICE
Podemos definir un servicio Web XML como una clase a la que podemos acceder
utilizando estándares de Internet.
Como es de suponer, el tener que utilizar esos estándares de comunicación de
Internet es porque esa "clase" está alojada en un servidor de Internet, es decir, un
servicio Web es una clase que está alojada en la Web y que podemos acceder a
ella mediante ciertos estándares como XML, que a su vez utiliza otro estándar:
SOAP, (Simple Object Access Protocol), que es el lenguaje que define cómo nos
comunicaremos con el servicio Web.
Antes de pasar a ver ejemplos prácticos sobre cómo crear y utilizar servicios Web
utilizando Visual Studio 2005, veamos un poco la historia de porqué finalmente los
servicios Web son lo que son y cómo nos facilitan toda la comunicación a través
de la red, ya sea local o global.
La expresión "Servicio Web" se oye con fuerza desde hace unos años en el
ámbito del desarrollo de aplicaciones e incluso en ambientes poco técnicos y de
dirección. Lo cierto es que no se trata de un concepto tan novedoso como cabría
esperar y las innovaciones que conlleva no son tanto tecnológicas, como
conceptuales.
SOAP
La tecnología que está detrás de todo ello se llama SOAP (jabón en inglés). Este
acrónimo (Simple Object Access Protocol) describe un concepto tecnológico
basado en la sencillez y la flexibilidad que hace uso de tecnologías y
estándares comunes para conseguir las promesas de la ubicuidad de los
servicios, la transparencia de los datos y la independencia de la plataforma que
según hemos visto, se hacen necesarios en las aplicaciones actuales.
Otro de los estándares que se definen en SOAP es WSDL (Web Service Definition
Language). Se trata de un formato estándar para describir las interfaces de los
servicios web. WSDL describe qué métodos están disponibles a través de un
Asp_net -160-
servicio Web y cuáles son los parámetros y valores devueltos por éstos. Antes de
usar un componente que actúa como servicio web se debe leer su archivo WSDL
para averiguar cómo utilizarlo.
ASP.NET 2.0 nos facilita grandemente la creación de servicios Web XML, y si nos
apoyamos en una herramienta como lo es Visual Studio 2005, incluso en la
versión Express, nos daremos cuenta de que no necesitamos ser expertos en los
protocolos utilizados por los servicios Web para poder crearlos y utilizarlos.
VIII BIBLIOGRAFÍA:
CHARTE Francisco Programación con Visual Studio 2005
Edit. ANAYA España 2006
Asp_net -161-
Direcciones Web
http://www.godot.net
http://www.manualesgratis.com
http://www.microsoft.es
http://www.abcdatos.com
http://www.cibercursos.com
http://www.guille.costasol.net
http://www.programacion.net/cursos