manual asp .net1

Upload: anonymous-3q1sqw

Post on 09-Mar-2016

42 views

Category:

Documents


0 download

DESCRIPTION

asp

TRANSCRIPT

Manual ASP .NET

Aplicaciones Web

INDICE

1.- ASP NET

1.1 Asp Net

1.2 ADO NET

1.3 Clases Bsicas para gestin 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 Numricas, cadenas y Fechas

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

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:

VISUAL STUDIO.NET Internet

.NET Framework.NET Enterprise Servers.NET Building Block Services

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.

3. Bloque de Servicios .NET

El Bloque de Servicios .NFT se est construyendo como un conjunto de Servicios Web XML que permitan la integracin entre los usuarios y las aplicaciones clientes que corran en diferentes dispositivos (PCs, dispositivos mviles, etc). Actualmente Microsoft tiene construido dos servicios que ofrecen ventajas para los usuarios:

Microsoft Passport: Tiene un conjunto de servicios como el Single Sign In (SSI) que permite autenticar si un usuario es vlido y puede participar en un sitio Web, aparte tiene otras ventajas como reducir el tiempo de autenticacin, guardar contenido personalizado. etc. Hotmail utiliza el servicio de Passport para la autenticacin de usuarios y guardar informacin de ste en el Web.

Microsoft Hailstorm: Usa los servicios de Passport para guardar informacin personalizada del usuario, pero su uso principal es almacenar Servicios Web que puedan ser usados por aplicaciones de Visual Studio .NET o cualquier lenguaje compatible con .NET

El Marco. NET

Definiendo el Marco .NET

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

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.

En el Marco .NET. un espacio de nombre es una conveniencia lgica de denominacin en tiempo de diseo, mientras que un ensamblador establece el mbito de nombre para los tipos en tiempo de ejecucin.

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

CAPITULO 2: VISUAL STUDIO .NET

Introduccin a Visual Studio .NET

Definiendo Visual Studio .NET

Visual Sludio .NET es la Herramienta Rpida de Desarrollo (RAD) de Microsoft para la siguiente generacin de Internet que son los Servicios Web XML. Esta herramienta permite la creacin de aplicaciones usando el Marco .NET, es decir usando el CLR, la Librera de Clases, ADO .NET, ASP .NET, etc.

Es un software que brinda las herramientas necesarias para crear, distribuir, administrar dar mantenimiento a aplicaciones Web distribuidas que usan Servicios Web XML, todo esto con una gran facilidad, rapidez y bajo costo.

Se puede crear aplicaciones Web directamente usando el Framework .NET y algn programa editor, por ejemplo el Bloc de Notas, pero el tiempo que llevara el desarrollo no justificara el ahorro de costos, en cambio, si se utiliza una herramienta como Visual Studio.NET el tiempo de desarrollo se reducira enormemente.

Visual Studio .NET permite tambin la integracin y el uso cruzado de lenguajes de programacin: Visual Basic .NET. Visual C# .NET, Visual C-H- .NET y JScript .NET

A diferencia de la versin anterior no existe Visual InterDev, ni Visual J++-, adems Visual FoxPro .NET no comparte tas caractersticas unificadas del Marco .NET

Herramienta Rpida de Desarrollo (RAD)

La principal ventaja de Visual Studio .NET es realizar la creacin de aplicaciones de forma fcil y rpida, tan solo con arrastrar y soltar objetos se pueden crear desde aplicaciones Windows hasta Servicios Web XML.

Entre algunas de las ventajas del soporte RAD de Visual Studio tenemos:

Creacin de Pginas Web mediante Formularios Web

Visual Studio .NET incluye un diseador de pginas Web HTML y ASP .NET basado en formularios Web. El diseador permite arrastrar controles, clases de datos, y otros objetos y configurar sus propiedades como si fuese un formulario de una aplicacin para Windows.

Creacin de Servicios Web XML

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

Acceso a Servicios Web XML

Una vez creado los Servicios Web XML deben usarse en otras aplicaciones del negocio, para ello Visual Studio .NET cuenta con el Explorador de Servidores (Server Explorer) que permite ver los Servicios Web publicados y usarlos con solo un arrastre. Tambin podemos usar un Servicio Web haciendo referencia desde un proyecto mediante la opcin "Add Web Referente" del men "Project".

Creacin de Componentes .NET

Crear componentes o controles de usuario es tan simple como crear un formulario, ya que usando la herencia se puede pasar todas las caractersticas de un objeto a otro, esto este presente en todos los objetos creados en Visual Studio .NET, sean visuales o no.

Creacin de archivos XML

Con el diseador de XML, crear un archivo XML es ms fcil que nunca, ya que se muestra de colores el cdigo y s auto completan los Tags que uno va escribiendo. Este

Maneja 3 vistas: XML, esquemas y datos.

Existen mas caractersticas RAD en Visual Studio .NET, las cuales trataremos mas adelante.

Lenguajes en .NET

En Visual Studio .NET vienen los siguientes Lenguajes de Programacin:

Visual Basic .NET

Visual C# .NET

Visual C++ .NET

Visual FoxPro .NET (No administrado por el Marco .NET)

Visual JScript .NETQu es ASP.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?

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.-

GESTION CON BASES DE DATOS (ADO.NET)

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.

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.

ADO.NET se encuentra en la biblioteca System.Data.dll, y ofrece clases en espacios de nombres bien diferenciados que explico brevemente a continuacin:

System.Data: es el espacio de nombres primario. Dentro de este espacio de nombres tenemos un conjunto de clases que representan, digamos, una base de datos virtual, tablas, filas, columnas, relaciones, etc. Sin embargo, ninguna de estas clases ofrece conexin alguna con un origen de datos, sino que simplemente representan los datos en s mismos.

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.

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 CLASES BSICAS DE ADO.NET

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.

DataTable: un DataTable representa un conjunto de filas y columnas tambin en memoria y desconectado del origen de datos, como el DataSet. Pertenece al espacio de nombres System.Data. La propiedad Tables de un objeto DataSet contiene una coleccin de objetos DataTable, y dicha coleccin es de la clase DataTableCollection. Por otra parte, cada objeto DataTable representa sus filas en la propiedad Rows (de la clase DataRowCollection), siendo 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.

Las clases ms importantes del espacio de nombres System.Data.SqlClient, y sus equivalentes en el espacio de nombres System.Data.OleDb:

SqlConnection: su equivalente en OleDb es OleDbConnection. Son ms o menos equivalentes a la clase Connection del antiguo ADO, en tanto en cuanto que proporcionan la conexin con el origen de datos y mantiene algunas de sus antiguas propiedades y mtodos, como son ConnectionString, ConnectionTimeOut, Open y Close. Sin embargo, al igual que las otras clases que tambin tienen un equivalente (ms o menos) en la tecnologa antigua, ten presente que no se manejan exactamente igual, como tendremos ocasin de ver ms adelante.

SqlCommand: su equivalente en OleDb es OleDbCommand. Tambin son parecidos a los antiguos objetos Command de ADO y, como estos, representan procedimientos almacenados o instrucciones SQL que se ejecutan en el origen de datos.

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).

SqlDataAdapter: su equivalente en OleDb es OleDbDataAdapter. Esta clase no tiene nada parecido (ni de lejos) en el antiguo ADO. Contiene un conjunto de objetos SqlCommand ( OleDbCommand, segn proceda) en sus propiedades SelectCommand, InsertCommand, UpdateCommand y DeleteCommand. Cuando se invoca el mtodo Fill, el DataAdapter rellena un objeto DataSet o DataTable con el conjunto de filas resultante de ejecutar el comando establecido en su propiedad SelectCommand. Cuando se invoca el mtodo Update, el DataAdapter ejecuta el comando establecido en su propiedad InsertCommand para aadir al origen de datos las filas nuevas aadidas a un DataTable, el comando UpdateCommand para modificar las filas que hayan sido modificadas en el DataTable y el comando DeleteCommand para eliminar las filas que hayan sido eliminadas en el DataTable. Por lo tanto, el DataAdapter es el nexo que une los objetos DataSet y DataTable, totalmente desconectados, con el origen de 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

Objetos de Proveedores de Datos .NETPropsitoObjeto SQL Server 7.0 o 2000Objeto para un origen OLEDB

ConnectionProvee conectividad a un Origen de DatosSqlConnectionOleDBConnection

CommandProvee acceso a comandos de Base de Datos como Select, Delete, Insert y UpdateSqlCommandOleDBCommand

DataReaderProvee acceso a datos de solo lecturaSqlDataReaderOleDBDataReader

DataAdapterUtiliza el objeto Connection para enlazar un objeto DataSet con un Proveedor de Datos. Tambin permite actualizar los Datos en el origen a partir de las modificaciones hechas en el DataSet.SqlDataAdapterOleDBDataAdapter

Los datos siempre viajan en formato XML ASP.NET y ADO.NET transforman en forma automtica XML en un DataSet.Aplicaciones..- Listado de datos empleando los controles de BDD

Se puede acceder al conjunto de servidores mediante(ver Explorador de servidores)

Hacer la conexin con Northwind y de la caja de herramientas arrastrar SqlConnection1(Haciendo referencia en propiedades a Northwind) , sqldataAdapter1 (configurando con la tabla Categories) y Dataset1 (Conjunto de datos) haciendo referencia a la configuracin anterior.

Acciones de ida y vuelta

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. La clave de este proceso es que, a diferencia de la navegacin clsica en que el sevidor espera (escucha) peticiones del cliente y, cuando las recibe, enva automticamente la respuesta (generalmente un documento HTML que es mostrado en el navegador Web), aqu el servidor ejecuta algn tipo de procesamiento a raz de la peticin del cliente y elabora dinmicamente la respuesta que devuelve. En esquema sera: El cliente (explorador Web) se conecta al servidor Web gracias a su URL

El cliente enva una peticin al servidor (solicita una pgina Web). El cliente puede ejecutar cdigo (en el lado del cliente), con secuencias de comandos que se utilizan para generar efectos dinmicos en el cliente (DHTML). Este cdigo no se procesa en el servidor

El servidor busca la pgina solicitada y ejecuta el cdigo contenido en ella. Este cdigo del lado del servidor se escribe en secuencias de comandos (para tareas simples) pero tambin en lenguajes compilados (Visual Basic, C#, etc., para tareas complejas como son clculos matemticos, recuperacin de datos, gestin de sitios, comercio electrnico, etc.)

El servidor traduce el resultado de la ejecucin del cdigo a HTML y lo enva al cliente

El cliente muestra al usuario el documento recibido. Si el usuario consulta el cdigo fuente del documento que visita, no ver el cdigo original del archivo que reside en el servidor, sino solamente cdigo HTML en que la tecnologa ASP .NET ha convertido el resultado del procesamiento

CONFIGURACIN DE ASP .NET: para poder ejecutar pginas ASP .NET se necesita:

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.

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.

COMPONENTES BSICOS DE UNA PGINA ASP .NET:

En la primera lnea destaca la directiva que dice al servidor Web que se trata de una pgina ASP .NET y que usa Visual Basic .NET como lenguaje de programacin. Tambin podra ser en caso de usar C# como lenguaje de programacin.

Despus de la directiva @ Page vienen bloques de declaracin de cdigo, en lenguaje Visual Basic .NET, incluidos en la etiqueta 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 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:

Son controles Web, con algunas funcionalidades similares a las de los elementos HTML del mismo nombre pero con otras aadidas por ASP .NET

SEPARACIN DE CDIGO VB Y CONTENIDO HTML: En muchas ocasiones es til mantener el contenido HTML de las pginas fuera del cdigo Visual Basic, aumenta la legibilidad del cdigo fuente de los archivos y facilita su modificacin por el programador. Se pueden usar formularios con cdigo de apoyo, llevando a estos formularios o archivos de cdigo *.vb todo el cdigo Visual Basic del archivo aspx y declarando en ellos versiones pblicas de los controles de servidor que se usan en la pgina. Por ejemplo, para una etiqueta llamada lbEtiqueta en el archivo aspx, se puede escribir en el archivo de cdigo:

Public lbEtiqueta As Label

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 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:

(aqu la pgina aspx utliiza el atributo Inherits para heredar la clase derivada de Page, la clase datagridVb, descrita en el archivo datagrid.aspx.vb, que es precompilado en segundo plano para poder probar la pgina a medida que se va construyendo)

ESPACIOS DE NOMBRES Y HERENCIA: A su vez, en el archivo de cdigo de apoyo datagrid.aspx.vb, hay que importar determinados espacios de nombres, necesarios para utilizar ASP .NET, que no es necesario especificar cuando todo el cdigo va en la pgina aspx (Asp .NET lo hace automticamente por nosotros) y tambinheredar la clase Page (de System.Web.UI) al declarar la clase datagridVb: Imports SystemImports System.WebImports System.Web.UIImports System.Web.UI.WebControls Public Class datagridVb : Inherits Page En este ejercicio en concreto tambin han de importarse los espacios de nombres Data y Data.OleDb para permitir el uso de ADO .NET: Imports System.DataImports System.Data.OleDbLos operadores empleados.-

Operadores Aritmeticos

^ Exponenciacion

* , / Multiplicacin y divisin real

\ divisin entera

Mod residuo de una divisin entera

A=23\4 la respuesta es 5

A= 23 mod 4 resultado 3

Operadores de comparacinIgualdad (=)

Desigualdad ()

Menor o mayor que ()

Mayor o igual que (>=)

Menor o igual que (

Carrera :

Hola, , has seleccionado la Carrera de :

Aplicacin 2.- Segunda forma empleando etiquitas script

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

Sub SubmitBtn_Click(sender As Object, e As EventArgs)

Label1.Text = "Su eleccin: " + DropDown1.SelectedItem.Text

End Sub

Enlace de datos de DropDownList

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}

Dropdown1.datasource=values

1.- Lo primero y ms importante a recordar es que en este modelo de programacin el codigo en vbNet estar embebido o empotrado junto con codigo html.

2.- Este codigo mezcla instrucciones y objetos de dos lenguajes de programacin diferentes, ellos son HTML y vbNet.

3.- El problema es que los objetos HTML no tienen suficientes propiedades y mtodos para resolver muchos problemas de programacin, por esta razn Microsoft.Net crea unas cubiertas?(WRAPPERS) para cada uno de ellos, en su librera System.Web.UI.Control, o coleccin HTMLCONTROL, estos nuevos objetos o controles son:HtmlInputButton, HtmlInputCheckBox, HtmlInputFile, HtmlInputHiden, HtmlputImage, HtmlInputRaddioButton, HtmlInputText, HtmlAnchor, HtmlButton, HtmlForm, HtmlGenericControl, HtmlSelect, HtmlTable, HtmlTableCell, HtmlTableRow, HtmlTextArea, HtmlImage.

Estos controles aceptan o pueden usar todas las propiedades originales de los objetos HTML y algunas nuevas propiedades y mtodos como se observa en el programa ejemplo.

La nica propiedad que no se menciona y se usa en todos estos objetos htmlcontrol es runat="server" que se utiliza para indicarle al servidor de paginas que debe compilar y ejecutar el programa.aspx usando el lenguaje apropiado y solo mandarle el resultado de esta compilacin a la maquina cliente que lo pidi.

4.- El script o miniprograma empieza con 0 Then

Lbmensaje.Text = NRO

Else

Lbmensaje.Text = "NO EXISTE CLIENTE"

End If

End Sub

End ClassCodificacin FRMDETALLE.ASPX pasando el numero de pedido (orden)

Codificacin

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

+Region " Cdigo generado por el Diseador de Web Forms "

Dim cn As New SqlConnection("uid=sa;database=northwind;server=(local)")

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 SQL As String

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=" + Request.QueryString("orden")

Dim objda As New SqlDataAdapter(SQL, cn)

Dim objds As New DataSet()

Dim NRO, F As Integer

Dim sm As Double

objda.Fill(objds)

DataGrid1.DataSource = objds

DataGrid1.DataBind()

LBNRO.Text = Request.QueryString("orden")

NRO = DataGrid1.Items.Count determina cuantas filas hay en el grid

If NRO > 0 Then

Dim dr As DataTable variable tipo tabla

dr = objds.Tables(0) asigna la tabla del dataset

sm = 0

For F = 0 To NRO 1 recorre la tabla pero de la columna total (3)

sm += dr.Rows(F).Item(3)

Next

Lbtot.Text = sm

End If

End Sub

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

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

+ " Cdigo generado por el Diseador de Web Forms "

Dim cadcon = "uid=sa; database=northwind;server=(local)"

Dim cn As New SqlConnection(cadcon)

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

If Not IsPostBack Then

clientes() Si la pagina no ha sido cargada

End If

End Sub

Sub clientes()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter("select Customerid, Companyname from Customers", cn)

da.Fill(ds, "Cliente")

DropDownList2.DataSource = ds

DropDownList2.DataTextField = "Companyname" ' Muestra el Nombre

DropDownList2.DataValueField = "Customerid" 'Para acceder a su codigo

DropDownList2.DataBind()

da.Dispose()

cn.Dispose()

End Sub

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

Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged

VerDetalle()

End Sub

Private Sub DropDownList2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList2.SelectedIndexChanged

verpedidos()

End Sub

End Class

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

Imports System.Data.SqlClient

Imports System.Data.OleDb

Imports System.Text

Public Class Clientes

Inherits System.Web.UI.Page

Protected WithEvents CboCustomer As System.Web.UI.WebControls.DropDownList

Protected WithEvents BtnBuscar As System.Web.UI.WebControls.Button

Protected WithEvents BtnRegresar As System.Web.UI.WebControls.Button

Protected WithEvents BtnMayor As System.Web.UI.WebControls.Button

Protected WithEvents Label2 As System.Web.UI.WebControls.Label

Protected WithEvents DgdOrdenes As System.Web.UI.WebControls.DataGrid

Protected WithEvents Label3 As System.Web.UI.WebControls.Label

Protected WithEvents DgdDetalle As System.Web.UI.WebControls.DataGrid

Protected WithEvents Label4 As System.Web.UI.WebControls.Label

Protected WithEvents Label1 As System.Web.UI.WebControls.Label

+ codigo Generado Cdigo generado por el Diseador de Web Forms "

Dim OCon As OleDb.OleDbConnection

Dim SCon As String

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 Sql As String

SCon = "Provider=SqlOleDb;uid=sa;pwd=;database=northwind;server=(local)"

OCon = New OleDb.OleDbConnection(SCon)

Sql = "Select * From Customers"

Dim Cmd As OleDb.OleDbCommand

Cmd = New OleDb.OleDbCommand(Sql, OCon)

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

Private Sub BtnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBuscar.Click

Dim SSql As StringBuilder

Dim XCustomerId As String

SSql = New StringBuilder("Select O.OrderId, O.ShipCountry, O.OrderDate, Sum(D.UnitPrice * D.Quantity) As Monto From Orders O, [Order Details] D Where O.OrderId = D.OrderId And CustomerId = '")

XCustomerId = Me.CboCustomer.SelectedItem.Value

SSql.Append(XCustomerId)

SSql.Append("' Group By O.CustomerId, O.OrderId, O.ShipCountry, O.OrderDate")

Dim Cmd As New OleDb.OleDbCommand(SSql.ToString, OCon)

Dim OReader = Cmd.ExecuteReader

DgdOrdenes.DataSource = OReader

DgdOrdenes.DataBind()

DgdDetalle.DataSource = ""

DgdDetalle.DataBind()

End Sub

Private Sub BtnMayor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnMayor.Click

Dim WSql As String

Dim WCustomerId As String

Dim WOrderId As String

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"

Dim WCmd As New OleDb.OleDbCommand(WSql, OCon)

Dim WReader As OleDb.OleDbDataReader

WReader = WCmd.ExecuteReader

While WReader.Read()

WOrderId = WReader(0)

End While

WReader.Close()

'Llenar el Detalle del Grid de Mayor Monto

Dim YSql As StringBuilder

Dim YCustomerId As String

YSql = New StringBuilder("Select D.OrderId, D.ProductId, P.ProductName, D.UnitPrice, D.Quantity, D.UnitPrice * D.Quantity As SubTotal From [Order Details] D, Products P Where D.ProductId = P.ProductId And OrderId = '")

YSql.Append(WOrderId)

YSql.Append("' Order By P.ProductId")

Dim YCmd As New OleDb.OleDbCommand(YSql.ToString, OCon)

Dim YReader = YCmd.ExecuteReader

DgdDetalle.DataSource = YReader

DgdDetalle.DataBind()

End Sub

Private Sub BtnRegresar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnRegresar.Click

Response.Redirect("Menu.aspx")

End Sub

End Class

Aplicacin con Web Form Empleando la BDD Universidad

Adicin y eliminacin e datos sin emplear Store Procedure

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 cadcon = "uid=sa; database=Universidad;server=(local)"

Dim cn As New SqlConnection(cadcon)

Protected WithEvents Button3 As System.Web.UI.WebControls.Button

Dim ds As DataSet

+ Cdigo generado por el Diseador de Web Forms "

Dim da As SqlDataAdapter

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

Button1.Enabled = False

llena()

End Sub

Sub llena()

ds = New DataSet() Para mostrar la lista de curso

da = New SqlDataAdapter("select * from curso", cn)

da.Fill(ds)

DataGrid1.DataSource = ds

DataGrid1.DataBind()

End Sub

Private Sub BtNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim nf, nro As Integer

Dim cad As String

nf = ds.Tables(0).DefaultView.Count - 1

nro = CInt(Right(ds.Tables(0).Rows(nf).Item(0), 3)) + 1

cad = "C" & Format(nro, "000")

TextBox1.Text = cad

Button1.Enabled = True

End Sub

Private Sub BtnGraba_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim cmd As SqlCommand

Dim prm As SqlParameter

Dim sql As String

sql = "insert into curso values(@codc,@nomc,@nhr)"

cn.Open()

cmd = New SqlCommand(sql, cn)

'Primera forma

'prm = cmd.Parameters.Add("@codc", SqlDbType.Char, 4)

'prm.Direction = ParameterDirection.Input

'prm.Value = TextBox1.Text

'prm = cmd.Parameters.Add("@nomc", SqlDbType.VarChar, 35)

'prm.Direction = ParameterDirection.Input

'prm.Value = TextBox2.Text

'prm = cmd.Parameters.Add("@nhr", SqlDbType.Int)

'prm.Direction = ParameterDirection.Input

'prm.Value = TextBox3.Text

'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()

Button1.Enabled = False

End Sub

Private Sub BTnAnula_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Dim sql As String

Dim prm As SqlParameter

cn.Open()

sql = "delete from curso where idcurso=@cod"

Dim cmd As New SqlCommand(sql, cn)

cmd.Parameters.Add("@codc", TextBox1.Text)

cmd.ExecuteNonQuery()

cmd.Dispose()

cn.Close()

llena()

End Sub

End Class

Aplicacin mantenimiento a una tabla.-

Mantenimento a la tabla alumno empleando Store Procedure

Para insertar o adicionar nuevos alumnos

create Procedure sP_ADIaLU

@COD CHAR(5),@APE VARCHAR(30),@Nom varchar(30), @idesp char(3), @pro as char(1)

as

insert into alumno values(@cod,@ape,@nom,@idesp,@pro)

return

Para anular

create Procedure SP_DELALU

@COD CHAR(5)

as

delete from alumno where idalumno=@cod

return

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;SERVER=(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()

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

Private Sub btnuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnuevo.Click

Dim CMD As New OleDbCommand()

CN.Open()

With CMD

.Connection = CN

.CommandType = CommandType.Text

.CommandText = "SELECT ISNULL(MAX(IDALUMNO),'A0000') FROM ALUMNO"

End With

Dim CAD As String = CMD.ExecuteScalar

Dim NRO As Integer

NRO = Val(CAD.Substring(1, 4)) + 1

TextBox1.Text = "A" + Format(NRO, "0000")

CN.Close()

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

.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

Paginacion en un listado Cuando la lista de datos es muy grande es necesario hacer la paginacin del listado

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

End Class

Edicin, y Eliminacin de Registros en Lnea

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.

El controlador de eventos recibe un argumento de tipo DataGridCommandEventArgs que contiene datos relacionados con el evento. Las siguientes propiedades de

DataGridCommandEventArgs proporcionan informacin especfica para el evento

PropiedadDescripcin

CommandArgument (se hereda de CommandEventArgs)Obtiene el argumento del comando.

CommandName (se hereda de CommandEventArgs)Obtiene el nombre del comando.

CommandSourceObtiene el origen del comando.

ItemObtiene el elemento que contiene el origen del comando en el control DataGrid.

Este evento suele utilizarse para controlar los controles de botones con un valor CommandName personalizado en el control DataGridUtilice 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.

DatakeyField

Obtiene o establece el campo clave del origen de datos especificado por la propiedad DataSource.

[VisualBasic]

Overridable Public Property DataKeyField As String[C#]

public virtual string DataKeyField {get; set;}[C++]

public: __property virtual String* get_DataKeyField();public: __property virtual void set_DataKeyField(String*);[JScript]

public function get DataKeyField() : String;public function set DataKeyField(String);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 CommandArgument puede contener cualquier cadena establecida por el programador. La propiedad CommandArgument complementa la propiedad CommandName ya que permite facilitar informacin adicional para el comando. Por ejemplo, se puede establecer la propiedad CommandName en Sort y la propiedad CommandArgument en Ascending para especificar un comando con el fin de organizar en orden ascendente.

Utilice la propiedad CommandName para determinar el comando que se va a ejecutar. La propiedad CommandName puede contener cualquier cadena establecida por el programador. Posteriormente, el programador podr identificar el nombre de comando en el cdigo y llevar a cabo las tareas pertinentes.La propiedad Item se utiliza para obtener acceso a las propiedades del elemento seleccionado en el control DataGrid.Ejemplo

[VisualBasic,C#] En el siguiente ejemplo se muestra cmo recuperar la descripcin y el precio de un elemento del control DataGrid mediante la propiedad Item.

[VisualBasic]

Sub Grid_CartCommand(sender As Object, e As DataGridCommandEventArgs)

' e.Item Es una fila de la tabla que es seleccionada.

' Para las columnas enlazadas, Los valores almacenados con la propiedad TableCell.

Dim itemCell As TableCell = e.Item.Cells(2)

Dim priceCell As TableCell = e.Item.Cells(3)

Dim item As String = itemCell.Text

Dim price As String = priceCell.Text

If CType(e.CommandSource, Button).CommandName = "AddToCart" Then

' Insert code to add an item to the cart.

Else

' Insert code to remove an item from the cart.

End If

ShoppingCart.DataBind()

End Sub 'Grid_CartCommand

Edicin y Modificacin

Pasos :

a) En el datagrid hacer Clic derecho: utilizar generador de propiedades:

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:

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()

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

StrSql="Update clientes set cli_nombre=@Nombre,Cli_direccion=@direccion,Cli_ruc=@Ruc where Cli_codigo=@codigo"

cmd=new SqlCommand(StrSql,Cn)

cmd.parameters.add("@Nombre",vNombre)

cmd.parameters.add("@direccion",vDireccion)

cmd.parameters.add("@ruc",Cdbl(vRuc))

cmd.Parameters.add("@codigo",vCod_Cli)

Cn.open()

Cmd.executeNonQuery()

Cn.Close()

Cmd.Dispose()

Grid.EditItemIndex=-1

EnlaceGrid

End Sub

Sub Grid_Cancel(s as Object,e as DatagridCommandEventArgs)

Grid.EditItemIndex=-1

EnlaceGrid

End Sub

Sub Grid_Delete(s as Object,e as DatagridCommandEventArgs)

Dim vCodigo as String

vCodigo=Grid.DataKeys(e.item.ItemIndex)

cmd=new SqlCommand("Delete From Clientes Where cli_Codigo=@codigo",Cn)

cmd.parameters.add("@codigo",vCodigo)

Cn.open()

Cmd.executeNonQuery()

Cn.close()

Grid.EditItemIndex=-1

EnlaceGrid

End Sub

public Sub MNuevo(sender As Object, e As System.EventArgs)

Cmd=New SqlCommand("Select Count(*) From Clientes",Cn)

Cn.Open()

Dim xValor as Integer

xValor=Cmd.ExecuteScalar()

Cn.Close()

txtCod.text="":txtNom.text="":txtFec.text="":txtdir.text=""

txtCod.text="C"+Right("0000"+ Trim(Str(xValor+1)),4)

End Sub

public Sub MGrabar(sender As Object, e As System.EventArgs)

StrSql="Insert Into Clientes (cli_codigo,cli_nombre,cli_direccion,cli_ruc) values(@cod_cli,@nom_cli,@direccion,@ruc)"

cmd=New SqlCommand(StrSql,Cn)

cmd.parameters.add("@cod_cli",txtCod.text)

cmd.parameters.add("@nom_cli",txtNom.text)

cmd.parameters.add("@direccion",txtDir.text)

cmd.parameters.add("@ruc",txtFec.text)

cn.open()

cmd.executeNonQuery()

cn.close()

txtCod.text="":txtNom.text="":txtFec.text="":txtdir.text=""

EnlaceGrid

End Sub

Codigo:

txtCod

Nombre:

Txtnom

Direccion:

Txtdireccion

Ruc

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.

Modelos de extraccin e insercin

Con el fin de ofrecer el acceso a datos ms flexible para los programadores, los controladores de base de datos de Crystal Reports se han diseado para proporcionar un modelo de extraccin e insercin de acceso a datos.

Modelo de extraccin

En un modelo de extraccin, el controlador se conectar a la base de datos y extraer datos cuando se necesiten. Con este modelo, Crystal Reports controla tanto la conexin a la base de datos como el comando SQL que se ejecuta para obtener los datos y no necesita ninguna codificacin del programador. Si no se escribe ningn cdigo especial en tiempo de ejecucin, se utiliza el modelo de extraccin.

Modelo de insercin

En comparacin, el modelo de insercin necesita que el programador escriba cdigo para conectarse a la base de datos, ejecutando un comando SQL para crear un conjunto de registros o de datos que se ajusten a los campos del informe y enviando ese objeto al informe. Este mtodo le permite crear recursos compartidos de conexin en la aplicacin y filtrar los datos antes de que Crystal Reports los reciba.

Los controladores de bases de datos se utilizan durante el tiempo de creacin y de procesamiento.

Durante el tiempo de creacin, el controlador de la base de datos se utiliza para identificar el esquema de los datos. Con los controladores OLEDB, ODBC y Access/Excel, este proceso 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).

Durante el tiempo de procesamiento, el informe utilizar el mismo controlador de base de datos utilizado para crear el informe. No obstante, si los datos se insertan en el informe, el informe seleccionar el controlador adecuado para controlar el conjunto de registros o el conjunto de datos.

Controladores de bases de datos con Crystal Reports para Visual Studio .NET Controlador de base de datosBase de datos a las que se tiene accesoMtodo de acceso a datos

OLEDBCualquier base de datos que tenga un proveedor OLEDB.Admite tanto la extraccin de datos de la base de datos como la insercin de datos en el informe de un conjunto de registros ADO.

ODBCCualquier base de datos que tenga un proveedor ODBC.Admite tanto la extraccin de datos de la base de datos como la insercin de datos en el informe de un conjunto de registros RDO.

Access/ExcelBases de datos de Microsoft Access y libros de Microsoft Excel.Admite tanto la extraccin de datos de la base de datos como la insercin de datos en el informe de un conjunto de registros DAO.

ADO.NETCualquier base de datos con un proveedor gestionado.Admite la insercin de datos en el informe desde un conjunto de datos ADO.NET.

Este controlador no extraer datos por s mismo.

Definicin de campoNinguna.

Este controlador especial se utiliza para crear informes basados nicamente en un esquema sin datos reales.El controlador se incluye principalmente para la compatibilidad con versiones anteriores y slo se utiliza durante el proceso de creacin de informes.

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 Crystal (CDO)Ninguna.

Este controlador especial obtiene acceso a datos que no residen en una base de datos tradicional.Este controlador se incluye principalmente para la compatibilidad con versiones anteriores.

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.

NotaEste controlador no est disponible durante el perodo de creacin del informe. Seleccione uno de los controladores disponibles para crearlo.

Crear un reporte

Independientemente de cmo se har la presentacin, el reporte se define en un archivo ".RPT", que forma parte de su proyecto. Ese archivo especifica el modo en que se har la presentacin del reporte, pero no incluye los datos propiamente dichos. Los datos se definirn en el tiempo de ejecucin.

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:

Encabezado del reporte, aparece en la primera pgina.

Encabezado de pgina, aparece en la parte superior de todas las pginas.

Detalle: lo ms importante. En el tiempo de ejecucin, se genera una de estas secciones para cada lnea (registro) en la base de datos.

Pie de pgina, aparece en la parte inferior de todas las pginas.

Pie de reporte, aparece al final del reporte.

En un principio, todos los reportes presentan estas cinco secciones. Otras secciones son opcionales, como por ejemplo:

Encabezado de grupo, aparece antes de un grupo.

Pie de grupo, aparece al final del grupo.

Se podr omitir una o ms secciones, en caso de que no sean necesarias.

Acceder a la base de datos

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.

Un Reporte Sencillo en ASP Net

Creamos una Aplicacin Web ASP .Net Nueva, para el ejemplo WebAPLIR1

Agregamos un nuevo elemento, y seleccionamos Crystal Report, para el ejemplo RepProductos.rpt

en la ventana del Asistente del Registro del Producto, presionamos despus, luego nos muestra la siguiente ventana:

Asistente de Informes

Estandar

En la ventana de Asistente de informe estndar, nos ubicamos en OLE DB (ADO) y seleccionamos un proveedor adecuado, en este caso: Microsoft OLE DB Provider for SQL Server

Presionamos siguiente y debemos configurar la siguiente ventana

Y presionamos Finalizar.

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

Y para este ejemplo presionamos Finalizar, el cual nos mostrara el diseo del informe creado por el asistente de Crystal Report

Luego en el formulario Web agregamos el Control Web: CrystalReportViewer, y le damos en su propiedad ID el nombre CrVProductos

Finalmente ingresamos al cdigo del programa y digitamos lo siguiente:

Private Sub Page_Load(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles MyBase.Load

With CrVProductos

'Establecemos como su origen al reporte creado anteriormente

.ReportSource = Server.MapPath("RepProductos.rpt")

.DataBind()

End With

End Sub

Quedando el informe como la ventana siguiente:

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:

Control

Propiedad

Valor

DropdownList

ID

ddlcategorias

AutoPostBack

True

CrystalReportViewer

ID

CrVProductos

DisplayGroupTree False

Finalmente el cdigo para que funcione el filtro de productos por categora seria:

Imports System.Data.SqlclientPublic Class WebForm1

Private Sub Page_Load(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles MyBase.Load

If Not Page.IsPostBack Then

CrVProductos.Visible = False

Cargar_Categorias()

EnlaceReporte()

End If

End Sub

Private Sub EnlaceReporte()

With CrVProductos

.ReportSource = Server.MapPath("RepProductos.rpt")

.DataBind()

End With

End Sub

Private Sub Cargar_Categorias()

Dim odst As New DataSet()

Dim ocn As New SqlConnection("uid=sa;server=(local);database=northwind")

Dim odap As New SqlDataAdapter("select * from categories", ocn)

odap.Fill(odst)

With ddlcategorias

.DataTextField = "categoryname"

.DataValueField = "categoryid"

.DataSource = odst

.DataBind()

End With

End Sub

Private Sub ddlcategorias_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ddlcategorias.SelectedIndexChanged

'Capturamos el valor del codigo de la categoria Dim id As Integer = CInt(ddlcategorias.SelectedItem.Value)

Dim StrFormula As String

CrVProductos.Visible = True

'Filtramos los registros por el campo Codigo de Categora, respetando la sintaxis

'de Cristal Report {Tabla.Campo}=Valor StrFormula = "{Products.categoryid}=" & id

'Asignando nuestra formula CrVProductos.SelectionFormula = StrFormula

'Volviendo a enlazar el origen de datos del reporte EnlaceReporte()

End Sub

End Class

Finalmente el Reporte en ejecucin al seleccionar una Categora quedaria:

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.NotaSi 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.

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.WebServiceLa 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.

Aplicacin .- Empleando la BDD universidad, realizar la siguiente consulta.-

Resultado Final:

Pasos para crear la aplicacin

Paso 1.- Elaborar los store procedure:

a)Para buscar el nombre del alumno y su especialidad a la que pertenece

Create procedure sp_datos

@cod as char(5)

as

select Nombre=Apealumno+', '+Nomalumno, Nomesp

from alumno a inner join especialidad e

on e.idesp=a.idesp where idalumno=@codb) para ver sus notas

Create procedure sp_nota

@cod char(5)

as

select c.Idcurso,Nomcurso,Exaparcial,exaFinal , promedio=str((exaparcial+2*exafinal )/3,4,1)

from notas n inner join curso c on c.idcurso=n.idcurso

where idalumno=@cod

paso 2.- Elegir nuevo proyecto : (sevivio web Asp)

Paso 3.- Codificar los metodos.

Autor Alberto Moreno

Imports System.Web.Services

Imports System.Data.OleDb

_

Public Class Service2

Inherits System.Web.Services.WebService

Dim Cn As New OleDbConnection("Provider=SqlOledb;Uid=sa;Database=Universidad;Server=(local)")

Dim Cmd As New OleDbCommand()

Dim Pm As OleDbParameter

+ Cdigo generado por el Diseador de servicios Web "

' EJEMPLO DE SERVICIO WEB

' El servicio de ejemplo HelloWorld() devuelve la cadena Hello World.

' Para generar, quite los comentarios de las siguientes lneas y, a continuacin, guarde y genere el proyecto.

' Para probar este servicio Web, compruebe que la pgina de inicio es el archivo .asmx

' y pulse F5.

'

' Public Function HelloWorld() As String

'HelloWorld = "Hello World"

' End Function

Public Function verNotas(ByVal cod As String) As DataSet

Cn.Open()

With Cmd

.Connection = Cn

.CommandType = CommandType.StoredProcedure

.CommandText = "sp_nota"

End With

Pm = Cmd.Parameters.Add("@cod", OleDbType.Char, 5)

Pm.Direction = ParameterDirection.Input

Pm.Value = cod

Dim da As New OleDbDataAdapter(Cmd)

Dim ds As New DataSet()

da.Fill(ds)

Return ds

da.Dispose()

Cmd.Dispose()

Cn.Dispose()

End Function

Public Function promedio(ByVal ds As DataSet, ByVal ncol As Byte) As Single

Dim sm, pro As Single

Dim can, f As Integer

sm = 0

can = ds.Tables(0).DefaultView.Count

For f = 0 To ds.Tables(0).DefaultView.Count - 1

sm += ds.Tables(0).Rows(f).Item(ncol)

Next

If can > 0 Then

pro = Math.Round(sm / can, 1)

Else

pro = 0

End If

Return (pro)

End Function

Public Function Datos(ByVal cod As String) As DataSet

Cn.Open()

With Cmd

.Connection = Cn

.CommandType = CommandType.StoredProcedure

.CommandText = "sp_datos"

End With

Pm = Cmd.Parameters.Add("@cod", OleDbType.Char, 5)

Pm.Direction = ParameterDirection.Input

Pm.Value = cod

Dim da As New OleDbDataAdapter(Cmd)

Dim ds As New DataSet()

da.Fill(ds)

Return ds

da.Dispose() dispose Libera los recursos utilizados por Component. Cmd.Dispose()

Cn.Dispose()

End Function

Public Function veresp() As DataSet

cn.Open()

With cmd

.Connection = cn

.CommandType = CommandType.StoredProcedure

.CommandText = "sp_especialidad"

End With

Dim da As New OleDbDataAdapter(cmd)

Dim ds As New DataSet()

da.Fill(ds)

Return ds

da.Dispose()

cmd.Dispose()

cn.Dispose()

End Function

End Class

Paso 4.- Generar el Webser_notas o tambien pulsando F5

Paso 5.- del menu Archivo ( Agregar proyecto ( Nuevo proyecto (El explorador de Windows agregando y cambiando al proyecto web_asp

La codificacin en el formulario 1 Webform1

Public Class WebForm1

Inherits System.Web.UI.Page

Protected WithEvents Label1 As System.Web.UI.WebControls.Label

Protected WithEvents Label2 As System.Web.UI.WebControls.Label

Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox

Protected WithEvents Label3 As System.Web.UI.WebControls.Label

Protected WithEvents Label5 As System.Web.UI.WebControls.Label

Protected WithEvents Label7 As System.Web.UI.WebControls.Label

Protected WithEvents btnok As System.Web.UI.WebControls.Button

Protected WithEvents lbmen As System.Web.UI.WebControls.Label

Protected WithEvents lbnom As System.Web.UI.WebControls.Label

Protected WithEvents lbesp As System.Web.UI.WebControls.Label

Protected WithEvents DgNota As System.Web.UI.WebControls.DataGrid

Protected WithEvents ValidationSummary1 As System.Web.UI.WebControls.ValidationSummary

Protected WithEvents RequiredFieldValidator1 As System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents HyperLink1 As System.Web.UI.WebControls.HyperLink

Protected WithEvents lbpro As System.Web.UI.WebControls.Label

+ Cdigo generado por el Diseador de Web Forms

Dim servicio As New localhost.Service2()

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

End Sub

Private Sub btnok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnok.Click

Dim ds As New DataSet()

Dim ds2 As New DataSet()

Dim fila As DataRow

Dim canr As Integer

Dim cod As String

Dim pro As Single

cod = TextBox1.Text

ds = servicio.Datos(cod)

canr = ds.Tables(0).DefaultView.Count

ds2 = servicio.verNotas(cod)

DgNota.DataSource = ds2

DgNota.DataBind()

If canr = 0 Then

lbnom.Text = ""

lbesp.Text = ""

lbmen.Text = "codigo no existe "

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

Aplicacin 2.- seleccionando en un combo DropDwonList1 una especialidad llenado desde un servicio , que muestre todos los alumnos de es aespecialidad.

Codificacin

Imports System.Data.OleDb

Public Class webalumnos

Inherits System.Web.UI.Page

Protected WithEvents DropDownList1 As System.Web.UI.WebControls.DropDownList

Protected WithEvents Label1 As System.Web.UI.WebControls.Label

Protected WithEvents DgAlumno As System.Web.UI.WebControls.DataGrid

Protected WithEvents Label4 As System.Web.UI.WebControls.Label

Protected WithEvents Lbnro As System.Web.UI.WebControls.Label

Protected WithEvents HyperLink1 As System.Web.UI.WebControls.HyperLink

Protected WithEvents Label2 As System.Web.UI.WebControls.Label

+" Cdigo generado por el Diseador de Web Forms "

Dim cn As New OleDbConnection("provider=sqloledb; uid=sa;database=universidad; server=(local)")

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

If Not IsPostBack Then Si la pagina no ha sido cargada

listar1()

End If End Sub

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

Aplicacion2.-

Servicios Web Northwind (Tabla Products - Categories)

Creamos un Proyecto de Tipo Visual Basic con la plantilla Servicio Web ASP .NET y le damos el nombre de WSNorthwind

En el Explorador de Soluciones, seleccionamos el archivo Service1.asmx y lo renombramos a: Northwind.asmx

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

No olvidar cambiar el nombre de la clase Service1 por Servicio_Northwind

_

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.

Dim oCn As New SqlConnection(Conexion)

Dim odst As DataSet = Nothing

Private Function Conexion() As String

Conexion = "uid=sa;server=(local);database=northwind"

End Function _

Public Function Listar_Productos() As DataSet

Creamos un Obj. DataAdapter que liste todos los productos

Dim odap As New SqlDataAdapter( _

"select productid,productname,unitprice,categoryid " & _

" from products order by productname", ocn)

odst = New DataSet()

Llenamos el Obj. Dataset, con el resultado de las filas del DataAdapter

odap.Fill(odst)

Devolvemos el Obj. Dataset

Return odst

End Function

_

Public Function Listar_Prod_x_Categoria(ByVal codcat As Integer) 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)

Creando el parmetro que utiliza la consulta SELECT del Obj. DataAdapter

odap.SelectCommand.Parameters.Add("@codigo", SqlDbType.Int).Value = codcat

odst = New DataSet()

Llenamos el Obj. Dataset, con el resultado de las filas del DataAdapter

odap.Fill(odst)

Return odst

End Function

_

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()

Dim odap As New SqlDataAdapter(ocmd)

odst = New DataSet()

odap.Fill(odst, "categorias")

ocn.Close()

Return odst

End Function

Luego para probar si el servicio web esta funcionando debemos seleccionar el servicio en el explorador de soluciones (WSNorthwind.asmx) y clic derecho Generar y examinar.

En donde podemos probar individualmente cada funcin el cual nos devuelve de acuerdo a los valores enviados un archivo en formato XML

Luego al final debemos ejecutar la aplicacin (F5), el cual nos muestra la misma pantalla anterior solo que lo muestra en una pagina web:

Lo importante aqu es la direccin URL, desde donde carga este servicio web, que para el ejemplo es:

http://localhost/WSNorthwind/Northwind.asmxFinalmente debemos probar este servicio desde un cliente, el cual puede ser una Aplicacin Windows o una Aplicacin Web

Aplicacin Web

Creamos un nuevo Proyecto de Visual Basic de tipo de plantilla Aplicacin Web ASP NE