Académique Documents
Professionnel Documents
Culture Documents
INDICE
2.- Aplicaciones
2.1 Web- form calculo matemticos
2.2 Empleando el Datgrid1
2.3 Consultas con Hipervnculos
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 diseo
3.2 Creacin de unos reportes simple con campos enlazados
3.3 Ejecucin de un reporte desde un formulario
3.4 Filtros en un reporte
4.- Web Service
4.1 Definicin
4.2 Web Method
4.3 Publicacin de los Web Service
4.4 Acceso a los servicios
4.5 Aplicacin con web Services
Anexo:
Algunos trucos en ASP .NET
Cmo crear y leer controles dinmicamente en ASP .NET
I.S.T.Idat 1 ASP.NET
Aplicaciones Web
PLATAFORMA MICROSOF.NET
Microsoft .NET se compone de un conjunto de recursos que hacen posible su implementacin,
estos componentes se muestran en la siguiente ilustracin:
2. Servidores Empresariales.NET
Microsoft Exchange Server: Ofrece servicios de mensajera (correo electrnico) y
colaboracin entre aplicaciones (workflow).
Microsoft Host Integration Server: Realiza la comunicacin entre sistemas Cliente/Servidor,
aplicaciones Intranet o Internet con los sistemas legados por el negocio, tales como
Mainframe o AS/400.
Microsoft Internet Security and Aceleration Server: Antes llamado Proxy Server, ISA Server se
usa para brindar seguridad en las comunicaciones por Internet.
Microsoft SQL Server: Es el servidor de datos de Microsoft que permite crear soluciones de
Data Warehouse y se integra con Microsoft Office.
I.S.T.Idat 2 ASP.NET
Aplicaciones Web
Fl Marco .NET (en ingles .NET Framework) es la piedra angular de la plataforma .NET y
constituye u.i enlomo para la creacin, distribucin y ejecucin de servicios Web, as como de
otros tipos de aplicaciones.
Se compone de cuatro partes principales que son:
1. Tiempo de F-jccucin en Lenguaje Comn (CLR)
Es el RunTime comn para todos los lenguajes que soportan el Marco .NET y realiza la mayor
parte de funciones para que corran las aplicaciones.NET, es el que se encarga de compilar \
ejecutar una aplicacin, as como administrar su trabajo con el sistema.
2. Librera de Clases .NET
Son un conjunto de componentes que sirven para acceder a travs de objetos a la mayor parte de
servicios del sistema, labor que era realizada antes por las APIs de Windows, la
MEC o ATL de Visual C++, etc.
3. ADO.NET. vs XML
ADO .NET se usa para acceder a cualquier origen de datos sea relacional (bases de datos),
formatos planos (textos), etc. Por su parte, XML sirve como el formato para intercambiar los datos
en diferentes plataformas.
4. ASP.NET
Este componente incluye el soporte para la creacin, distribucin y mantenimiento de aplicaciones
Web as como de Servicios Web XML que son la razn de ser de la plataforma .NET
TIEMPO DE EJECUCIN EN LENGUAJE COMN (CLR)
Introduccin al RunTime y al CLR
Un RunTime es la aplicacin responsable de manejar la asignacin de memoria, inicio y
eliminacin de procesos mientras un programa se est ejecutando, as como de brindar seguridad
al cdigo, y tambin gestionar su relacin con otros programas o componentes.
l.os RunTime lian sido usados por los lenguajes de programacin como Visual Basic cuyo nombre
es el VBRLN, Visual C++ cuyo nombre es MSVCRT. Pero tambin Visual FoxPro, JScnpt,
SmaIlTalk. Per!, Python. Java, etc. tienen su propio RunTime.
Cada aplicacin Visual Basic 6 que se quera distribuir tenia que distribuirse con el RunTime, lo
mismo en Visual C-H-, la diferencia que el primero ocupaba demasiado espacio y no era tan
poderoso como el segundo.
EL RunTime de .NET se llama el CLR (Common Language RunTime o Tiempo de Ejecucin en
Lenguaje Comn) y es la solucin a los diferentes tipos de RunTime que manejan los diferentes
lenguajes de programacin antes mencionados, que ahora sern
Gestionados en ejecucin por un nico RunTime comn.
La ventaja de tener un solo RunTime son mltiples ya que se podr compartir las mismas
estructuras, tipos de datos, clases, etc. en todos los lenguajes que cumplan las especificaciones
del Marco .NET.
Servidos del CLR
I.S.T.Idat 3 ASP.NET
Aplicaciones Web
El CLR es el motor de ejecucin de las aplicaciones del Marco .NET. Proporciona una serie de
servicios, entre los que se incluyen los siguientes:
Administracin del cdigo (carga y ejecucin).
Aislamiento de la memoria de la aplicacin.
Comprobacin de la seguridad de los tipos.
Conversin del (Lenguaje Intermedio) a cdigo nativo
Acceso a los metadatos (informacin de tipo mejorada)
Administracin de memoria para los objetos administrados
Aplicacin de seguridad de acceso al cdigo
Control de excepciones, incluyendo excepciones en varios lenguajes
Interoperabilidad entre el cdigo administrado, los objetos COM y las DLL anteriores (datos y
cdigo no administrados)
Automatizacin del diseo de objetos
Suporte para servicios de desarrolladores (creacin de perfiles, depuracin, etc.)
Sistema de auto registro o auto descripcin de componentes (no es necesario registrar el
componente en el sistema)
No es necesario los elementos de COM como GUIDs, interfases iLnknow, etc.
Nota: Con esto decimos adis al problema de la compatibilidad de versiones de las dll.
Esta informacin se utiliza en tiempo de ejecucin para resolver referencias, aplicar las directivas
del enlace de versiones y validar la integridad de los ensambladores cargados. El tiempo de
ejecucin puede determinar y ubicar el ensamblador para cualquier objeto de ejecucin, ya que
todos los tipos se cargan en el contexto de un ensamblador.
Asimismo, los ensambladores constituyen la unidad en la que se aplican los permisos de
seguridad de acceso al cdigo. La prueba de identidad de cada ensamblador se considera
individualmente cuando .Se determinan los permisos que contiene para otorgar al cdigo.
Espacio de Nombre
Un espacio de nombre (NameSpace) es un esquema de denominacin lgica para los tipos en los
que un nombre de tipo sencillo, como OLEDB. Va precedido de un nombre jerrquico separado
por puntos. Dicho esquema se encuentra totalmente bajo el control del desarrollador.
Las herramientas de diseo pueden utilizar los espacios de nombre para facilitar a los
desarrolladores el proceso de exploracin y referencia a los tipos en su cdigo. El concepto de
espacio de nombre no est relacionado con el del ensamblador. Un nico ensamblador puede
contener tipos cuyos nombres jerrquicos dispongan de distintas races de espacio de nombre y
una raz lgica de este tipo puede abarcar varios ensambladores.
I.S.T.Idat 4 ASP.NET
Aplicaciones Web
En Visual Basic, por ejemplo para hacer uso de un Assemblie hay que usar los espacios de
nombre con la declaracin Imports, por ejemplo si quisiramos acceder a datos con SQL Server y
manejar archivos de texto en una aplicacin Windows realizaramos la siguiente declaracin:
Imports Systein.Windows.Forms
Imports System.Data.SQL
Imports System.10
I.S.T.Idat 5 ASP.NET
Aplicaciones Web
Para crear Servicios Web XML, Visual Studio .NET incluye una plantilla con Servicios Web de
ejemplo, los cuales puedes modificar y personalizar a tu medida, eligiendo el lenguaje que
deseas, que puede ser Visual Basic .NET, Visual C# .NET o Visual C++.NET
El 20 de Enero del 2002 una nueva versin del tradicional Active Server Pages se ha lanzado al
pblico, no es ASP 4.0 sino ASP.net. ASP.net forma parte del .NET Framework de Microsoft, junto
con VB.net, C++.net, C# (algo as como una versin mejorada de C++) hasta incluso JScript.net.
Pero, cal es la diferencia de ASP.net con el ASP comn que conocemos?
Mucha, realmente es mucha. Mientras ASP se escriba en VBScript, ASP.net puede ser escrito en
cualquier lenguaje soportado por el .net Framework, es decir: VB.net; C# y JScript.net. Si, como
has ledo, ya no puedes utilizar VBScript sino que debes utilizar VB.net que es lo que ms se
aproxima. Otro cambio radical es que ASP.net es un lenguaje totalmente orientado a objetos.
Que mejoras trae ASP.net? Es realmente mejor que ASP?
I.S.T.Idat 6 ASP.NET
Aplicaciones Web
Sin duda, es mucho mejor que el ASP tradicional, ASP.net trae diversas mejoras entre las cuales
se destacan:
Rendimiento: la aplicacin de compila en una sola vez al lenguaje nativo, y luego, en
cada peticin tiene una compilacin Just In Time, es decir se compila desde el cdigo nativo, lo
que permite mucho mejor rendimiento. Tambin permite el almacenamiento del cach en el
servidor
Rapidez en programacin: mediante diversos controles, podemos con unas pocas lneas y en
menos de 5 minutos mostrar toda una base de datos y hacer rutinas complejas.
Servicios Web: trae herramientas para compartir datos e informacin entre distintos sitios.
Seguridad: tiene diversas herramientas que garantizan la seguridad de nuestras aplicaciones.
Estructura de una pagina web.-
ADO.NET es una tecnologa de acceso a datos que se basa en los objetos ADO (Objetos de
Datos ActiveX) anteriores. Es una manera nueva de acceder a los datos construida sobre ADO.
ADO.NET puede coexistir con ADO. Aunque usted no conozca ADO, en este captulo va a poder
usar ADO.NET y ver con ejemplos, como conectarse a una Base de Datos.
ADO.NET utiliza un modelo de acceso pensado para entornos desconectados. Esto quiere decir
que la aplicacin se conecta al origen de datos, hace lo que tiene que hacer, por ejemplo
seleccionar registros, los carga en memoria y se desconecta del origen de datos.
ADO.NET es un conjunto de clases que usted utiliza para acceder y manipular orgenes de
datos como por ejemplo, una base de datos en SQL Server o una planilla Excel.
El modelo de objetos ADO.NET tiene dos componentes centrales: una capa conectada, con
clases compuestas por el proveedor de datos .NET y una capa desconectada, cuya raz es
DataSet.
El nuevo modelo de datos de microsoft es ado.net este modelo descansa en una serie de
objetos especializados que facilitan el procesamiento de una base de datos.
I.S.T.Idat 7 ASP.NET
Aplicaciones Web
fuente microsoft.net
El problema es comunicar un programa o aplicacin con una base de datos y ms que comunicar
se pretende que el programa o aplicacin realize una serie de procesos u operaciones con la base
de datos o mejor aun con el conjunto de tablas que contiene una base de datos.
System.Data.Common: ofrece clases comunes entre distintos orgenes de datos. Para lo que
vamos a tratar en este artculo, podemos decir que estas clases sirven de clase base para las que
estn contenidas en los dos espacios de nombres que vienen a continuacin.
System.Data.OleDb: contiene una serie de clases que nos permiten conectarnos con cualquier
origen de datos e interactuar con l al tiempo que sirven de "intermediarios" entre el origen de
datos y las clases del espacio de nombres System.Data que, segn decamos, no tienen conexin
alguna con dicho origen de datos. Las clases de System.Data.OleDb usan OLEDB como
tecnologa subyacente.
I.S.T.Idat 8 ASP.NET
Aplicaciones Web
System.Data.SqlClient: contiene clases que permiten interactuar con orgenes de datos SQL
Server de un modo mucho ms directo que OLEDB, mejorando el rendimiento para este tipo de
origen de datos. Por lo tanto, solamente se pueden utilizar para acceder a bases de datos de SQL
Server. El uso de sus clases es prcticamente equivalente al de las que se encuentran en
System.Data.OleDb.
Las he llamado bsicas porque, realmente, sern el pilar fundamental para casi cualquier
aplicacin que tenga que acceder a un origen de datos con unos mnimos requisitos de eficiencia
y escalabilidad. Las clases ms importantes del espacio de nombres System.Data son:
DataSet: Es la piedra angular del modelo de objetos: Esta clase permite tener en memoria una
autntica "base de datos virtual", con sus tablas, relaciones, etc. Un hecho importante es que esta
base de datos virtual est total y absolutamente desconectada de cualquier origen de datos fsico
y, en consecuencia, siempre se aloja toda entera en la memoria. En otras palabras, puede
contener uno o varios conjuntos de filas distintos, que pueden estar o no estar relacionados entre
s, pero siempre en la memoria y siempre desconectados del origen de datos. La clase DataSet
est dentro del espacio de nombres System.Data.
I.S.T.Idat 9 ASP.NET
Aplicaciones Web
cada fila, a su vez, un objeto de la clase DataRow, y sus columnas en la propiedad Columns (de la
clase DataColumnCollection), siendo cada columna un objeto de la clase DataColumn.
DataRelation: representa una relacin entre dos objetos DataTable. Tambin pertenece al
espacio de nombres System.Data. Todas las relaciones que haya en un DataSet se encuentran en
la coleccin Relations, de la clase DataRelationCollection.
SqlParameter: su equivalente en OleDb es OleDbParameter. Del mismo modo que los dos
anteriores, se parecen a los objetos Paremeter del antiguo ADO, y representan un parmetro
dentro de la coleccin Parameters del objeto SqlCommand u OleDbCommand, segn el caso. La
coleccin Parameters de un objeto SqlCommand es de la clase SqlParameterCollection
(OleDbParameterCollection en OleDb).
I.S.T.Idat 10 ASP.NET
Aplicaciones Web
datos fsico. Si la conexin estaba cerrada antes de ejecutar los mtodos Fill o Update, el
DataAdapter se ocupa de abrir dicha conexin para efectuar la operacin requerida, cerrando de
nuevo la conexin una vez que ha terminado. Si la conexin estaba abierta, el DataAdapter deja
que dicha conexin siga abierta despus de haber terminado.
SqlCommandBuilder: su equivalente en OleDb es OleDbCommandBuilder. Tampoco haba
nada en el antiguo ADO que hiciera lo que hace esta clase. Sencillamente se ocupa de generar
los objetos command necesarios para un determinado DataAdapter, gracias a los mtodos
GetInsertCommand, GetUpdateCommand y GetDeleteCommand.
Resumiendo
I.S.T.Idat 11 ASP.NET
Aplicaciones Web
Control datagrid1
I.S.T.Idat 12 ASP.NET
Aplicaciones Web
Uno de los conceptos principales que debe comprender es la divisin del trabajo en una pgina de
formularios Web Forms. El explorador presenta el formulario al usuario y ste interacta con l,
causando que el formulario se enve de vuelta al servidor. Sin embargo, como todo procesamiento
que interacta con componentes de servidor debe ocurrir en el servidor, esto significa que, para
cada accin que necesita procesamiento, el formulario debe enviarse al servidor, procesarse y ser
devuelto al explorador
Servidor .NET (Active Server Pages .NET). Es una tecnologa para generar pginas
dinmicas en el servidor y enviarlas al cliente (navegador Web) que las ha solicitado,
ejecutando previamente el cdigo que contienen (cdigo Visual Basic, C#, etc.) y
convirtiendo el resultado a cdigo HTML, que es el nico que puede interpretar
adecuadamente el cliente.
I.S.T.Idat 13 ASP.NET
Aplicaciones Web
IIS (Internet Information Server): est disponible para Windows NT, Windows
2000, Windows XP Profesional y Windows .NET 2003. Dado que ASP .NET es
una tecnologa de servidor, requiere un servidor Web en ejecucin, de ah la
necesidad de IIS.
Tericamente no se puede utilizar en Windows XP Home ya que no aparece como
opcin en Agregar y quitar elementos de Windows pero, mediante unas
maniobras sencillas, s es posible instalarlo en sistemas con Windows XP Home
de manera que los poseedores de este sistema operativo tambin pueden
aprender ASP .NET .
SDK (Kit de Desarrollo de Software) de .NET Framework: est disponible para
Windows NT con SP6a, Windows 2000, Windows XP y Windows .NET 2003. Sin
este componente, el servidor Web por s mismo no es capaz de interpretar
adecuadamente las pginas ASP .NET. La instalacin de Visual Studio .NET
conlleva automticamente la del SDK de .NET Framework.
I.S.T.Idat 14 ASP.NET
Aplicaciones Web
Las pginas ASP .NET tienen la extensin aspx. Para visualizar adecuadamente una
pgina aspx no basta con ejecutarla con doble clic o abrirla desde el explorador Web,
de ambas maneras el documento se visualiza defectuosamente. Para que la pgina
aspx funcione, debe ser filtrada por el servidor Web, por lo que es necesario dirigir el
navegador Web a http://localhost (direccin de la mquina local) y ah a la direccin
correcta del archivo aspx.
<script runat=server><script>
Aqu es donde debe ir todo o la mayor parte del cdigo Visual Basic ya que este
cdigo es el nico compilado a MSIL
Despus comienza el cdigo HTML. Este cdigo, junto con el resultado del cdigo
ASP .NET, es enviado al cliente. En esta seccin puede haber bloques
proveedores de cdigo con instrucciones adicionales en ASP .NET, estos
bloques van entre las etiquetas <% y %> y no son compilados por lo que son
menos eficientes que los bloques de declaracin de cdigo
Es fundamental tener una etiqueta Form con el atributo runat=server, ello
convierte al formulario en un Formulario Web que es supervisado por ASP .NET
A lo largo del la pgina pueden aparecer elementos conocidos de HTML pero que
se declaran de manera especial:
<asp:textbox runat=server></asp:textbox>
I.S.T.Idat 15 ASP.NET
Aplicaciones Web
de esa manera, el control de servidor lbEtiqueta (Label) de la pgina aspx es una instancia de la
variable lbEtiqueta de la clase datagridVb declarada en el archivo vb y, desde el cdigo de la
clase, se puede acceder a las propiedades del control a pesar de encontrarse en 2 archivos
diferentes.
Por ejemplo si se utiliza un archivo externo como cdigo de apoyo:
- la pgina Asp .NET datagrid.aspx contiene solamente cdigo HTML con controles de servidor
- el archivo de cdigo de apoyo datagrid.aspx.vb contiene el cdigo Visual Basic .NET con
declaraciones de variables y procedimientos
Ambos archivos han de estar juntos en la misma carpeta para que funcione el cdigo actual pero,
como se ver ms adelante, pueden estar situados en carpetas diferentes. El archivo
datagrid.aspx necesita de estos atributos en la directiva @ Page al comienzo del cdigo:
- Si se trabaja fuera del entorno RAD de Visual Studio .NET (ej: editor de texto y servidor Web), se
usa el atributo Inherits, que define la clase que hereda la pgina aspx (puede ser cualquier
clase derivada de la clase Page), y el atributo Src, que especifica el archivo de cdigo fuente en
el que se define la clase heredada (es compilado dinmicamente cuando se solicita la pgina
aspx); este archivo puede estar situado en cualquier carpeta del servidor, slo hay que
especificarlo correctamente en la ruta.
As es como debe ser configurado al colocar las pginas en el servidor Web:
(aqu la pgina aspx hereda la clase datagridVb, que est descrita en el archivo
datagrid.aspx.vb, que es compilado en tiempo de ejecucin)
Si se trabaja en un entorno RAD como Visual Studio .NET, se usa el atributo Codebehind, que
especifica el nombre del archivo compilado que contiene la clase asociada con la pgina (el
I.S.T.Idat 16 ASP.NET
Aplicaciones Web
diseador de formularios Web Forms de Visual Studio .NET usa este atributo para averiguar
dnde se encuentra la clase derivada de Page, de forma que pueda crear una instancia de la
misma para que se pueda trabajar con ella en tiempo de diseo) (Codebehind no se usa en
tiempo de ejecucin), y el atributo Inherits, que define la clase que hereda la pgina aspx.
As es como debe ser configurado mientras se trabaja con la pgina dentro de Visual Studio .NET:
I.S.T.Idat 17 ASP.NET
Aplicaciones Web
Con esto le estamos diciendo al VB que primero convierta la cadena en un nmero mediante la
funcin Val, (que devuelve un nmero de tipo Double), despus le decimos que ese nmero
Double lo convierta en un valor Integer.
Tambin podramos hacerlo de esta otra forma:
i = CInt(Val("10 * 25"))
I.S.T.Idat 18 ASP.NET
Aplicaciones Web
Resultado
Codificacin.-
<%@ Page language="vb"%>
<HTML>
<body>
<center>
<form name="frmintro" method="post" action="demo1.aspx">
<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>
I.S.T.Idat 19 ASP.NET
Aplicaciones Web
</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")
values.Add ("Linux")
DropDown1.DataSource = values
DropDown1.DataBind
End If
End Sub
Nota.-
En vez de un aria Lisa tambin se puede emplear un arreglo dinmico
Dim values() as string={Visual Net, Power Builder, Macromedia Mx,sql server}
I.S.T.Idat 20 ASP.NET
Aplicaciones Web
Dropdown1.datasource=values
Comienza con una directiva o instruccin PAGE que en principio es el compilador de paginas de
ASP.NET y su atributo INHERITS le indica a dicho compilador que use ejemplo.aspx y el codigo
fuente o SouRCe que esta en el archivo llamado ejemplo.aspx.VB
I.S.T.Idat 21 ASP.NET
Aplicaciones Web
DIRECTIVE DESCRIPCION
Aplicacin.- Ingresando un radio muestra su area en una etiqueta e ingresando una cadena o
prrafo lo ordena de forma ascendente
Ejemplos:
Cdigos
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
I.S.T.Idat 22 ASP.NET
Aplicaciones Web
+ codigo Generado
ShowResult(dblCircArea)
End Sub
End Class
I.S.T.Idat 23 ASP.NET
Aplicaciones Web
Funcion Devuelve
Abs Valor absoluto de un numero real
Int Parte entera de un real
Rnd Un numero al azr entre 0 y 1
Exp Exponecial de un numero real es decir e = 2.71828
El objeto Math.funciones
Math. Reunid (nov. - Redondea, con ciertos nmeros de decimal
Math. Round (3.45, 1) 'Returns 3.4.
Math.Round(3.46, 1) 'Returns 3.5.
Math.PI .- El valor de este campo es 3,14159265358979323846
Math.acos.- Devuelve el ngulo cuyo coseno es el nmero especificado
Math.ceiling.- Devuelve el nmero entero ms pequeo mayor o igual que el nmero especificado.
Math.ceiling(3.1) 4
Math.Floor.- Devuelve el nmero entero ms grande menor o igual que el nmero especificado
Math.Floor(3.1) 3
Math.sqrt(n).- Devuelve la raz cuadrada de un nmero especificado.
Math.pow(n).- Devuelve un nmero especificado elevado a la potencia especificada
Funciones Fechas.
Las fechas son cadenas especiales. Visual Basic sabe obtener y tratar la informacin relativa a la
fecha y la hora. Dispone para ello de una declaracin de variable: Date. Una variable declarada
como date puede contener una fecha, una fecha y una hora o una hora solamente.
I.S.T.Idat 24 ASP.NET
Aplicaciones Web
En este ejemplo se toma una fecha y mediante la funcin DateAdd, se muestra la fecha
correspondiente un nmero especificado de meses en el futuro.
I.S.T.Idat 25 ASP.NET
Aplicaciones Web
RequieredFieldValidator.-(valida2)
Errormensage Campo oblugatorio
ControlTovalidate:Txtmon
RangeValidator (Valida1)
ErrorMessage.- Mes entre 6- 18
ControlTovalidate.- Txtmes
I.S.T.Idat 26 ASP.NET
Aplicaciones Web
I.S.T.Idat 27 ASP.NET
Aplicaciones Web
Dar el encabezado
para cada columna en
columna enlzada
Y en columna
Hipervnculo llamar al
formulario
Frmdetalle.aspx
pasando el numero de
orden={0}
I.S.T.Idat 28 ASP.NET
Aplicaciones Web
Formulario FRMDETALLE.ASPX
Imports System.Data.SqlClient
Public Class weborden
Inherits System.Web.UI.Page
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Protected WithEvents BtnBusca As System.Web.UI.WebControls.Button
Protected WithEvents Lbmensaje As System.Web.UI.WebControls.Label
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents Label3 As System.Web.UI.WebControls.Label
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
I.S.T.Idat 29 ASP.NET
Aplicaciones Web
Lbmensaje.Text = NRO
Else
Lbmensaje.Text = "NO EXISTE CLIENTE"
End If
End Sub
End Class
Imports System.Data.SqlClient
Public Class FrmDetalle
Inherits System.Web.UI.Page
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents Lbtot As System.Web.UI.WebControls.Label
Protected WithEvents HyperLink1 As System.Web.UI.WebControls.HyperLink
Protected WithEvents LBNRO As System.Web.UI.WebControls.Label
End Sub
I.S.T.Idat 30 ASP.NET
Aplicaciones Web
End Class
Aplicacin Consulta en cascada .- en un DropDownList1 colocar los nombres de los clientes
(CompanyName) pero cuando se elige un cliente que acceda a su cdigo CustomerId , mostrando
en DropDownList2 todos sus pedidos y al elegir un pedido que muestre el detalle de ese pedido
Controles empleados
DropDwonList2
(para Clientes)
DropDownList1
Para pedidos
Ambos colocar en la
propiedad:
AutoPostBack=True
Para que pueda
seleccionarse
Un Datagrid1 y una
etiquita LBtot
Imports System.Data.SqlClient
Public Class webpedidos
Inherits System.Web.UI.Page
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
Protected WithEvents DropDownList1 As System.Web.UI.WebControls.DropDownList
Protected WithEvents DropDownList2 As System.Web.UI.WebControls.DropDownList
Protected WithEvents Label3 As System.Web.UI.WebControls.Label
Protected WithEvents Label4 As System.Web.UI.WebControls.Label
Protected WithEvents Lbtot As System.Web.UI.WebControls.Label
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents Label5 As System.Web.UI.WebControls.Label
I.S.T.Idat 31 ASP.NET
Aplicaciones Web
Sub verpedidos()
Dim ds As New DataSet()
Dim da As New SqlDataAdapter("select * from orders where customerid='" +
DropDownList2.SelectedItem.Value + "'", cn)
da.Fill(ds, "orden")
DropDownList1.DataSource = ds
DropDownList1.DataTextField = "orderid"
'DropDownList1.DataValueField = "orderid"
DropDownList1.DataBind()
da.Dispose()
cn.Dispose()
End Sub
Sub VerDetalle()
Dim da As SqlDataAdapter
Dim sql As String
Dim ds As New DataSet()
sql = "SELECT ProductName,Quantity,p.UnitPrice,Total=Quantity*P.UnitPrice "
sql += " from [order Details] D Inner Join Products P on P.Productid=D.ProductId "
sql += " where OrderId=" + Me.DropDownList1.SelectedItem.Text
da = New SqlDataAdapter(sql, cn)
da.Fill(ds)
DataGrid1.DataSource = ds
DataGrid1.DataBind()
Dim sm As Single
Dim f As Integer
Dim dt As DataTable
sm = 0
dt = ds.Tables(0)
For f = 0 To dt.DefaultView.Count - 1
sm = sm + dt.Rows(f).Item(3)
Next
Lbtot.Text = sm.ToString
End Sub
I.S.T.Idat 32 ASP.NET
Aplicaciones Web
Aplicacion.-
Empleando el espacio de trabajo system.data.oledb el cual se puede aplicar a cualquier BBD
como oracle, sysbase, Access , etc. Porque la conexin es a traves de un proveedor, la aplicacin
consiste en seleccionador un cliente desde un DropDwonList , ademas buscar el detalle pedido
del mayor monto.
Aspnet
I.S.T.Idat 33 ASP.NET
Aplicaciones Web
Imports System.Data.SqlClient
Imports System.Data.OleDb
Imports System.Text
Cmd.Connection.Open()
Dim OReader As OleDb.OleDbDataReader
OReader = Cmd.ExecuteReader
While OReader.Read
CboCustomer.Items.Add(OReader.GetString(1))
CboCustomer.Items(CboCustomer.Items.Count - 1).Value =
OReader.GetString(0)
End While
OReader.Close()
End Sub
I.S.T.Idat 34 ASP.NET
Aplicaciones Web
XCustomerId = Me.CboCustomer.SelectedItem.Value
SSql.Append(XCustomerId)
SSql.Append("' Group By O.CustomerId, O.OrderId, O.ShipCountry,
O.OrderDate")
DgdOrdenes.DataSource = OReader
DgdOrdenes.DataBind()
DgdDetalle.DataSource = ""
DgdDetalle.DataBind()
End Sub
WCustomerId = Me.CboCustomer.SelectedItem.Value
WSql = "Select Top 1 O.OrderId, Sum(D.UnitPrice * D.Quantity) As
Monto From Orders O, [Order Details] D Where O.OrderId = D.OrderId And
CustomerId = '" + WCustomerId + "' Group By O.CustomerId, O.OrderId
Order By Monto Desc"
DgdDetalle.DataSource = YReader
DgdDetalle.DataBind()
End Sub
I.S.T.Idat 35 ASP.NET
Aplicaciones Web
Response.Redirect("Menu.aspx")
End Sub
End Class
Codificacin.-
Autor : A. Moreno
Imports System.Data.SqlClient
Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox
Protected WithEvents TextBox3 As System.Web.UI.WebControls.TextBox
Dim da As SqlDataAdapter
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
I.S.T.Idat 36 ASP.NET
Aplicaciones Web
End Sub
'Segunda forma
cmd.Parameters.Add("@codc", TextBox1.Text)
cmd.Parameters.Add("@nomc", TextBox2.Text)
cmd.Parameters.Add("@nhr", CInt(TextBox3.Text))
cmd.ExecuteNonQuery()
cmd.Dispose()
cn.Close()
llena()
I.S.T.Idat 37 ASP.NET
Aplicaciones Web
Button1.Enabled = False
End Sub
Para anular
create Procedure SP_DELALU
@COD CHAR(5)
as
delete from alumno where idalumno=@cod
return
I.S.T.Idat 38 ASP.NET
Aplicaciones Web
Autor: A. Moreno
Imports System.Data.OleDb
Imports System.Text
Public Class wegadiciona
Inherits System.Web.UI.Page
Protected WithEvents BtnAnula As System.Web.UI.WebControls.Button
Dim CN As New
OleDbConnection("PROVIDER=SQLOLEDB;UID=SA;DATABASE=UNIVERSIDAD;SERV
ER=(LOCAL)")
+ Cdigo generado por el Diseador de Web Forms "
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
'Introducir aqu el cdigo de usuario para inicializar la pgina
Dim CMD As New OleDbCommand()
If Page.IsPostBack = False Then
CN.Open()
With CMD
.Connection = CN
.CommandType = CommandType.Text
.CommandText = "SELECT * FROM ESPECIALIDAD"
End With
Dim DA As New OleDbDataAdapter(CMD)
Dim DS As New DataSet()
I.S.T.Idat 39 ASP.NET
Aplicaciones Web
DA.Fill(DS)
cbe.DataSource = DS
cbe.DataTextField = "NOMESP"
cbe.DataValueField = "IDESP"
cbe.DataBind()
DA.Dispose()
CMD.Dispose()
CN.Close()
DGD()
End If
End Sub
Public Function DGD()
Dim cmd As New OleDb.OleDbCommand()
CN.Open()
cmd.Connection = CN
cmd.CommandType = CommandType.Text
cmd.CommandText = "select * from alumno"
Dim da As New OleDbDataAdapter(cmd)
Dim ds As New DataSet()
da.Fill(ds)
Me.DataGrid1.DataSource = ds.Tables(0).DefaultView
Me.DataGrid1.DataBind()
cmd.Dispose()
CN.Close()
End Function
End Sub
Private Sub btngraba_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btngraba.Click
Dim cmd As New OleDbCommand()
Dim prm As OleDbParameter
CN.Open()
With cmd
.Connection = CN
.CommandType = CommandType.StoredProcedure
I.S.T.Idat 40 ASP.NET
Aplicaciones Web
.CommandText = "sp_adialu"
End With
prm = cmd.Parameters.Add("@cod", OleDbType.Char, 5)
prm.Direction = ParameterDirection.Input
prm.Value = TextBox1.Text
prm = cmd.Parameters.Add("@ape", OleDbType.VarChar, 30)
prm.Direction = ParameterDirection.Input
prm.Value = txtape.Text
prm = cmd.Parameters.Add("@nom", OleDbType.VarChar, 30)
prm.Direction = ParameterDirection.Input
prm.Value = txtnom.Text
prm = cmd.Parameters.Add("@idesp", OleDbType.Char, 3)
prm.Direction = ParameterDirection.Input
prm.Value = cbe.SelectedItem.Value
prm = cmd.Parameters.Add("@pro", OleDbType.Char, 1)
prm.Direction = ParameterDirection.Input
prm.Value = rbp.SelectedItem.Value
cmd.ExecuteNonQuery()
cmd.Dispose()
CN.Close()
DGD()
End Sub
Private Sub BtnAnula_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnAnula.Click
Dim sql As String
Dim cmd As New OleDbCommand()
Dim prm As OleDbParameter
CN.Open()
With cmd
.Connection = CN
.CommandType = CommandType.StoredProcedure
.CommandText = "sp_delalu"
End With
prm = cmd.Parameters.Add("@cod", OleDbType.Char, 5)
prm.Direction = ParameterDirection.Input
prm.Value = TextBox1.Text
CN.Open()
cmd.ExecuteNonQuery()
cmd.Dispose()
CN.Close()
DGD() 'Llama al listado
End Sub
End Class
I.S.T.Idat 41 ASP.NET
Aplicaciones Web
Imports System.Data
Imports System.Data.SqlClient
Public Class PAGINACION
Inherits System.Web.UI.Page
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents DGDPRODUCTO As System.Web.UI.WebControls.DataGrid
+ Cdigo generado por el Diseador de Web Forms "
Public Sub CARGAR_DATO()
Dim CN As New
SqlConnection("UID=SA;PWD=;DATABASE=NORTHWIND;SERVER=.")
Dim DA As New SqlDataAdapter("SELECT Codigo=ProductId,Descripcion
=Productname, Precio=UnitPrice ,Stock=UnitsinStock FROM PRODUCTS", CN)
Dim DS As New DataSet()
DA.Fill(DS)
DGDPRODUCTO.DataSource = DS.Tables(0).DefaultView
DGDPRODUCTO.DataBind()
End Sub
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
If(not Page.ispostBack) then
CARGAR_DATO()
End if
End Sub
Public Sub PAGINAR(ByVal MIOBJETO As Object, ByVal MIEVENTO As
DataGridPageChangedEventArgs)
DGDPRODUCTO.CurrentPageIndex = MIEVENTO.NewPageIndex
CARGAR_DATO()
End Sub
I.S.T.Idat 42 ASP.NET
Aplicaciones Web
End Class
I.S.T.Idat 43 ASP.NET
Aplicaciones Web
Editar registros significa cambiar el contenido de algunos de los campos o columnas por nueva
informacin o para corregir algn error de captura original o para agregar alguna columna que no
exista por modificacin de la tabla o la base de datos.
En general se tiene otro problema de SQL UPDATE, sin embargo ahora se aprovechan algunos
elementos nuevos del objeto datagrid, como son la capacidad que tiene de crearle columnas de
edicin a los renglones que muestra el dataset, estas columnas de edicin traen sus propios
mtodos, mismos que se pueden cargar con codigo para procesar
Instrucciones empleadas.-
Itemcommand Se produce cuando se hace clic en cualquier botn del control DataGrid.
Este evento suele utilizarse para controlar los controles de botones con un valor CommandName
personalizado en el control DataGrid
Utilice en Propiedades del datagrid la coleccin DataKeys para obtener acceso a los valores
clave de cada registro (que se muestra en forma de fila) de un control de lista de datos. Esto
permite almacenar el campo clave con un control de lista de datos, sin mostrarlo en el propio
control. La coleccin se llena automticamente con los valores del campo especificado por la
propiedad DataKeyField.
El campo clave se suele utilizar en un controlador de evento, como por ejemplo ItemCommand o
DeleteCommand, como parte de una cadena de consulta de actualizacin para la revisin de un
registro especfico del origen de datos. El campo clave ayuda a la cadena de consulta de
actualizacin a identificar el registro apropiado que se debe modificar.
Para obtener ms informacin sobre cmo obtener acceso a datos con ASP.NET, vea Acceso a
datos con ASP.NET.
I.S.T.Idat 44 ASP.NET
Aplicaciones Web
DatakeyField
Obtiene o establece el campo clave del origen de datos especificado por la propiedad
DataSource.
Valor de la propiedad
Nombre del campo clave del origen de datos especificado por la propiedad DataSource.
Comentarios
Utilice la propiedad DataKeyField para especificar el campo clave del origen de datos indicado
por la propiedad DataSource. El campo especificado se utiliza para rellenar la coleccin
DataKeys. Esto permite almacenar el campo clave con un control de lista de datos, sin mostrarlo
en el propio control. El campo clave se suele utilizar en un controlador de evento, como por
ejemplo ItemCommand o DeleteCommand, como parte de una cadena de consulta de
actualizacin para la revisin de un registro especfico del origen de datos. El campo clave ayuda
a la cadena de consulta de actualizacin a identificar el registro apropiado que se debe modificar
La propiedad Item se utiliza para obtener acceso a las propiedades del elemento seleccionado en
el control DataGrid.
Ejemplo
[Visual Basic, C#] En el siguiente ejemplo se muestra cmo recuperar la descripcin y el precio de
un elemento del control DataGrid mediante la propiedad Item.
[Visual Basic]
I.S.T.Idat 45 ASP.NET
Aplicaciones Web
Else
End If
ShoppingCart.DataBind()
End Sub 'Grid_CartCommand
Edicin y Modificacin
Pasos :
a) En el datagrid hacer Clic derecho: utilizar generador de propiedades:
I.S.T.Idat 46 ASP.NET
Aplicaciones Web
Enlazar en cada columna con los nombres de los campos en forma a priori, estos campos
tienen que ser seleccionados en la instruccin select
Codifiacion:
<%@Import Namespace="System.Data.SqlClient"%>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="Microsoft.VisualBasic"%>
<HTML>
<HEAD>
<SCRIPT language="vb" runat="server">
Dim Cn as SqlConnection
Dim Cmd as SqlCommand
Dim StrSql as String
Sub Page_Load
Cn=New SqlConnection("Server=(Local);Uid=Sa;Database=Bdfactura")
if Not Page.Ispostback then
EnlaceGrid
End if
End Sub
Sub EnlaceGrid
Cmd= new SqlCommand("Select
cli_codigo,Cli_nombre,cli_direccion,Cli_Ruc From Clientes",Cn)
Cn.Open()
I.S.T.Idat 47 ASP.NET
Aplicaciones Web
Grid.datasource=Cmd.executeReader()
Grid.databind()
Cn.close()
End Sub
Sub Grid_Editar(s as Object,e as DatagridCommandEventArgs)
Grid.EditItemIndex=e.Item.ItemIndex
EnlaceGrid
End Sub
Sub Grid_Update(s as Object,e as DatagridCommandEventArgs)
Dim vCod_Cli as String
Dim txtNombre as Textbox
Dim txtDireccion as Textbox
Dim txtRuc as Textbox
Dim vNombre as String
Dim vDireccion as String
Dim vRuc as String
vCod_Cli=Grid.DataKeys(e.Item.ItemIndex)
txtNombre=e.Item.Cells(1).Controls(0)
txtDireccion=e.Item.Cells(2).Controls(0)
txRuc=e.Item.Cells(3).Controls(0)
vNombre=txtNombre.text
vDireccion=txtDireccion.text
vRuc=txtRuc.text
I.S.T.Idat 48 ASP.NET
Aplicaciones Web
I.S.T.Idat 49 ASP.NET
Aplicaciones Web
I.S.T.Idat 50 ASP.NET
Aplicaciones Web
CRYSTAL REPORTS
Crystal Reports se conecta a bases de datos mediante controladores de bases de datos. Cada
controlador se escribe para controlar un tipo de base de datos especfico o la tecnologa de
acceso a bases de datos.
I.S.T.Idat 51 ASP.NET
Aplicaciones Web
implica la conexin a una base de datos y la seleccin de las tablas, vistas o procedimientos
almacenados para especificar el esquema. Con los controladores ADO.NET y de definicin de
campos, este proceso implica la seleccin de un esquema con la forma de un archivo XML (*.xml)
o de un archivo de definicin de datos (*.ttx).
I.S.T.Idat 52 ASP.NET
Aplicaciones Web
de informes.
esquema sin datos reales.
En tiempo de ejecucin, debe
enviarse un conjunto de
registros o un conjunto de
datos a un informe creado con
el controlador.
Objeto de datos Ninguna. Este controlador se incluye
Crystal (CDO) principalmente para la
Este controlador especial compatibilidad con versiones
obtiene acceso a datos que anteriores.
no residen en una base de
datos tradicional. Este controlador slo admite la
insercin de datos en un
informe desde un conjunto de
registros CDO; no extraer
datos por s mismo. Utilice la
biblioteca de objetos de datos
Crystal para llenar un conjunto
de registros CDO.
Nota Este
controlador no
est disponible
durante el perodo
de creacin del
informe.
Seleccione uno
de los
controladores
disponibles para
crearlo.
Crear un reporte
Crystal Reports se basa en un concepto muy comn de la definicin de reportes: los reportes se
componen de "secciones", y cada seccin es un espacio horizontal en la pgina. Existen diversos
tipos de secciones, por ejemplo:
I.S.T.Idat 53 ASP.NET
Aplicaciones Web
En un principio, todos los reportes presentan estas cinco secciones. Otras secciones son
opcionales, como por ejemplo:
Antes de crear el reporte, hay que decidir cul ser el mecanismo utilizado para acceder a la base
de datos. Crystal Reports puede obtener datos de una infinidad de fuentes, pero una buena
cantidad de ellas, como DAO, ADO y OLE/DB, no est "administrada", o sea, es cdigo.NET
"puro". En una aplicacin.NET, probablemente sea deseable realizar el acceso a travs de
ADO.NET. Para ello, lo ms fcil es definir un Conjunto de datos tipificado, aun antes de crear el
reporte.
Creamos una Aplicacin Web ASP .Net Nueva, para el ejemplo WebAPLIR1
I.S.T.Idat 54 ASP.NET
Aplicaciones Web
I.S.T.Idat 55 ASP.NET
Aplicaciones Web
en la ventana del Asistente del Registro del Producto, presionamos despus, luego nos muestra la
siguiente ventana:
Asistente de Informes
Estandar
I.S.T.Idat 56 ASP.NET
Aplicaciones Web
Y presionamos Finalizar.
I.S.T.Idat 57 ASP.NET
Aplicaciones Web
Luego Expandimos OLE DB (ADO) hasta ubicar la tabla que utilizaremos para el reporte, para el
ejemplo la tabla Products y presionamos Insertar Tabla
Presionamos siguiente y ahora debemos configurar los campos que deseamos mostrar
en el informe
I.S.T.Idat 58 ASP.NET
Aplicaciones Web
Y para este ejemplo presionamos Finalizar, el cual nos mostrara el diseo del informe creado por
el asistente de Crystal Report
I.S.T.Idat 59 ASP.NET
Aplicaciones Web
I.S.T.Idat 60 ASP.NET
Aplicaciones Web
Ahora para poder darle un poco mas de dinamismo al Reporte, vamos a filtrar segn una
categora, para esto debemos agregar un control DropDownList y lo colocaremos antes del
CrystalReportViewer y le daremos el nombre (ID) ddlcategorias y en su propiedad AutoPostBack
lo establecemos en True, quedando la pantalla en modo de diseo de la siguiente manera:
CrystalReportViewer ID CrVProductos
DisplayGroupTree False
I.S.T.Idat 61 ASP.NET
Aplicaciones Web
Finalmente el cdigo para que funcione el filtro de productos por categora seria:
Imports System.Data.Sqlclient
Public Class WebForm1
I.S.T.Idat 62 ASP.NET
Aplicaciones Web
Web service
Los servicios Web XML se componen de dos partes: el punto de entrada al servicio Web XML y el
cdigo que implementa la funcionalidad del servicio Web XML. En ASP.NET, el archivo .asmx es
un archivo de texto que sirve de punto de entrada direccionable del servicio Web XML. Hace
referencia al cdigo de ensamblados precompilados, a un archivo de cdigo subyacente o a un
cdigo contenido en el propio archivo .asmx.
Nota Si el cdigo est contenido directamente en el archivo .asmx, ASP.NET lo compilar bajo
peticin en el servidor.
La directiva de procesamiento WebService situada en la parte superior del archivo .asmx
determina dnde se buscar la implementacin del servicio Web XML. De forma predeterminada,
Visual Studio utiliza archivos de cdigo en segundo plano, como Service1.asmx.vb o
Service1.asmx.cs, cuando se crea un servicio Web XML con la plantilla de proyecto de servicio
Web ASP.NET.
I.S.T.Idat 63 ASP.NET
Aplicaciones Web
El atributo WebMethod se asocia a un mtodo Public para indicar que se desea exponer dicho
mtodo como parte del servicio Web XML. Tambin se pueden utilizar las propiedades de este
atributo para configurar an ms el comportamiento del mtodo de servicio Web XML.
Clase System.Web.Services.WebService
La clase System.Web.Services.WebService, que define la clase base opcional de los servicios
Web XML, proporciona acceso directo a los objetos ASP.NET comunes, como los destinados a
estados de aplicacin y de sesin. De forma predeterminada, los servicios Web XML creados en
cdigo administrado con Visual Studio se heredan de esta clase. El servicio Web XML se puede
heredar de esta clase para obtener acceso a objetos intrnsecos de ASP.NET, como Request y
Session.
I.S.T.Idat 64 ASP.NET
Aplicaciones Web
Controles:
RequiredFieldValidator
Convierte el control de
entrada asociado en un
campo obligatorio.
Propiedades
Controltovalidate:
Textbox1 (enlzar con el
campo textbox1 del
codigo)
ErrorMessage:
Campo Obligatorio
ValidationSummary
Muestra un resumen de
todos los errores de
validacin en lnea en una
pgina Web, en un cuadro
de mensaje o en ambos.
Resultado Final:
I.S.T.Idat 65 ASP.NET
Aplicaciones Web
I.S.T.Idat 66 ASP.NET
Aplicaciones Web
End Function
I.S.T.Idat 67 ASP.NET
Aplicaciones Web
I.S.T.Idat 68 ASP.NET
Aplicaciones Web
cn.Dispose()
End Function
End Class
I.S.T.Idat 69 ASP.NET
Aplicaciones Web
I.S.T.Idat 70 ASP.NET
Aplicaciones Web
lbpro.Text = ""
Exit Sub
End If
lbmen.Text = ""
lbnom.Text = ds.Tables(0).Rows(0).Item(0)
lbesp.Text = ds.Tables(0).Rows(0).Item(1)
pro = servicio.promedio(ds2, 4)
lbpro.Text = pro.ToString
If pro > 10.5 Then
lbpro.ForeColor = System.Drawing.Color.Blue
Else
lbpro.ForeColor = System.Drawing.Color.Red
End If
End Sub
End Class
DropDownList1.-
En propiedades
establecer
AutopostBack =True
true si se produce
una devolucin de
exposicin
automtica cundo el
usuario cambia la
seleccin de la lista;
de lo contrario,
false.
Dgalumno (Dtagrid)
Lbnro la Etiqueta
Codificacin
Imports System.Data.OleDb
I.S.T.Idat 71 ASP.NET
Aplicaciones Web
Sub listar1()
Dim servicio As New localhost.Service2()
Dim ds As New DataSet()
ds = servicio.veresp
DropDownList1.DataSource = ds
DropDownList1.DataTextField = "nomesp"
DropDownList1.DataValueField = "idesp"
DropDownList1.DataBind()
End Sub
Sub listar2()
Dim code As String
code = DropDownList1.SelectedItem.Value
Dim Sql As String = "select Idalumno, Nombre=apealumno+', '+nomalumno,proce
from alumno where idesp='" + code + "'"
Dim cmd As New OleDbCommand(Sql, cn)
cmd.Connection.Open()
Dim oreader As OleDbDataReader = cmd.ExecuteReader
DgAlumno.DataSource = oreader
DgAlumno.DataBind()
Lbnro.Text = DgAlumno.Items.Count
cmd.Dispose()
End Sub
Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
listar2()
End Sub
End Class
I.S.T.Idat 72 ASP.NET
Aplicaciones Web
Aplicacion2.-
Creamos un Proyecto de Tipo Visual Basic con la plantilla Servicio Web ASP
.NET y le damos el nombre de WSNorthwind
Luego debemos ingresar al cdigo de este archivo y en la primera lnea debemos agregar la
clsica cadena que nos permita utilizar al proveedor de datos Sqlclient.
Imports System.Data.SqlClient
Imports System.Web.Services
<WebService(Namespace := "http://tempuri.org/")> _
Public Class Servicio_Northwind
Inherits System.Web.Services.WebService
Luego debemos escribir el cdigo que nos permita crear funciones y que nos
devolvera los registros necesarios.
I.S.T.Idat 73 ASP.NET
Aplicaciones Web
<WebMethod(Description:="Listado de Productos")> _
Public Function Listar_Productos() As DataSet
Creamos un Obj. DataAdapter que liste todos los productos que pertenezcan al
codigo de categoria enviado como parmetro
Dim odap As New SqlDataAdapter( _
"select productid,productname,unitprice,categoryid " & _
" from products where categoryid=@codigo order by productname", ocn)
I.S.T.Idat 74 ASP.NET
Aplicaciones Web
<WebMethod(Description:="Listado de Categorias")> _
Public Function Listar_Categorias() As DataSet
Creando un Obj. SQlCommand que va a utilizar un Procedimiento Almacenado
Dim ocmd As New SqlCommand("usp_lst_categorias", ocn)
ocmd.CommandType = CommandType.StoredProcedure
ocn.Open()
odap.Fill(odst, "categorias")
ocn.Close()
Return odst
End Function
Luego al final debemos ejecutar la aplicacin (F5), el cual nos muestra la misma
pantalla anterior solo que lo muestra en una pagina web:
I.S.T.Idat 75 ASP.NET
Aplicaciones Web
Lo importante aqu es la direccin URL, desde donde carga este servicio web,
que para el ejemplo es:
http://localhost/WSNorthwind/Northwind.asmx
Finalmente debemos probar este servicio desde un cliente, el cual puede ser una
Aplicacin Windows o una Aplicacin Web
Aplicacin Web
I.S.T.Idat 76 ASP.NET
Aplicaciones Web
I.S.T.Idat 77 ASP.NET
Aplicaciones Web
Label2 ID lblcat
Datagrid1 ID dgdproductos
No olvidar darle un formato al Datagrid, para lo cual puede utilizar el formato Automtico (clic
derecho sobre el datagrid), as como tambin establecer una paginacin adecuada (clic derecho
sobre el datagrid y escoger Generador de Propiedades y ubicarse en la ficha Paginacin), para el
ejemplo se ha escogido Permitir paginacin, Tamao de Pagina: 5, en Posicin: Superior e
Inferior, en Modo: nmeros de Pagina
I.S.T.Idat 78 ASP.NET
Aplicaciones Web
Sub Cargar_Categorias()
'Obteniendo el listado de categoras a travs del servicio web
odst = obj.Listar_Categorias
I.S.T.Idat 79 ASP.NET
Aplicaciones Web
I.S.T.Idat 80 ASP.NET
Aplicaciones Web
Script Utilizado
Exec usp_lst_categorias
Go
Esta nota se centrar en responder algunas de las preguntas ms frecuentes que surgen al
momento de comenzar a trabajar con ASP .NET.
I.S.T.Idat 81 ASP.NET
Aplicaciones Web
No se harn grandes explicaciones tcnicas, sino ms bien, mostraremos cdigo para resolver
algunos de los problemas ms comunes con los que nos encontramos al momento de escribir una
aplicacin, por ejemplo, cmo enviar un mensaje, cmo subir un archivo, cmo escribir en el Visor
de Eventos o cmo escribir un contador de Performance.
Esta clase usa el objeto CDOSYS que viene en Windows 2000, en reemplazo del antiguo
CDONTS que venia con WinNT 4.
En el siguiente ejemplo, en el evento Load de una pgina ASP.NET realizamos en envo del
correo:
Adems, como tambin interesa enviar un archivo adjunto al mensaje, creamos un "attach". En
esta clase el constructor tiene dos posibilidades, una de ellas como en el ejemplo, es simplemente
agregar el nombre del archivo, la otra opcin es incluir tambin el modo de encoding
seleccionando el tipo con el numerador System.Web.Mail.MailEncoding.
Mensaje.To = "juanperez@dominio.com"
Mensaje.From = "msdnlatam@midominio.com"
Mensaje.Subject = "Mensaje de Prueba"
En la lnea a continuacin se define el tipo del formato del cuerpo del mensaje, HTML o texto.
Mensaje.BodyFormat = MailFormat.Html
Mensaje.Body = "<html><body><h1>Este es un mensaje de prueba</h1>" _
& "</body></html>"
I.S.T.Idat 82 ASP.NET
Aplicaciones Web
Mensaje.Attachments.Add(oAttach)
Y se enva el mensaje.
SmtpMail.Send(Mensaje)
Mensaje = Nothing
oAttach = Nothing
End Sub
End Class
La primera parte se compone de la pgina HTMl que se le presenta al usuario para que pueda
seleccionar el archivo a subir.
Esta segunda parte comprende el cdigo necesario para poder grabar el archivo enviado en el
directorio correspondiente.
'Importamos System.IO
Imports System.IO
I.S.T.Idat 83 ASP.NET
Aplicaciones Web
Definimos el directorio destino del archivo de la siguiente manera, en el control File1, hay un
objeto de la clase HTTPPostedFile que entre algunas de las propiedades que tiene es la del
nombre del archivo:
Como paso siguiente, con un simple paso, se graba el archivo en el destino definido. Es
importante recordar de que el usuario que se este impersonando en ASP.NET (ya sea annimo u
otro) tenga permiso para poder escribir en el directorio destino.
File1.PostedFile.SaveAs(Destino)
En el paso final, se coloca en una etiqueta la cantidad de bytes que contiene el archivo enviado.
Pero en general no se lo utiliza en los sistemas porque se mezcla con toda la informacin que
genera el propio sistema operativo, entonces muchas veces resulta confuso poder encontrar la
informacin que nos interesa.
En este ejemplo veremos de qu forma podemos crear una nueva seccin en el Visor de Eventos
y de que manera escribimos las diferentes entradas en ese log.
Como primer paso, se verifica que si existe la seccin en el Visor de Eventos, en caso contrario es
creada:
I.S.T.Idat 84 ASP.NET
Aplicaciones Web
Y por ltimo escribimos los mensajes correspondientes, ya sean del tipo de error o del tipo de
informacin.
En mtodo WriteEntry permite diferentes alternativas, en este ejemplo hemos utilizado una de las
mas simples, pero se pueden ingresar otros parmetros como: categora, Id del evento, etc.
Para finalizar con este punto, tambin se puede decir que hay un mtodo
Log.Delete(NombreDeLog) que permite tambin borrar completamente una seccin en el Visor
de Eventos.
Una opcin muy interesante es la de poder crear contadores para el Monitor de Performance y
actualizarlos de acuerdo a alguna particularidad que sea de inters. Por ejemplo, puede interesar
ver la carga que tiene una determinada pgina o un determinado componente.
En el ejemplo siguiente se vern cules son los pasos necesarios para realizar estas operaciones.
Imports System.Diagnostics
I.S.T.Idat 85 ASP.NET
Aplicaciones Web
Se abre el contador de una determinada Categora, l ultimo parmetro (False), esta indicando
que el contador es abierto en modo Lectura/Escritura.
Se incrementa el contador en 1.
MiContador.IncrementBy(1)
End Sub
End Class
En el caso que estamos presentando, el incremento se hace linealmente, por unidad, pero
tambin esta la posibilidad con la propiedad CounterType, de poder definir que tipo de datos va a
manejar el contador, como ser: porcentajes, promedios, tasas, multibase, inversiones, u otras.
Para terminar, se han presentado algunos de los casos que ms preguntas generan, y tambin se
puede observar de que manera el Framework .NET ha facilitado estas tareas que en casos
anteriores eran complicadas de implementar y requera conocimientos profundos sobre el API de
Windows.
En el ejemplo de este artculo se utilizan los controles de uso tpico, cuando se lee informacin
de una base de datos. Estos controles son, en la mayora de los casos, los botones radiales
(RadioButton), cajas de seleccin (CheckBox), cajas de texto (TextBox) y las listas de seleccin
(DropDownList).
I.S.T.Idat 86 ASP.NET
Aplicaciones Web
Adems se utilizarn los elementos de una tabla ASPX, como son las filas (TableRow) y
columnas (TableCell). Estas clases forman parte del Framework de .NET.
Contenido
Creacin de controles
Los controles que se utilizarn en el ejemplo son los que tradicionalmente se encuentran en
cualquier pgina html, como las cajas de texto, botones radiales, listas de seleccin y cajas de
seleccin.
Estos controles sern almacenados en otros controles que llamaremos contenedores. Muchos
controles pueden comportarse como contenedores de otros controles, pero en el ejemplo se
utilizar una tabla ASPX.
Panel
PlaceHolder
Table con sus clases TableRow (fila) y TableCell (columna)
I.S.T.Idat 87 ASP.NET
Aplicaciones Web
El Panel y el PlaceHolder se comportan de manera similar, teniendo el primero una gran cantidad
de propiedades para el formateo grfico, alineamiento, estilos, etc. Para el PlaceHolder, las nicas
propiedades en tiempo de diseo son Visible y EnableViewState, ambas tambin disponibles
para los otros contenedores.
Los objetos Panel o PlaceHolder permiten un despliegue poco controlado de los controles
agregados a estos ya que slo es posible definir el orden dentro del contenedor, pero no una
posicin especfica en la pgina. Si se quiere un despliegue mas acabado, es recomendable la
utilizacin de tablas, definiendo las filas y columnas donde sern agregados los controles.
objPanel.Controls.Add(objControl)
objPlaceHolder.Controls.Add(objControl)
Adicionalmente a la funcin Add existe la funcin AddAt que permite agregar un control en
alguna posicin en especial dentro del contenedor.
objPanel.Controls.AddAt(intPos, objControl)
objPlaceHolder.Controls.AddAt(intPos, objControl)
Si se utiliza una tabla como contenedor de controles, el elemento apto para el almacenamiento es
la celda. Por definicin, una tabla esta compuesta por una o muchas filas y cada fila esta
compuesta por una o muchas celdas.
I.S.T.Idat 88 ASP.NET
Aplicaciones Web
Adicionalmente a la funcin Add existe la funcin AddAt que permite agregar un control en
alguna posicin en especial dentro del contenedor.
objCell.Controls.AddAt(intPos, objControl)
En la prctica
La aplicacin constar de dos formularios, el primero con controles de texto y listas de seleccin,
y el segundo con botones radiales y cajas de seleccin.
Para esto es necesario iniciar una aplicacin de tipo ASP.NET Web Application.
I.S.T.Idat 89 ASP.NET
Aplicaciones Web
I.S.T.Idat 90 ASP.NET
Aplicaciones Web
Primer Formulario
En el primer formulario se permitir la edicin de los valores desde una tabla de categoras,
permitiendo modificar el nombre de la categora y el acceso. El nombre se escribir en campos de
texto y el tipo de acceso en listas de seleccin.
I.S.T.Idat 91 ASP.NET
Aplicaciones Web
Tabla ASPX donde se almacenarn los controles dinmicos (representada por ###)
Botn Jerarqua
Botn Form.Keys
Label de despliegue del resultado de la grabacin
Se utilizarn dos botones ya que se mostrarn dos formas de recorrer los controles de una
pgina. La de jerarqua corresponde a la navegacin a travs de los controles anidados y la de las
llaves (keys), de la coleccin request.form.
Si bien no existe una jerarqua real de controles, estos se pueden recorrer como si as fuera, ya
que dentro de la pgina hay un formulario, dentro del formulario estn la tabla aspx y los botones.
A su vez, dentro de la tabla aspx existen las filas y dentro de cada fila estn las celdas. Por ltimo,
en las celdas estn los controles de texto y listas de seleccin.
I.S.T.Idat 92 ASP.NET
Aplicaciones Web
En el evento Page_Load se cargan los controles dentro de la tabla. El cdigo para lograr esto se
muestra en las siguientes secciones de cdigo, separadas por partes. A todo control que se quiera
identificar despus de que el usuario presiona grabar, se le debe asignar una nombre para
identificarlo. Esta propiedad es ID.
tblCategorias.Rows.Add(objRow)
La tabla tblCategorias est creada en tiempo de diseo. En este cdigo, se crea el encabezado de
sta. Primero se crea la fila de la tabla con la instruccin New TableRow(), despus se crea cada
celda con la instruccin New TableCell() y se le asigna el texto a desplegar en la propiedad Text.
Cuando la celda est lista, se inserta en la fila llamando a objRow.Cells.Add(objCell). El proceso
se repite tres veces para las tres columnas del encabezado de la tabla. Al final, se inserta la fila en
la tabla con la instruccin tblCategorias.Rows.Add(objRow).
Para la creacin de las filas y columnas con la informacin, se utiliza un DataReader (almacenado
en objRs) de una base de datos en Access. El ciclo que crea las dems filas y columnas es el
siguiente:
While objRs.Read
I.S.T.Idat 93 ASP.NET
Aplicaciones Web
objTextBox.Text = CStr(objRs("descripcion"))
objTextBox.CssClass = "texto"
objCell.Text = CStr(objRs("codigo"))
objRow.Cells.Add(objCell)
objCell.Controls.Add(objTextBox)
objRow.Cells.Add(objCell)
objCell.Controls.Add(objDropDownList)
objRow.Cells.Add(objCell)
tblCategorias.Rows.Add(objRow)
End While
I.S.T.Idat 94 ASP.NET
Aplicaciones Web
Como se mencion antes, cuando el usuario presione grabar, es necesario identificar los controles
individualmente. Por esta razn es importante asignar un nombre a cada uno. Para el ejemplo, a
las cajas de texto se les asigna el nombre "categ-" & codigo, donde codigo es el cdigo de la
categora en la base de datos. Para las listas de seleccin, el nombre asignado es "acceso-" &
codigo. Si se observa el cdigo origen de la pgina HTML generada, se puede constatar el
resultado de esto:
I.S.T.Idat 95 ASP.NET
Aplicaciones Web
I.S.T.Idat 96 ASP.NET
Aplicaciones Web
Handles btnJerarquia.Click
Dim i As Integer
I.S.T.Idat 97 ASP.NET
Aplicaciones Web
For i = 1 To tblCategorias.Rows.Count 1
'la celda 0 es la del ID, la 1 la de la descripcin y la
2 del acceso
objCeldaDescripcion = tblCategorias.Rows(i).Cells(1)
objCeldaAcceso = tblCategorias.Rows(i).Cells(2)
Next
End Sub
En el evento del botn se realiza un ciclo por todas las filas de la tabla tblCategorias, creada en
tiempo de diseo. Se comienza de la fila 1 ya que en la 0 estn los textos de encabezado de la
tabla. El ciclo termina naturalmente en Count-1.
En cada ciclo se obtienen las celdas donde estn los controles. Con la instruccin
tblCategorias.Rows(i).Cells(1) se obtiene una celda, de tipo TableCell. Se est leyendo para la
fila i del ciclo, y se toma la celda 1. Al igual que las filas, las celdas tambin comienzan desde 0 y
van hasta Count-1, pero como en la primera est el id de la categora, se captura la 1 en la
variable objCeldaDescripcion, y la 2 en objCeldaAcceso. Ahora, en las variables
I.S.T.Idat 98 ASP.NET
Aplicaciones Web
2 y 3 (con el nombre y el acceso). Slo se deben buscar los controles dentro de cada celda para
obtener lo que el usuario ha ingresado.
El primer control es el nmero 0 (y se sabe que no hay ms), que se carga en objDescripcion,
variable de tipo TextBox, con la instruccin objDescripcion = objCeldaDescripcion.Controls(0).
Lo mismo se hace para la lista de seleccin de accesos, con la instruccin objAcceso =
objCeldaAcceso.Controls(0).
Ya se tiene entonces los controles donde el usuario hizo los cambios. Ahora, se debe identificar a
que categora corresponde. El identificador de la categora se haba almacenado junto al nombre
de la caja de texto y de la lista de seleccin con el formato "categ-" & codigo, en la propiedad ID.
Por ltimo, se llama a una funcin GrabarCategoria, que graba los valores en la base de datos.
I.S.T.Idat 99 ASP.NET
Aplicaciones Web
btnKeys.Click
strNombre = Request.Form.Item(objKey)
End If
Next
End Sub
La primera diferencia es que al recorrer la coleccin Keys del objeto Request.Form, no se pueden
obtener los controles, sino que la informacin que se envi al momento de grabar el formulario
(POST).
Haciendo un ciclo For Each, en la variable objKey se almacenan todos los nombres y valores de
los controles que estaban en la pgina al momento de presionar el botn de grabar.
El funcionamiento es muy simple. Por cada elemento que se mand al servidor al presionar
grabar, se revisa que el nombre sea del tipo que se defini, es decir, categ-1 y los sucesivos. La
forma de hacerlo es comparar los primeros 5 caracteres para que calce con categ. Si es as, es
uno de los controles buscados.
En la variable lngAcceso se carga el valor de la seleccin que ha hecho el usuario con respecto al
acceso de la categora, utilizando tambin Request.Form, pero solicitando el campo acceso- y el
Por ltimo, se llama a una funcin GrabarCategoria, que graba los valores en la base de datos.
A continuacin se utilizarn cajas de seleccin y botones radiales. Para esos casos, es casi
trasparente el uso para el programador.
Segundo Formulario
While objRs.Read
chkList.Items.Add(New
ListItem(CStr(objRs("descripcion")), CStr(objRs("codigo"))))
radList.Items.Add(New
ListItem(CStr(objRs("descripcion")), CStr(objRs("codigo"))))
End While
For i = 0 To chkList.Items.Count 1
objListItem = chkList.Items.Item(i)
If objListItem.Selected Then
lngCodigo = objListItem.Value
End If
Next
Try
lngCodigo = radList.SelectedItem.Value
Catch ex As NullReferenceException
End Try
Para la lista de cajas de seleccin se debe recorrer verificando si cada elemento est o no
seleccionado. Al igual que los dems contadores, este va desde 0 hasta Count-1.
Los elementos de estas listas son del tipo ListItem (referencia al final), los cuales poseen las
propiedades Value con el identificador de la categora, Text con el nombre de la categora y
Selected, que retorna verdadero o falso si est seleccionado. ListItem tiene una gran cantidad de
propiedades, pero slo se han destacado las necesarias en este caso.
Durante el ciclo, se comprueba que est seleccionada, y en caso positivo, se obtiene el cdigo y
el nombre.
Para los botones radiales, es mas simple an, pero se debe tener en cuenta un condicin
especial.
En caso de error, se utiliza el capturador de errores Try...Catch (referencia al final), validando que
la excepcin sea por error de NULO (NullReferenceException).
Conclusiones
Para las listas de seleccin y cajas de texto, se complica el funcionamiento. Existen varias formas
de hacer lo mismo del primer formulario, de diversa complejidad, y la opcin queda abierta al
programador a encontrar la forma que ms le acomode a su trabajo. A su vez, la lectura de los
controles, las opciones presentadas son las ms utilizadas, pudiendo encontrar algunas variantes
sobre la segunda. Ambas tienen sus ventajas y desventajas.
Referencias
Las definiciones de los controles (en ingls) se pueden encontrar en los siguientes artculos
TryCatchFinally Statements
Split Function
GetValue Method
VIII BIBLIOGRAFA:
CHARTE Francisco Programacin con Visual Net
Edit. ANAYA Espaa 2001
Direcciones Web
http://www.godot.net
http://www.manualesgratis.com
http://www.microsoft.com
http://www.microsoft.com/spanish/msdn/articulos/archivo/040403/voices/treeview.asp#Tre
eView_References
http://www.microsoft.es
http://www.guille.costasol.net
http://www.programacion.net/cursos
http://www.willydev.net/DesktopDefault.Aspx
http://es.gotdotnet.com/quickstart/aspplus/doc/ecommerceapp.aspx
http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art185.asp