Está en la página 1de 59

Programas paso a paso

programa facil

Home About

RSS Tkinter Label

Programacion en tres capas en C# usando asp.net


19 Jun En este post vamos a realizar una aplicacion usando visual studio 2008 en c#, en donde paso a paso se mostrara como crear un programa en c# utilizando tres capas, donde la tercera capa de presentacion se realizara en asp.net, este blog lo he realizado con lujo de detalles para que no existan dudas, pero aun asi, si las hay favor de comentarlas.

Empecemos
Para comenzar debemos tener una fundamentacion teorica, asi que recomiendo revisen como funciona la programacion en tres capas en el siguiente articulo de Wikipedia Programacion por capas antes de comenzar con este lab.

Ahora los requerimientos


Antes de comenzar necesitamos instalar 1. Visual Studio (se puede instalar 2008 o 2010 en este lab se usara 2008) 2. SQL Server (se puede instalar 2005 2008 2008R2 cualquier otro gestor teniendo en cuenta que la cadena de conexion cambiara, se recomienda usar SQL SERVER ya que el ejemplo que se muestra tiene la intencion de evitar errores pero si tienes experiencia en otro gestor usalo)

Empezemos con la cadena de conexion


La cadena de conexion es una de las partes mas importantes de este programa puesto que es con lo que nuestra base de datos se comunicara con el programa, especificamente solamente con la capa de datos, si tienes algo de experiencia con sql server esto deberia ser algo sencillo para ti. Despues de instalar SQL Server, se realiza una prueba de conexion donde podras ingresar tu login sa y tu password (el cual se ingreso al instalar SQL), despues de que se realize esta prueba satisfactoriamente, desconectate, con el boton y vuelve a

conectarte con el boton , asi podemos asegurar que lo que vamos a colocar en la cadena de conexion sean parametros validos, y asi evitar errores. Para realizar la cadena de conexion debemos saber 4 datos. 1. El nombre de nuestro servidor identificado como Data Source en la cadena de conexion 2. El nombre de nuestra base de datos como Initial Catalog 3. El nombre de el usuario User 4. El password con el que se identifica el usuario Password Todos estos datos a exepcion de el nombre de la base de datos (Initial Catalog) los encontramos cuando nos conectamos con sql server asi que la siguente imagen aclara los siguientes pasos de como construir la cadena de conexion.

Para crear la cadena solo debemos substituir los datos mostrados en la imagen anterior aqui dejo la cadena para que no exista confusion a la hora de transcibir
@"Data Source=???????????;Initial Catalog=??????;User ID=sa;Password=????????"

Nuestra ultima duda para la cadena de conexion es Initial Catalog la cual para efectos de este lab le asignaremos Empleados entonces nuestra cadena quedaria de la siguiente manera
@"Data Source=???????????;Initial Catalog=Empleados;User ID=sa;Password=????????"

Si cuentas con conocimientos de base de datos solo asigna cualsea el nombre de tu base de datos.

Crear la base de datos e insertar un registro


Ahora nos conectamos en SQL Server y dando click en la opcion New Query escribimos create database Empleados y presionamos F5 nos deberia mandar el mensaje Command(s) completed successfully., con eso hemos creado la base de datos llamada Empleados ahora tenemos que decirle a SQL que esa es la base de datos que queremos usar entonces escribimos use Empleados y presionamos nuevamente F5 y nos vuelve a enviar el mensaje Command(s) completed successfully. ya creada la base de datos necesitamos crear una tabla donde se puedan guardar nuestros datos que vamos a utilizar para esta nuestra aplicacion entonces escribimos el siguiente script y presionamos F5 1 create table Datos 2( 3id int identity primary key not null, 4strNombre varchar(20), 5strApellido varchar(20), tinyint 6intEdad ) 7 Este script crea la una tabla llamada Datos la cual tiene 4 campos: 1. id : es la llave primaria, es de tipo entero y no acepta valores nulos, y sirve para darle un identificar al empleado. 2. strNombre: es de tipo varchar con capacidad para 20 caracteres el cual nos sirve para almacenar el nombre del empleado 3. strApellido: es de tipo varchar con capacidad para 20 caracteres el cual nos sirve para almacenar el apellido del empleado 4. intEdad: es de tipo entero de capacidad para guardar valores de hasta 127 el cual nos sirve para almacenar la edad del empleado Ahora ya con la tabla Datos vamos a hacerlo un poco mas interesante, crearemos un procedimiento almacenado para que nuestro programa pueda guardar los datos introducidos desde la capa de presentacion. En SQL escribimos el siguiente script para crear nuestro procedimiento y presionamos F5 1create proc insDatos 2(

3@nombre varchar(20), 4@apellido varchar(20), @edad int 5) 6as insert into Datos values(@nombre,@apellido,@edad) 7 Este procedimiento realiza una insert y lo ejecutamos de la siguiente manera con su correspondiente F5 despues de escribirlo 1exec insDatos 'Juan','Perez',23 solo necesitamos saber los el tipo de argumentos que toma y el nombre del procedimiento. Ahora solo nos falta verificar que el registro se haya incluido en nuestra base de datos eso lo realizamos con lo siguiente seguido de un F5 1select * from Datos Con esto sql nos presentara en la ventana Results que se muestra en la imagen de bajo, con los datos que corresponden a la insercion realizada por nuestro procedimiento.

Si lo deseas y tienes experiencia con scripts aqui pongo todo lo que se necesita para nuestro lab un simple copy/paste realizara todo lo necesario 1 GO 2 use Empleados 3 GO 4 create table Datos ( 5 id int identity primary key not null, 6 strNombre varchar(20), 7 strApellido varchar(20), 8 intEdad tinyint 9 ) GO 10create proc insDatos 11( 12@nombre varchar(20), 13@apellido varchar(20), int 14@edad )
create database Empleados

15as insert into Datos values(@nombre,@apellido,@edad) 16GO exec insDatos 'Juan','Perez',23 17GO 18select * from Datos 19GO 20 21 22 23 24 Con esto finalizamos en nuestra base de datos es hora de programar en 3 capas

Capa de datos
Ya tenemos configurada nuestra base de datos lista para ser usada, ahora abriremos Visual Studio y crearemos un nuevo proyecto en apartado tipo de proyecto seleccionamos Visual C# y despues seleccionamos Windows, dentro de plantillas seleccionamos Plantillas instaladas de Visual Studio despues Biblioteca de Clases, llamaremos a nuestro proyecto Datos y la solucion llamada TresCapas, en la siguiente imagen se aclara los pasos antes descritos para la configuracion de nuestra solucion

Ahora en Visual Studio nos presenta una clase llamada Class1.cs que nosotros no pedimos, por lo que la eliminaremos, haciendo click derecho sobre la clase en el explorador de soluciones y seleccionaremos eliminar, a continuacion Visual Studio nos pedira una confirmacion a la cual aceptaremos. En la siguiente imagen se muestra el proceso de borrar Class1.cs

Ahora crearemos una clase llamada Configuracion en la cual pondremos nuesta cadena de conexion que anteriormente generamos para ello en el explorador de soluciones seleccionaremos el proyecto Datos y le haremos un click derecho para que nos muestre las opciones en ellas seleccionaremos agregar y por ultimo en el menu emergente seleccionaremos clase, todo el proceso se muestra en la siguiente imagen

El paso anterior nos llevara a una pantalla donde se muestra todos los elementos que Visual Studio puede agregar a nuestro proyecto, pero como hemos elegido agregar una clase, Visual Studio tiene todo seleccionado por nosotros lo unico que hay que hacer en este paso es escribir el nombre de nuestra clase la cual llamaremos Configuracion en el cuadro de texto y dar click en agregar, a continuacion se muestra una imagen del proceso.

Ahora Visual Studio nos muestra la estructura basica de nuestro programa, para hacer nuestra clase de configuracion tenemos que hacer publica nuestra clase agregandole la palabra reservada public antes de class y acontinuacion creamos una cadena de caracteres que contendra la cadena de conexion antes creada. y con esto ya establecido le crearemos un metodo a la clase Configuracion el cual se llamara CadenaConexion, y se encargara de proporcionar la cadena de conexion a cualquier proceso que la necesite. el codigo siguiente muestra como deberia de quedar nuestra clase y abajo se muestra una imagen de la clase en Visual Studio. 1 public class Configuracion 2 { static string cadenaConexion = 3 @"Data Source=???;Initial Catalog=Empleados;User 4 ID=sa;Password=???"; 5 6 public static string CadenaConexion 7 { get { return cadenaConexion; } 8 } 9 10} En el dado casi que se desee acceder con autentificacion de windows lo que se tiene que hacer es agregar Trusted_Connection=true o Integrated Security=SSPI a la linea de conexion en vez de el usuario y el password.

El siguiente paso es agregar otra clase de la misma manera que lo hicimos con Configuracion, pero esta vez nuestra clase se llamara MetodosDatos, esta clase tendra la tarea de acceder a la base de datos para los metodos para obtener la informacion de nuestra base de datos. Al igual que configuracion le agregaremos la propiedad de public, pero ademas a esta clase le agregaremos dos referencias. 1using System.Data.SqlClient; 2using System.Data; Las cuales se insertan antes del namespace estas referencias nos sirven para llamar metodos ya establecidos en C#, A continuacion agregaremos los siguientes tres metodos CrearComando Este metodo nos servira para crear un comando sql estandard como un select el cual sera regresado por su metodo return 1 2 public static SqlCommand CrearComando() { 3 string _cadenaConexion = Configuracion.CadenaConexion; 4 SqlConnection _conexion = new SqlConnection(); 5 _conexion.ConnectionString = _cadenaConexion; SqlCommand _comando = new SqlCommand(); 6 _comando = _conexion.CreateCommand(); 7 _comando.CommandType = CommandType.Text; 8 return _comando; 9 } 10 CrearComandoProc Este metodo al igual que el anterior nos crea un comando sql, pero con la diferencia que este metodo nos creara nuestro comando de manera que pueda ejecutar nuestro procedimiento almacenado que establecimos anteriormente llamado InsDatos.

1 public static SqlCommand CrearComandoProc() 2{ 3 string _cadenaConexion = Configuracion.CadenaConexion; 4 SqlConnection _conexion = new SqlConnection(_cadenaConexion); SqlCommand _comando = new SqlCommand("InsDatos", _conexion); 5 _comando.CommandType = CommandType.StoredProcedure; 6 return _comando; 7} 8 EjecutarComandoInsert Este metodo obtiene como parametro un comando sql que proviene de el metodo anterior CrearComandoProc, este metodo ejecuta el procedimineto almacenado que se le ha asignado al comando. En la siguiente clase que agregaremos veremos como se le asigna el procedimiento almacenado a este comando. 1 2 public static int EjecutarComandoInsert(SqlCommand comando) 3 { try 4 { 5 comando.Connection.Open(); 6 return comando.ExecuteNonQuery(); 7 } catch { throw; } 8 finally 9 { 10 comando.Connection.Dispose(); 11 comando.Connection.Close(); } 12 13} 14 EjecutarComandoSelect Este metodo ejecutara un comando select el cual nos regresara un datatable con todos los registros que se encuentren en alguna tabla dada, toma como parametro el comando que contiene la sentencia sql select. 1 2 public static DataTable EjecutarComandoSelect(SqlCommand comando) 3 { DataTable _tabla = new DataTable(); 4 try{ 5 comando.Connection.Open(); 6 SqlDataAdapter adaptador = new SqlDataAdapter(); 7 adaptador.SelectCommand = comando; adaptador.Fill(_tabla); 8 } 9 catch (Exception ex) 10 { throw ex; } 11 finally 12 { comando.Connection.Close(); } return _tabla; 13 } 14 15

Estas serian todas las clases que MetodosDatos.cs contendra, para evitar confusiones he agregado una imagen que muestra la estructura completa de nuestro metodo.

Ahora crearemos la clase que generara los comandos que se pasaron como parametros en la clase anterior MetodosDatos.cs.

Al igual que creamos las clases Configuracion y MetodosDatos anteriores crearemos una clase llamada AccesoDatos y se le agregara la propiedad public y las referencias 1using System.Data.SqlClient; 2using System.Data; de la misma manera que se realizo en la clase MetodosDatos.cs. En esta clase utilizaremos dos metodos: Insert Esta clase obtiene un comando sql proveniente de la clase MetodosDatos de su metodo CrearComandoProc le agrega los parametros que se necesitan para completar el procedimiento almacenado y despues lo ejecuta con el metodo EjecutarComandoInsert que se encuentra en la clase MetodosDatos, de esta manera podemos ingresar informacion a nuestra base de datos tan solo con asignarle parametros a nuestro metodo Insert el cual tien asignados 3 parametros Nombre, Apellido y Edad los cuales son los campos que tenemos asignados en nuestra base de datos. 1 public int Insert(string Nombre, string Apellido, int Edad) 2{ 3 SqlCommand _comando = MetodosDatos.CrearComandoProc(); 4 _comando.Parameters.AddWithValue("@nombre", Nombre); _comando.Parameters.AddWithValue("@apellido", Apellido); 5 _comando.Parameters.AddWithValue("@edad", Edad); 6 return MetodosDatos.EjecutarComandoInsert(_comando); 7} 8 ObtenerEmpleados Esta clase obtiene un comando de el metodo CrearComando de la Clase Metodos Datos lo almacena en _comando y despues le agrega la sentencia a ejecutar y por medio de el metodo EjecutarComandoSelect la ejecuta y nos regresa un DataTable que es un objeto que datos que contiene la estructura de una tabla (filas, columnas, registros, etc), 1public static DataTable ObtenerEmpleados() 2{ 3 SqlCommand _comando = MetodosDatos.CrearComando(); _comando.CommandText = "SELECT * FROM Datos"; 4 return MetodosDatos.EjecutarComandoSelect(_comando); 5 } 6 Estas dos clases integran a AccesoDatos.cs en la siguiente imagen se muestra la estructura completa

Con esto hemos terminado con nuestra capa de datos es hora de crear nuestra capa de negocio.

Capa de negocio

Para crear nuestra capa de negocio empezaremos por crear un nuevo proyecto, para esto nos situaremos en el explorador de soluciones y le haremos un click derecho a nuestra solcion llmada Tres Capas la cual nos presentara un menu y elegiremos Agregar y en el menu emergente seleccionaremos Nuevo Proyeto el proceso se muestra en la siguiente imagen

Ahora Visual estudio nos presenta todos los tipos de proyectos que podemos agregar a nuestra solucion, al igual que en Datos agregaremos una biblioteca de clases para ello en tipos de proyecto seleccionamos Windows y en plantillas seleccionamos Biblioteca de Clases, despues le asignamos el nombre de nuestra segunda capa en esta caso le llamaremos Negocio y le daremos aceptar. el proceso ilustra acontinuacion.

De igual manera que realizamos con la capa de Datos, Visual Studio nos presenta una clase Class1.cs que no pedimos por lo que la borraremos y crearemos una nueva llamada AccesoLogica esta sera la encargada de enviar y recibir informacion de las dos capas la de Datos y la de Presentacion. Ya con nuestra clase AccesoLogica.cs necesitamos agregar la referencia de nuestra capa anterior por lo que en referencias de el proyecto negocio le haremos un click derecho y seleccionaremos agregar referencia.

Visual Studio nos presenta con una ventana en la cual podemos elegir varios tipos de referencias, en esta ventana seleccionaremos la pestaa de Proyectos y ahi nos aparece nuestra biblioteca de clases Datos la cual esta contenida en nuestra Solucion llamada TresCapas. la seleccionamos y aceptamos

Ya con la referencia agregada, la podemos usar en nuestra clase AccesoLogica para usarla debemos agregarla de igual manera que lo hicimos en las clases anteriormente creadas, en la parte superior de nuestra clase agregamos 1using System.Data; 2using System.Data.SqlClient; Ahora agregaremos la propiedad de public a nuestra clase AccesoLogica. Con lo anterior en su lugar podemos empezar a crear nuestros metodos para nuestra clase que en este caso seran solo dos ObtenerEmpleados e Insert El metodo ObtenerEmpleados de esta clase AccesoLogica utiliza el metodo con el mismo nombre que se establecio en la capa de Datos que se encuentra en AccesoDatos, el cual recordaremos que nos regresa un Datatable conteniendo el resultado de la sentencia select. de esta manera la capa de negocio se comunica con la capa de datos y obtiene informacion proveniente de la base de datos. 1public static DataTable ObtenerEmpleados() 2{ 3return AccesoDatos.ObtenerEmpleados(); 4}

El metodo Insert recibe los parametros Nombre, Apellido y Edad y los envia por medio de una instancia de AccesoDatos a su metodo Insert. 1public int Insert(string Nombre, string Apellido, int Edad) 2{ 3AccesoDatos acceso = new AccesoDatos(); 4return acceso.Insert(Nombre, Apellido, Edad); 5} Todo lo anteriormente descrito se resume en la siguiente imagen

Con esto terminamos nuestra capa de Negocio y continuamos con nuestra ultima capa la capa de Presentacion.

Capa de presentacion
La ulima capa sera de presentacion y la realizaremos en ASP.NET, para esto debemos agregar un proyecto a nuestra solucion, para ello en haremos click derecho en nuestra solucion llamada TresCapas seleccionaremos agregar y posteriormente Nuevo Proyecto.

A continuacion se muestra la pantalla de agregar nuevo proyecto en el cual seleccionaremos en tipo de proyectos, Visual C# y acontinuacion Web, ahora en plantillas seleccionaremos Aplicacion Web ASP.NET y le asignaremos el nombre de Presentacion y aceptaremos.

Ahora Visual Studio nos presentara Default.aspx el cual es un formulario web que contiene etiquetas de tipo HTML y XML el cual nos sirve para presentar la informacion a nuestro usuario. En esta ventana Visual Studio nos muestra lo que contiene Default.aspx que es la estructura basica de una aplicacion web. 1 <%@ Page Language="C#" AutoEventWireup="true" 2 CodeBehind="Default.aspx.cs" Inherits="Presentacion._Default" %> 3 4 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 5 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 6 <html xmlns="http://www.w3.org/1999/xhtml" > 7 <head runat="server"> 8 <title>Pgina sin ttulo</title> 9 </head> 10<body> <form id="form1" runat="server"> 11 <div> 12 13 </div> 14 </form> </body> 15 16</html> Ahora apartir de esto empezaremos a agregar los elementos que necesitaremos para nuestra ultima capa, Para empezar cambiaremos el titulo de la pagina modificandole el title, le pondremos Tres Capas como titulo como se muestra acontinuacion <title>Tres Capas</title> dentro de la etiqueta <div> agregaremos una etiqueta llamada lblMensaje la cual se encargara de darle informacion a nuestro usuario de lo que esta sucediendo con nuestro programa. 1<div> <asp:Label ID="lblMensaje" runat="Server" ForeColor="red" 2EnableViewState="False"/> 3</div> Despues de haber agregado nuestra etiqueta debajo de ella agregaremos una tabla la cual contendra 7 filas. 1 <asp:Label ID="lblMensaje" runat="Server" ForeColor="red" 2 EnableViewState="False"/> 3 <table style="border:2px solid #cccccc;"> 4 <tr></tr> 5 <tr></tr> <tr></tr> 6 <tr></tr> 7 <tr></tr> 8 <tr></tr> 9 <tr></tr> </table> 10

Se escribiran acontinuacion el contenido de cada fila de la tabla. Fila 1: A esta fila por ser el encabezado se le cambiara el estilo, tendra el fondo azul y color de letra blanco, y se expande a lo largo de toda la tabla ocupando las 3 columnas que contendra nuestra tabla, en el encabezado contrendra el mensaje de Agregar Registros 1<tr style="background-color:#507CD1;color:White;"> 2 <th colspan="3">Agregar Registros</th> 3</tr> Fila 2: Esta fila contendra tres columnas identificadas por la etiqueta <td> en la primera columna se mostrara el mensaje Nombre para hacer referencia a el parametro necesario para obtener el nombre, en la segunda columna, se colocara un textbox para que el usuario introduzca el nombre a guardar en la base de datos el cual tendra el nombre de txtNombre, la ultima columna contiene un validador de nombre val1 que tendra la funcion de avisar al usuario que ha cometido un error al ingresar datos en txtNombre. 1 <tr> 2 <td>Nombre:</td> 3 <td> <asp:TextBox ID="txtNombre" runat="Server"></asp:TextBox> 4 </td> 5 <td> 6 <asp:RequiredFieldValidator ID="val1" runat="Server" Text="*" 7 ControlToValidate="txtNombre" Display="dynamic"></asp:RequiredFieldValidator> 8 </td> 9 </tr> 10 Fila 3: Al igual que la fila anterior tiene 3 columnas, en la primera columna el mensaje nombre en la segunda un textbox el con el nombre de txtApellido el cual nos provee de el apellido a guardar en la base de datos y por ultimo en la columna 3 un validador de nombre val2 el cual se encarga de verificar que el usuario indroduzca valores correctos en txtApellido. 1 <tr> 2 <td> 3 Apellido: 4 </td> 5 <td> <asp:TextBox ID="txtApellido" runat="Server"></asp:TextBox> 6 </td> 7 <td> 8 <asp:RequiredFieldValidator ID="val2" runat="Server" Text="*" ControlToValidate="txtApellido" 9 Display="dynamic"></asp:RequiredFieldValidator> 10 </td> 11</tr> 12 Fila 4: Esta fila en su columna 1 contiene el mensaje Edad, en la segunda columna se encuentra un textbox de nombre txtEdad el cual es mas pequeo que los textbox

anteriores por su propiedad columns, en la ultima columna se encuentra un validador de nombre val3 este validador verifica que el usuario solo ingrese numeros en el textbox txtEdad, al ocurrir este error se le presenta al usurario un mensaje de error. 1 <td> 2 Edad: 3 </td> 4 <td> <asp:TextBox ID="txtEdad" runat="Server" 5 Columns="4"></asp:TextBox> 6 </td> 7 <td> <asp:RequiredFieldValidator ID="val3" runat="Server" Text="*" 8 ControlToValidate="txtEdad" 9 Display="dynamic"></asp:RequiredFieldValidator> 10 <asp:CompareValidator ID="Comp" runat="Server" Text="Solo Enteros" 11ControlToValidate="txtEdad" Operator="DataTypeCheck" 12 Type="Integer"></asp:CompareValidator> 13 </td> 14</tr> Fila 5: La fila cinco contendra dos botones uno nos servira para enviar la informacion recolectada de los textbox y enviarla a la base de datos el otro boton nos servira para recibir todos los registros contenidos en la base de datos los cuales tendran un evento OnClick llamados Agregar y gvMostrar respectivamente. 1<tr> 2 <td>&amp;nbsp;</td> <td> 3 <asp:Button ID="btnEnviar" runat="server" Text="Enviar" 4OnClick="Agregar" /> 5 </td> 6 <td> <asp:Button ID="Load" runat="server" Text="Mostrar" 7OnClick="gvMostrar" /> 8 </td> 9</tr> Fila 6:Esta fila solo servira para separar a los botones de la fila 5 con el gridview de la fila 7. 1<tr> 2 <td/> 3</tr> Fila 7: En esta fila se encuentra el GridView que contendra los datos que previamente se habran ido agregando a nuestra base de datos. En este GridView se tienen que identificar los nombres de los campos que se quieren mostrar en la propiedad BoundField DataField y en la propiedad de HeaderText tenemos el nombre de el campo a mostrar en nuestra aplicacion.
colspan="3" align=center> 1 <td <asp:GridView ID="GridView" runat="server" 2 AutoGenerateColumns="false"> <tr>

<Columns> 3 <asp:BoundField DataField="id" HeaderText="Id" /> 4 <asp:BoundField DataField="strNombre" HeaderText="Nombre" /> 5 <asp:BoundField DataField="strApellido" HeaderText="Apellido" /> 6 <asp:BoundField DataField="intEdad" HeaderText="Edad" /> </Columns> 7 8 </asp:GridView> 9 </td> 10

Con lo anterior definido, hemos completado la Interface de usuario, el codigo completo se presenta acontinuacion asi como la ilustracion de como debe quedar. 1 <%@ Page Language="C#" AutoEventWireup="true" 2 CodeBehind="Default.aspx.cs" Inherits="Presentacion._Default" %> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 4 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 5 6 <html xmlns="http://www.w3.org/1999/xhtml" > 7 <head runat="server"> 8 <title>Tres Capas</title> </head> 9 <body> 10 <form id="form1" runat="server"> 11 <div> <asp:Label ID="lblMensaje" runat="Server" ForeColor="red" 12 EnableViewState="False"/> 13 <table style="border:2px solid #cccccc;"> 14 <tr style="background-color:#507CD1;color:White;"> 15 <th colspan="3">Agregar Registros</th> </tr> 16 <tr> 17 <td> 18 Nombre: 19 </td> 20 <td> <asp:TextBox ID="txtNombre" runat="Server"></asp:TextBox> 21 </td> 22 </tr> 23 <tr> 24 <td> Apellido: 25 </td> 26 <td> 27 <asp:TextBox ID="txtApellido" runat="Server"></asp:TextBox> 28 </td> 29 <td> <asp:RequiredFieldValidator ID="val2" runat="Server" 30 Text="*" ControlToValidate="txtApellido" 31 Display="dynamic"></asp:RequiredFieldValidator> 32 </td> 33 </tr> <tr> 34 <td> 35 Edad: 36 </td> 37 <td> 38 <asp:TextBox ID="txtEdad" runat="Server"

39Columns="4"></asp:TextBox> </td> 40 <td> 41 <asp:RequiredFieldValidator ID="val3" runat="Server" 42Text="*" ControlToValidate="txtEdad" Display="dynamic"></asp:RequiredFieldValidator> 43 <asp:CompareValidator ID="Comp" runat="Server" Text="Solo 44 Enteros" ControlToValidate="txtEdad" 45 Operator="DataTypeCheck" 46Type="Integer"></asp:CompareValidator> 47 </td> </tr> 48 <tr> 49 <td>&amp;nbsp;</td> 50 <td> 51 <asp:Button ID="btnEnviar" runat="server" Text="Enviar" 52OnClick="Agregar" /> </td> 53 <td> 54 <asp:Button ID="Load" runat="server" Text="Mostrar" 55OnClick="gvMostrar" /> 56 </td> </tr> 57 <tr> 58 <td/> 59 </tr> 60 <tr> 61 <td colspan="3" align=center> <asp:GridView ID="GridView" runat="server" 62 AutoGenerateColumns="false"> 63 <Columns> 64 <asp:BoundField DataField="id" HeaderText="Id" /> 65 <asp:BoundField DataField="strNombre" 66HeaderText="Nombre" /> <asp:BoundField DataField="strApellido" 67 HeaderText="Apellido" /> 68 <asp:BoundField DataField="intEdad" HeaderText="Edad" /> 69 </Columns> 70 </asp:GridView> </td> 71 </tr> 72 </table> 73 </div> 74 </form> 75</body> 76</html> 77 78 79

Para realizar la programacion de esta parte primero necesitamos agregar la referencia de nuestra capa de negocio, al igual que lo hicimos en la capa anterior. Seleccionaremos la capa de presentacion y le daremos un click derecho en referencias despues elegiremos agregar referencia

En esta ventana seleccionaremos la pestaa de Proyectos donde nos aparecera la capa de Negocios y la capa de Datos que ya hemos creado, seleccionamos la capa de Negocios y aceptamos.

Ahora debemos concluir nuestro programa, para esto solo basta con modificar el codigo que detras de nuestra interface, para ello nos dirigimos a el explorador de soluciones seleccionamos nuestro proyecto presentacion dentro de el encontraremos el archivo Default.aspx el cual modificamos anteriormente pero solo la parte de diseo ahora modificaremos el codigo que realizara lo antes planteado, seleccionamos Default.aspx le hacemos un click derecho y seleccionarmos Ver Codigo el cual nos llevara a el codigo detras de nuestra pagina.

Antes de empezar a escribir nuestro codigo necesitamos agregar la referencia de nuestra capa de Negocio, para ello agregaremos la referencia 1using Negocio; Enseguida agregaremos una clase llamada Agregar la cual es un evento del botn Enviar de que se encuentra en la fila 5 de nuestra, esta clase sera la encargada de realizar todo el proceso de insertar un registro en la base de datos, utilizando todo lo que hemos construido hasta ahora. Esta clase funciona de la siguiente manera, verifica que los datos ingresados estn correctos de lo contrario se aborta y sale de la ejecucin, en caso de que no se encuentren errores, se crea una instancia de la clase AccesoLogica que proviene de nuestra capa de Negocios esta instancia se le da el nombre de negocio, despus se asigna todos los contenidos de los textbox en una variable los cuales posteriormente nos sirven para pasar los parmetros requeridos para una insercin en nuestra capa de negocio por medio de su mtodo insert el cual devuelve un resultado, el cual sera

negativo en caso de que ocurra un error en la base de datos. y a continuacion se manda un mensaje por medio de la etiqueta lblMensaje en caso de que exista o no error en la insercin, por ultimo se libera la memoria de la instancia negocio. 1 protected void Agregar(object sender, EventArgs e) 2 { 3 if (!Page.IsValid) return; 4 AccesoLogica negocio = new AccesoLogica(); 5 string nombre = txtNombre.Text; 6 string apellido = txtApellido.Text; 7 int edad = Int32.Parse(txtEdad.Text); int resultado = negocio.Insert(nombre,apellido,edad); 8 if (resultado > 0) 9 lblMensaje.Text = "Nuevo Registro Agregado 10Satisfactoriamente."; 11 else 12 lblMensaje.Text = "Nombre: [<b>" + txtNombre.Text + 13"</b>] ya existe, agrege otro"; negocio = null; 14 } 15 Ahora agregaremos otra clase llamada gvMostrar la cual al igual que la anterior se ejecutara al hacer click en el botn Mostrar, esta clase tendr la tarea de llenar el GridView con los datos contenidos en la base de datos, para ello obtiene sus datos de la clase proveniente AccesoLogica llamada ObtenerEmpleados, el cual se le asigna como DataSource a nuestro GridView y despus se le liga a el GridView con la funcin DataBind, por ultimo se deshace de todos los datos contenidos en los textbox 1protected void gvMostrar(object sender, EventArgs e) 2{ 3 GridView.DataSource = AccesoLogica.ObtenerEmpleados(); GridView.DataBind(); 4 txtEdad.Text = txtNombre.Text = txtApellido.Text = ""; 5 } 6 Ahora si deseamos ver la informacin contenida en nuestra base de datos, al momento que ingresemos a nuestra pagina debemos agregar algo de codigo a nuestra clase Page_Load la cual C# nos ha proporcionado por defecto a la hora de crear un proyecto ASP, esta clase se ejecuta justo antes de que la pagina se muestre, por ello si colocamos algo en esta clase, esto aparecera al momento de cargar la pagina. En esta clase solo agregamos una linea de codigo, en la cual nos referiremos al evento gvMostrar el cual hemos realizado anteriormente, y lo utilizaremos para mostrar la informacion contenida en nuestra base de datos. 1protected void Page_Load(object sender, EventArgs e) 2 { if(!Page.IsPostBack) 3 gvMostrar(sender, e); 4 } 5

A continuacion el codigo completo de la capa de presentacion.

Con esto concluimos nuestro proyecto. pero antes de ejecutar nuestro proyecto por primera vez debemmos establecer la capa de presentacion como proyecto de uni
About these ads

Rate this:

6 Votes

Share this:

Twitter1 Facebook20

Like this:
87 Comments Posted by programaspasoapaso on June 19, 2011 in C# asp.net Tkinter Label

87 Responses to Programacion en tres capas en C# usando asp.net

1. nelson October 31, 2011 at 6:47 am muy pero muy buena esplicacion mejor no podia ser Reply

programaspasoapaso October 31, 2011 at 7:29 am gracias por tu comentario, si necesitas ayuda, solo hazmelo saber Reply

2. Abraham November 24, 2011 at 8:28 pm Hola antes que nada buen tutorial aunque, tengo unas dudas ojala me pudieras ayudar a despejar las en la capa de datos ahi se mapean todas las tablas que usare, igual en la capa de negocio y en la capa de presentacin irian todas las aspx que usare necesito hacer una capa de negocio y datos por cada aspx que yo tenga?????. Gracias y saludos. Reply

programaspasoapaso November 25, 2011 at 4:27 am Solo necesitas crear mas objetos clases o metodos en los proyectos ya existentes. Digamoslo de esta manera. puedes extender cada capa como tu desees. por ejemplo para consultar, modificar y eliminar, necesitas crear sus metodos en datos, negocio y presentacion.

Espero te haya entendio. Si necesitas algun ejemplo hazmelo saber. Reply

3. Abraham November 25, 2011 at 2:58 pm Exactamente esa era mi duda, creo que si me vendria bien un ejemplo, si fueras tan amable de realizar uno te lo agradeceria mucho. Gracias y saludos. Reply

programaspasoapaso November 25, 2011 at 5:23 pm ok en proceso espero este listo para maniana!! Reply

4. Sergio December 10, 2011 at 3:16 am Hola, ya hice parte del programa pero en la parte de agregar la referencia de Datos para usar AccesoDatos me marca un error el cual dice que no existe en el contexto actual y manda otro error que dice que no se puedo encontrar que esta

perdida el using o la referencia del ensamblado cuando ya he agregado la referencia porque me salen estos errores? gracias. Reply

programaspasoapaso December 10, 2011 at 8:09 pm muy probablemente es error de acceso, verifica que tu clase de AccesoDatos se encuentre como pulbic. Reply

5. Luis March 28, 2012 at 7:47 pm Muy buen material, lo probe con windows form y tambien funciona, soy nuevo en esto la pregunta es como seria si usaria un combo box el cual estrae datos de otra tabla??? Igual muchisimas Gracias. Reply

programaspasoapaso March 28, 2012 at 9:58 pm

Muy facil solo haz otro metodo parecido a obtenerEmpleados pero en el query ingresale el select de tu otra tabla, despues en tu capa de Negocio accesoLogica haces lo mismo que en obtener empleados, ya que tienes eso solo lo ligas a tu combobox, creo que la sintaxis es: suponiendo que tu combobox se llama cbx, tu metodo en accesoLogica se llama obtenerDatos y tu consulta es select datos from Empleados, seria cbx.DataSource = AccesoLogica.ObtenerDatos(); cbx.ValueMember = datos; espero te sirva, si tienes alguna duda aqui estamos para ayudarte. Reply

6. Julio Guaraca May 16, 2012 at 5:18 pm hola he seguido el tutorial al pie de la letra y me corre la pagina web pero no consigo registrar datos. Reply

7. programaspasoapaso May 16, 2012 at 5:41 pm Si lo deseas te puedo mandar el codigo fuente. puedes ponerme un correo donde te lo pueda enviar. Reply

Wilson Estacio March 19, 2013 at 2:41 am Por favor me puedes enviar el codigo fuente con*******n@hotmail.com Reply

8. Aquiles June 5, 2012 at 6:57 pm Hola, super bueno tu cdigo, pero igual que al otro amigo, sigo los pasos, pero no consigo insertar los datos. Reply

programaspasoapaso June 5, 2012 at 11:06 pm Gracias por tu comentario, Verificare cada uno de los pasos, regresa la semana siguiente. Reply

programaspasoapaso June 6, 2012 at 7:08 am

Listo se ha realizado la verificacin, falto una sola linea en el Page_Load, la cual realizaba una limpieza de los textbox en cada evento. la linea es if(!Page.IsPostBack) la cual se encarga de cargar el grid de consultas solo la primera vez que se ingresa a la pagina.

9. Gianina June 19, 2012 at 6:39 pm hola!! muy bueno .. me ayudo mucho pero x ahy me salen unos incovenientes crees q podrias enviar a mi correo el proyecto spero q si gracias!! Reply

programaspasoapaso June 19, 2012 at 7:32 pm Lo he mandado ten en cuenta que deberas agregar tu informacion en la cadena de conexion, ademas de tener tu base de datos lista. Reply

10. Little Shawn July 25, 2012 at 7:34 pm

Hola que tal, cmo podras obtener la cadena de configuracin a la Bd desde el web.config? Esto debido a que no son los mismos datos en el ambiente de desarrollo que el de produccin. Reply

programaspasoapaso July 28, 2012 at 9:27 am estos links que te pongo proponen soluciones. http://www.connectionstrings.com/Articles/Show/store-connectionstring-in-web-config http://stackoverflow.com/questions/5642474/setting-up-connectionstring-in-asp-net-to-sql-server Reply

11. Rolando Izaak Ramos August 2, 2012 at 4:31 pm Buenas, no me podrias mandar el codigo del ejemplo, esta excelente la explicacion pero me gustaria verlo con mas detalle Una pregunta, usas procedimientos almacenados? Reply

programaspasoapaso

August 2, 2012 at 9:55 pm Ya lo mande a tu correo, respecto a la pregunta, te recomiendo que lo leas detenidamente la parte de base de datos esos detalles estn bien descritos ah. Reply

12. ignacio martinez August 17, 2012 at 1:34 pm Buenas si lo quiero hacer en Visual Studio 2010 no hay problemas es que estoy comenzando a programar en este lenguaje. saludos Reply

programaspasoapaso August 18, 2012 at 12:28 am Es practicamente lo mismo, el unico cambio considerable es la capa de presentacion, en especifico el marcado. Las funciones, las capas, todo el codigo detras lo que es C# funciona de la misma manera, solo pon especial atencion en los elementos que integran el ASP de VS2010, es casi lo mismo pero si existen algunas diferencias. Reply

13.

Victor August 26, 2012 at 9:21 pm Muy buen tutorial te felicito!!!,yo practicamente uso la misma estructura lo unico que uso deferentes es una capa de Entidades(Con sus respectivos metodos GETs ty SETs) la cual uso para trasportar los datos Ejem: String nombreMarcaP = Honda; marcaP = new Marca(nombreMarcaP); cantRegiAfec = mMarca.registrarMarca(marcaP);//aqui invoco mi metodo insert y envio mi objeto con mis datos En el metodo propiamente lo que inserto son los atributos del objeto(Sacado medianes sus respectivos metodos Gets) Que opinas? es mas ordenado tener una capa de entidades? o mas bien me estoy complicando la existencia? Es que mas me beneficia esto? Reply

programaspasoapaso August 27, 2012 at 3:54 am Muy bueno tu comentario, de hecho yo igual lo realizo de la manera que mencionaste, pero este ejemplo es muy sencillo seria otra capa, y trabajo extra por la simplicidad, pero en proyectos mas grandes es necesario, para simplificar las cosas, talvez en el futuro haga un ejemplo de eso. pero sencillo para evitar hacer tan largo el tutorial, gracias por tu aporte. Reply

14. Renzo September 4, 2012 at 8:06 pm Hola buen aporte para aprender un poco mas sobre capas: Tengo una consulta ojala y me ayudes con esta yo s evb.net pero ahora queria pasar una clase que tenia sobre capas de vb.net a c# pero tengo varios problemas ya que en mi capa de negocio en vb.net yo lo hago con interfaces y despues estas se implementan en una capa DAO en su respectiva clase pero cuando lo hago en c# para implementar estas interfaces tengo que escribirlas una por una no t lo autocompleta como en vb.net no se si sabes alguna otra manera de hacerlo. Muy parte de eso tambien declaro un Event Mensaje(string msg) en mi interface de vb.net pero en c# ya he probado con delegados y event para hacer un mantenimiento el problema es que me agrega y todo pero nunca sale el mensaje ojala puedas realizar algunos ejemplos de interfaces y eventos en c# Reply

programaspasoapaso September 4, 2012 at 10:31 pm Intentare realizar un post sobre interfaces e implementarlas para guardar informacion sobre el usuario y asi no usar variables de sesion. En cuanto este listo te mando un correo. Saludos. Reply

15. Joel Mora September 17, 2012 at 3:44 am

Que tutorial tan excelente nunca habia visto algo tan bien explicado y menos de esto en 3 capas, yo estuve sigiendo paso paso aun que yo la conexion la hice a MySql y solo fueon cambios en unas instrucciones, pero todo jalo genial no trono en nada, FELICITACIONES que bueno eres para explicar. Saludos Reply

Topo June 7, 2013 at 4:50 pm Hola como estas me podrias enviar el tuyo en MySQL? muchas gracias! Reply

programaspasoapaso June 7, 2013 at 9:05 pm Por el momento no puedo adaptarlo, pero es muy parecido el cdigo. Los pasos para conectarse son simples, aqui te dejo un link y en cuanto a los scripts de bd, tendras que adaptarlos a MySQL, no cambia mucho pero puede tener sus diferencias, http://dev.mysql.com/doc/refman/5.1/en/connector-net-visualstudio-making-a-connection.html

Topo June 7, 2013 at 9:08 pm Ok gracias por responder, el problema que estoy teniendo ahora es con el &gt de la sentencia if(resultado >0) que me dice que no existe en el contexto actual, y ya agregue las referencias y ademas el using.. alguna pista?

programaspasoapaso June 7, 2013 at 9:19 pm Tienes razn existe un error con el formato que le da el wordpress, se quedo el &gt; que debera ser un >, gracias por ayudar a depurar el cdigo.

Topo June 7, 2013 at 9:33 pm buenisimo!!!! ahora lo que no me anda es la coneccion a la base, tengo que instalar algo mas ademas del SQL server 2005, tengo la base andando, cree los stores procedures, la tabla anda todo, hay que instalar un adaptadro como el de Mysql y referenciar alguna dll?

programaspasoapaso June 7, 2013 at 9:43 pm

Checa bien la cadena de conexin a la base de datos, no necesitas instalar nada extra, con las bibliotecas descritas en este tutorial debera funcionar. Cual es el problema?? no vez los datos? o te manda un error?

Topo June 7, 2013 at 9:45 pm me da este error: ExecuteReader: CommandText property has not been initialized en la seccion MetodoDatos.cs public Static DataTable ( te comento que le agregue para que al levantar muestre los datos de la base y tengo al menos un registo para msotrar.

programaspasoapaso June 7, 2013 at 9:59 pm Si las bibliotecas using System.Data.SqlClient; using System.Data; estan declaradas, el problema deberia ser tu consulta a la base de datos. Primero verifica en SQL Server que funcione y despues la colocas en el _comando.CommandText.

Topo June 7, 2013 at 10:19 pm

ANDA!!! sos un genio!!! ahora te comento, habia dejado la linea del SELECT comentada porque queria ver si podia agregarle un Where para que la busqueda sea por un criterio pero no me salio no se como pasarle la referencia..

programaspasoapaso June 7, 2013 at 10:31 pm Eso es mas fcil, te comento En otro post http://programaspasoapaso.wordpress.com/2011/11/26/ejemplode-aplicacion-usando-programacion-en-tres-capas/ realice varios where, revisa el metodo verificarUsuario. en especifico la linea SELECT usuario FROM usuarios WHERE usuario = +usuario+ AND password = +pass+; en ese post te puedes dar una idea clara de lo que quieres realizar, ese post no esta terminado pero es muy entendible para lo que deseas realizar.

16. C&Y September 25, 2012 at 6:02 pm Hola mui buen tutorial, sera que me podrias enviar tu proyecto a mi correo xq tmb me aparecen algunos detallitos, y no se si puedo trabajarlo en 2010 Reply

programaspasoapaso September 25, 2012 at 8:32 pm Enviado, gracias por comentar! Reply

17. Luis Algarra September 30, 2012 at 12:55 am Exelente tutorial aunque me hubiese gustado que usara wpf tambien para saber como implementarlo en aplicaciondes de escritorio me podrias mandar el codigo del ejemplo para verlo mas detalladamente y ver si puedo aplicarlo en wpf gracias Reply

programaspasoapaso September 30, 2012 at 2:17 am Enviado, es exactamente lo mismo, lo bueno de este modelo es que puedes usar como presentacion de escritorio o web, ademas de que si lo desearas tambien podrias escoger otro gestor de base de datos, eso es lo que te proporciona hacerlo en capas. En cuanto al wpf, no tengo mucha experiencia ese si lo tendre que rechazar por el momento. Reply

18. blogdejosem October 9, 2012 at 7:47 am Antes que nada, felicidades por el tutorial, muy completo y muy detallado con todos los comentarios y capturas. Despus de terminarlo me surge una duda: Al mtodo ObtenerEmpleados le he aadido un parmetro para obtener un empleado dado el ID, ahora bien, si el usuario me proporciona un ID invlido, Dnde hara esta comprobacin? Gracias. Reply

programaspasoapaso October 9, 2012 at 8:02 am Muy buena tu observacion, mira en ese caso cambias o agregas (jejeje, la ventaja de las capas) en el negocio. public static string ObtenerEmpleados(int id) { try { DataTable tabla = AccesoDatos.ObtenerEmpleados(id); return tabla.Rows[0][0].ToString(); } catch { return No existe ese empleado; } } demaciado facil para ser verdad, Saludos

Reply

blogdejosem October 9, 2012 at 9:53 am Gracias por la respuesta, pero en el ejemplo que he hecho, adems de pasarle el ID, utilizo LINQ, y en lugar de devolver un DataTable, devuelvo un IQueryable, sbes cmo podra hacerlo en este caso? Gracias

programaspasoapaso October 9, 2012 at 2:34 pm Para ser honesto no los he utilizado, pero no es tanto problema la idea es tomar el primer elemento y si no contiene primer elemento en caso de no haber primer elemento se manda un mensaje de advertencia para obtener el primer elemento puedes consultar la siguiente pagina ahi te puedes dar una idea de como realizarlo. http://stackoverflow.com/questions/1869304/determine-theposition-of-an-element-in-an-iqueryable

19. blogdejosem October 9, 2012 at 3:46 pm

Determinar si la consulta devuelve un resultado no es problema, puedo utilizar el mtodo Any(), que hace exactamente eso. El problema lo tengo cuando la consulta s devuelve resultados, que no s cmo mostrar el string generado en un GridView Reply

programaspasoapaso October 9, 2012 at 4:23 pm Pues si estas regresando un string entonces no deberias usar gridview, Pero si necesitas hacerlo, deberias regresar el Iqueryable intego a la presentacion, al regresar el Iqueryable verificas que tenga datos, si tiene, los muestras, si no pues escondes el gridview, espero te haya ayudado, Saludos Reply

blogdejosem October 9, 2012 at 8:37 pm S, necesito mostrar un GridView :S. El IQueryable lo paso ntegro a la presentacin, el problema es que si me llega un parmetro invlido a la funcin de la capa de datos, me lanza un error en la capa datos, que es donde est la funcin que recibe el parmetro, necesito poner el control ah, he intentado devolver un IQueryable vaco, pero no doy con la funcin apropiada para hacerlo.

programaspasoapaso October 9, 2012 at 10:13 pm Se exactamente cual es tu problema, es mas de logica que de capas, Pero mira, lo que puedes hacer es verificar antes de mandar el query si hay registros o no! depende de eso si usas el grid o no! por ejemplo! if (existen datos) { llenar grid } else { crear un list predeterminado que contenga el mensaje de error y llenar el grid con el } Espero te ayude!

20. blogdejosem October 30, 2012 at 11:19 am Muchas gracias por la ayuda, al final he dejado un poco de lado LINQ para cuando tenga tiempo de investigar y estoy utilizando SqlDataSource. En lugar de montar la consulta completa en la capa de Datos, creo un procedimiento al que le paso un SqlDataSource y una condicion y filtro utilizando SelectParameters. La comprobacin de si la consulta devuelve o no datos la hago en la capa de aplicacin. De nuevo, gracias por tu seguimiento Reply

21. jesus armando macias benitez November 6, 2012 at 4:35 pm Disculpa me marta error en la clase AccesoDatos.cs en la cadena @Data Source=???;Initial Catalog=Empleados;User ID=sa;Password=???; y tambien puse los valores de conexion que tengo con SQLServer Reply

programaspasoapaso November 6, 2012 at 6:31 pm Verifica que las comillas sean " y no un error muy comun y de formato en wordpress, seguramente ese es el error, mucha suerte, Saludos Reply

22. Angel November 12, 2012 at 5:59 pm Hola, me puedes hacer el favor de enviarme el cdigo fuente, cosa que te agradecera. mi email es b*****8@hotmail.com, gracias. Reply

programaspasoapaso November 13, 2012 at 12:02 am Enviado, Muchas gracias por comentar. Reply

23. Juzas November 15, 2012 at 7:36 pm Excelente aporte muchas gracias mi buen!!! soy tu fan si nos compartes mas de tu conocimiento haber como me enteras. Gracias de nuevo!!! Reply

programaspasoapaso November 15, 2012 at 7:38 pm Gracias por darte el tiempo de comentar!, estare posteando pronto, estoy preparando mas aportes, solo necesito el tiempo para editar! Reply

24.

Danielmrsud November 16, 2012 at 2:50 am Super bueno tu post, anduve buscando algo as por todos lados pero por fin me encontr con esta pagina super bueno, se agradecera que subieras uno mas completo con delete y update, si tiene unos as te agradecera que me los enviaras a mi correo, lo que pasa que me estoy preparando para mi examen de titulo. saludos!! Reply

programaspasoapaso November 19, 2012 at 6:18 pm Es algo que he querido terminar pero necesito algo de tiempo. Gracias por tu comentario. Reply

25. Hector November 20, 2012 at 9:17 pm Estimado muy buena la explicacion de como trabajar en mvc ahora bien queria saber si es que serias tan amable de enviarme este mismo proyecto ?? saludos y sigue aportando de esa manera Reply

programaspasoapaso November 20, 2012 at 9:53 pm Gracias por tu comentario, He enviado la aplicacion, Saludos. Reply

26. rens November 22, 2012 at 10:41 am me interesa tu ejemplo te dejo mi coorreo re****40@hotmail.com Reply

programaspasoapaso November 22, 2012 at 3:43 pm Gracias por tu comentario, He enviado la aplicacion, Saludos. Reply

Antony

December 8, 2012 at 6:27 am Excelente tutorial , muy bien explicado mis Respetos. a mi me corrio ala perfeccion , haora lo me falta agregarle los Elimnar,Actulizar, y a lo mejor buesquedas con `parametros ..Gracias Man muy bien explicado..

27. Enzo December 11, 2012 at 4:19 am Muy buen tutorial, se agradece lo detallado de las explicaciones. Reply

28. Danilo December 27, 2012 at 9:35 pm Te pasaste esta muy bien explicado. te agradecera si me puedes enviar el proyecto porfa. saludos y gracias Reply

29. Jonathan Mamani Chuquimaco January 6, 2013 at 4:40 am

el ejenplo esta chevere per solo un detalle es que no me valida no se si yo lo abre copiado mal pero lo revise varias veses y lo veo exacto pero buneo me podrias decir en qu etoy fallando porfavor ingresa los mismos nombres grasias de verdad grasias y si tuvieras mas ejemplos de tres capas con todo (insertar,modificar,eliminary buscar ) te lo agrdeeria vastante es qyue de verdd nesecito aprender esto de veras grasias nuevamente Reply

programaspasoapaso January 8, 2013 at 4:52 am Empezare maana a terminar lo que empece, solo dame un poco de tiempo y terminare la aplicacion en 3 capas. Gracias por tu comentario. Reply

30. Edwin January 20, 2013 at 4:46 am muy buen ejemplo y funciona que es lo mas importante, me gustaria saber como llamar a la aplicacion al momento de colgarala en els servidor IE ya qu la solucion TresCapas es la que contiene a la capa presentacin que tiene la pagina aspx, he probado llamando a la carpeta presentacin directamente asi como a la carpeta tresCapas Reply

programaspasoapaso January 21, 2013 at 4:16 pm Lo que tu comentas debe de hacerse en el IIS, te dejo el siguiente link donde podrias encontrar informacion sobre como hostear tu aplicacion en el servidor, http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Lib rary/IIS/d2cc4557-dbe7-46f9-9b63-df1d09f17c6a.mspx?mfr=true Reply

31. Juan Luis January 23, 2013 at 4:26 pm por favor si me podrias mandar el proyecto por favor, muchas gracias de antemano Reply

32. OscarSade February 6, 2013 at 12:03 am Hola y gracias por publicar este tipo de proyectos, son de gran ayuda, excelente explicacin. Solo tengo una duda la cual radica en la cadena de conexin, En data source es el servidor, en el initial catalog es la bd y si no tengo user ni password, ya que se conecta con Windows authentication, que debo de poner o no poner?? gracias

Reply

programaspasoapaso February 6, 2013 at 6:31 am Hola gracias por tu comentario, ya investigue y parece ser que solo tienes que agregar Trusted_Connection=true or Integrated Security=SSPI a la cadena en vez de el usuario y el password te dejo el link por si tienes dudas. Link cadena de coneccion Saludos. En breve actualizo el post, gracias por ayudar a mejorarlo Reply

OscarSade February 6, 2013 at 6:11 pm Gracias, ya esta listo. Tu pgina es genial, como haces esos estilos? cool!

33. jesusmax9 February 20, 2013 at 1:59 pm

Hola excelente tutorial, podrias ayudarme con un tutorial donde uses capas y Crystal Reports, te lo agradeceria muchisimo. Reply

programaspasoapaso February 20, 2013 at 6:35 pm Mira es muy buena tu observacion, me consumiria muchisimo tiempo, pero es posible. Exactamente que necesitas, te podria ayudar a aclarar tus dudas, o si lo prefieres puedes esperar a el tutorial seria demaciado tiempo alrededor de un mes por que ya se me estan apilando las ideas. Reply

34. OscarSade February 26, 2013 at 4:16 pm Hola espero que puedas ayudarme, tengo un problema al insertar datos con un programa similar a este, pero la diferencia que la inserccin de datos es dinmica, ya que tengo un stored procedure que hace referencia a parametros, los cuales son los registros que debo de introducir a una tabla cualesquiera, podrias hacer un tutorial parecido a lo que te menciono. Gracias Reply

programaspasoapaso

February 26, 2013 at 6:17 pm Mi mayor duda es, si insercion dinamica es en el servidor o en la aplicacion?? y podrias poner un ejemplo de eso? Reply

35. Dario Javier March 27, 2013 at 2:07 pm Hola que tal muy bueno excelente tu guia hermanocomo te podras dar cuenta soy un novato en programacion pero me gustaria que pusieras un tutorial desde cero para conectar la bd sql con C#, desde como configurar sql para conexiones remotas, ya que tengo demaciados problemas al hacer eso Reply

programaspasoapaso March 28, 2013 at 4:47 am La verdad instalar sql es algo sencillo, solo tienes que seguir esta guia http://www.sqlserverclub.com/essentialguides/how-to-install-sql-serverquick-guide.aspx en cuanto a la conexion la detallo en este post, No he hecho conexiones remotas, pero no creo que sea tan dificil, solo es cosa de direccionar hacia el servidor, en ese caso si deberias investigar un poco. Saludos. Reply

36. Alan Rios April 15, 2013 at 12:40 am Hola, realmente muy buen tutorial, mis mas sinceras felicitaciones por darte el tiempo de explicarlo detalladamente. Pero en verdad me gustara saber como puedes hacer consultas. ejemplo: un pantallaso donde puedes buscar todas tus ventas registradas por filtro de fechas, por tipo de documento, por cliente; todo esa consulta en un pantallaso. realmente se programar en vb.net que es programacin de escritorio y todo eso lo domino pero en programacin web recin estoy empezando y quera saber si me podras brindar ese ejemplo. Te dejo mi correo a*****4@hotmail.com . De ante mano muchas gracias. Reply

programaspasoapaso April 15, 2013 at 5:14 am He mandado a tu correo el ejemplo de una aplicacin en asp.net c# que he estado realizando desde hace tiempo, el cual se encuentra Aqu Espero te ayude en tu transicin a ASP.NET. Saludos Reply

37. Amilkar May 10, 2013 at 1:24 am

thank master!! muy buen ejemplo de programacion se te agradece mucho, puedes subir mas post de asp por fa Reply

38. vanesa May 18, 2013 at 4:11 pm hola esta genial tu explicacion desde ya muchisimas gracias, serias tan amable de enviarme el proyecto a mi correo? saludos! Reply

39. richard May 20, 2013 at 2:21 am amigo eres un capo!! es posible que me envies el proyecto? si no fuera mucha la patudez roxhman@gmail.com te lo agradeceria recontramil!! Reply

40. Nikotwo May 29, 2013 at 8:51 am Genial tu explicacin he ledo bastante sobre este tema y solo a ti te entend

Saludos y gracias por compartir lo que sabes. PD: si puedes me mandas el archivo, te lo agradecer aun mas Reply

Leave a Reply

Buscar

Posts Recientes o Almacenar y descargar archivos PDF en SQL 2005 usando ASP.NET con C# o Tkinter Frame o Validar multiple textbox en ASP.NET usando JavaScript con el evento onkeypress Categorias o C# asp.net o Python Tkinter Top Rated Posts
All | Today | This Week | This Month

Aplicacion usando programacion tres capas ASP.NET 5/5 (1 vote) o Almacenar y descargar Archivos PDF en SQL 2005 usando ASP.NET con C# 5/5 (1 vote) o Programacion en tres capas en C# usando asp.net 4/5 (6 votes) Autor: Carlos Torres o programaspasoapaso Meta o Register o Log in o Entries RSS o Comments RSS o WordPress.com

Blog at WordPress.com. Theme: Choco by .css{mayo}. Entries (RSS) and Comments (RSS) Follow

Follow Programas paso a paso


Get every new post delivered to your Inbox. Powered by WordPress.com