You are on page 1of 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

a continuacion se muestra una imagen del proceso. pero como hemos elegido agregar una clase. En la siguiente imagen se muestra el proceso de borrar Class1. . a continuacion Visual Studio nos pedira una confirmacion a la cual aceptaremos.Ahora en Visual Studio nos presenta una clase llamada Class1. 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.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. por lo que la eliminaremos. 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. haciendo click derecho sobre la clase en el explorador de soluciones y seleccionaremos eliminar.cs que nosotros no pedimos.

el codigo siguiente muestra como deberia de quedar nuestra clase y abajo se muestra una imagen de la clase en Visual Studio.Password=???".Ahora Visual Studio nos muestra la estructura basica de nuestro programa. 1 public class Configuracion 2 { static string cadenaConexion = 3 @"Data Source=???. 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.Initial Catalog=Empleados. y se encargara de proporcionar la cadena de conexion a cualquier proceso que la necesite. 5 6 public static string CadenaConexion 7 { get { return cadenaConexion. .User 4 ID=sa. } 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.

esta clase tendra la tarea de acceder a la base de datos para los metodos para obtener la informacion de nuestra base de datos. pero ademas a esta clase le agregaremos dos referencias. SqlCommand _comando = new SqlCommand(). 8 return _comando. 4 SqlConnection _conexion = new SqlConnection().El siguiente paso es agregar otra clase de la misma manera que lo hicimos con Configuracion. 5 _conexion.CommandType = CommandType.Data. .Text. 7 _comando. 1using System. Las cuales se insertan antes del namespace estas referencias nos sirven para llamar metodos ya establecidos en C#. 6 _comando = _conexion. 9 } 10 CrearComandoProc Este metodo al igual que el anterior nos crea un comando sql.ConnectionString = _cadenaConexion.Data. 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. Al igual que configuracion le agregaremos la propiedad de public.CreateCommand(). pero con la diferencia que este metodo nos creara nuestro comando de manera que pueda ejecutar nuestro procedimiento almacenado que establecimos anteriormente llamado InsDatos. pero esta vez nuestra clase se llamara MetodosDatos.SqlClient. 2using System.CadenaConexion.

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

cs. .Estas serian todas las clases que MetodosDatos. Ahora crearemos la clase que generara los comandos que se pasaron como parametros en la clase anterior MetodosDatos.cs contendra. para evitar confusiones he agregado una imagen que muestra la estructura completa de nuestro metodo.

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.CrearComando(). 1public static DataTable ObtenerEmpleados() 2{ 3 SqlCommand _comando = MetodosDatos.Data.AddWithValue("@edad". 5 } 6 Estas dos clases integran a AccesoDatos. de la misma manera que se realizo en la clase MetodosDatos. Nombre).EjecutarComandoInsert(_comando).cs. 4 return MetodosDatos.AddWithValue("@apellido". _comando. 1 public int Insert(string Nombre. etc). Capa de negocio . _comando. 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.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.Parameters.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. Apellido y Edad los cuales son los campos que tenemos asignados en nuestra base de datos. Apellido). int Edad) 2{ 3 SqlCommand _comando = MetodosDatos. columnas. registros. 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. 4 _comando. 5 _comando.EjecutarComandoSelect(_comando).AddWithValue("@nombre".Parameters.CommandText = "SELECT * FROM Datos". 6 return MetodosDatos. Edad).Data.SqlClient.CrearComandoProc().Parameters. 2using System. string Apellido.

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. 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.Para crear nuestra capa de negocio empezaremos por crear un nuevo proyecto. el proceso ilustra acontinuacion. despues le asignamos el nombre de nuestra segunda capa en esta caso le llamaremos Negocio y le daremos aceptar. .

Ya con nuestra clase AccesoLogica.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. . Visual Studio nos presenta una clase Class1.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.De igual manera que realizamos con la capa de Datos.

SqlClient.ObtenerEmpleados(). 1public static DataTable ObtenerEmpleados() 2{ 3return AccesoDatos.Data. 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.Visual Studio nos presenta con una ventana en la cual podemos elegir varios tipos de referencias. la seleccionamos y aceptamos Ya con la referencia agregada. el cual recordaremos que nos regresa un Datatable conteniendo el resultado de la sentencia select. en esta ventana seleccionaremos la pestaña de Proyectos y ahi nos aparece nuestra biblioteca de clases Datos la cual esta contenida en nuestra Solucion llamada TresCapas. la podemos usar en nuestra clase AccesoLogica para usarla debemos agregarla de igual manera que lo hicimos en las clases anteriormente creadas.Data. 4} . en la parte superior de nuestra clase agregamos 1using System. de esta manera la capa de negocio se comunica con la capa de datos y obtiene informacion proveniente de la base de datos. Ahora agregaremos la propiedad de public a nuestra clase AccesoLogica. 2using System.

Insert(Nombre.El metodo Insert recibe los parametros Nombre. para ello en haremos click derecho en nuestra solucion llamada TresCapas seleccionaremos agregar y posteriormente Nuevo Proyecto. Capa de presentacion La ulima capa sera de presentacion y la realizaremos en ASP. 4return acceso. para esto debemos agregar un proyecto a nuestra solucion. 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. int Edad) 2{ 3AccesoDatos acceso = new AccesoDatos().NET. string Apellido. . Apellido y Edad y los envia por medio de una instancia de AccesoDatos a su metodo Insert. Apellido. Edad). 1public int Insert(string Nombre.

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

org/1999/xhtml" > 7 <head runat="server"> 8 <title>Página sin título</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.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.aspx. 1 <%@ Page Language="C#" AutoEventWireup="true" 2 CodeBehind="Default. 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.w3."> 4 <tr></tr> 5 <tr></tr> <tr></tr> 6 <tr></tr> 7 <tr></tr> 8 <tr></tr> 9 <tr></tr> </table> 10 .aspx que es la estructura basica de una aplicacion web.org/TR/xhtml1/DTD/xhtml1-transitional. En esta ventana Visual Studio nos muestra lo que contiene Default. 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._Default" %> 3 4 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.dtd"> 6 <html xmlns="http://www. 1 <asp:Label ID="lblMensaje" runat="Server" ForeColor="red" 2 EnableViewState="False"/> 3 <table style="border:2px solid #cccccc.cs" Inherits="Presentacion. Para empezar cambiaremos el titulo de la pagina modificandole el title.0 Transitional//EN" 5 "http://www.w3.Ahora Visual Studio nos presentara Default.

en la segunda columna se encuentra un textbox de nombre txtEdad el cual es mas pequeño que los textbox . 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.color:White.Se escribiran acontinuacion el contenido de cada fila de la tabla. 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. tendra el fondo azul y color de letra blanco. en el encabezado contrendra el mensaje de Agregar Registros 1<tr style="background-color:#507CD1. Fila 1: A esta fila por ser el encabezado se le cambiara el estilo."> 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. y se expande a lo largo de toda la tabla ocupando las 3 columnas que contendra nuestra tabla. 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> 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.

</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. al ocurrir este error se le presenta al usurario un mensaje de error.anteriores por su propiedad columns. 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. colspan="3" align=center> 1 <td <asp:GridView ID="GridView" runat="server" 2 AutoGenerateColumns="false"> <tr> . 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. 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.nbsp. 1<tr> 2 <td>&amp. en la ultima columna se encuentra un validador de nombre val3 este validador verifica que el usuario solo ingrese numeros en el textbox txtEdad.

"> 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" .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.aspx.<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.w3."> 14 <tr style="background-color:#507CD1. 1 <%@ Page Language="C#" AutoEventWireup="true" 2 CodeBehind="Default.w3. el codigo completo se presenta acontinuacion asi como la ilustracion de como debe quedar.0 Transitional//EN" 4 "http://www.cs" Inherits="Presentacion. hemos completado la Interface de usuario._Default" %> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.color:White.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 5 6 <html xmlns="http://www.

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 .

seleccionamos la capa de Negocios y aceptamos. 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 pestaña de Proyectos donde nos aparecera la capa de Negocios y la capa de Datos que ya hemos creado.Para realizar la programacion de esta parte primero necesitamos agregar la referencia de nuestra capa de negocio.

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

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

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

Con esto concluimos nuestro proyecto.net Tkinter Label → 87 Responses to Programacion en tres capas en C# usando asp.A continuacion el codigo completo de la capa de presentacion.net 1. 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. nelson October 31. 2011 at 6:47 am muy pero muy buena esplicacion mejor no podia ser Reply . 2011 in C# asp.

o programaspasoapaso October 31. por ejemplo para consultar. Gracias y saludos. 2011 at 7:29 am gracias por tu comentario. negocio y presentacion. 2011 at 8:28 pm Hola antes que nada buen tutorial aunque. solo hazmelo saber Reply 2. igual en la capa de negocio y en la capa de presentación irian todas las aspx que usare ó necesito hacer una capa de negocio y datos por cada aspx que yo tenga?????. tengo unas dudas ojala me pudieras ayudar a despejar las en la capa de datos ahi se mapean todas las tablas que usare. si necesitas ayuda. Reply o programaspasoapaso November 25. puedes extender cada capa como tu desees. 2011 at 4:27 am Solo necesitas crear mas objetos clases o metodos en los proyectos ya existentes. necesitas crear sus metodos en datos. . Digamoslo de esta manera. Abraham November 24. modificar y eliminar.

Sergio December 10. si fueras tan amable de realizar uno te lo agradeceria mucho. Si necesitas algun ejemplo hazmelo saber. Gracias y saludos. 2011 at 3:16 am Hola. 2011 at 2:58 pm Exactamente esa era mi duda. Reply 3. Reply o programaspasoapaso November 25. Abraham November 25. 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 . creo que si me vendria bien un ejemplo. 2011 at 5:23 pm ok en proceso espero este listo para maniana!! Reply 4.Espero te haya entendio.

Reply 5. soy nuevo en esto la pregunta es como seria si usaria un combo box el cual estrae datos de otra tabla??? Igual muchisimas Gracias…. 2011 at 8:09 pm muy probablemente es error de acceso. 2012 at 9:58 pm . 2012 at 7:47 pm Muy buen material.perdida el using o la referencia del ensamblado cuando ya he agregado la referencia ¿porque me salen estos errores? gracias. Luis March 28. Reply o programaspasoapaso December 10. verifica que tu clase de AccesoDatos se encuentre como pulbic. lo probe con windows form y tambien funciona. Reply o programaspasoapaso March 28.

programaspasoapaso May 16. Julio Guaraca May 16.ValueMember = “datos”. Reply 6. cbx. si tienes alguna duda aqui estamos para ayudarte. 2012 at 5:41 pm Si lo deseas te puedo mandar el codigo fuente. seria cbx.DataSource = AccesoLogica. creo que la sintaxis es: suponiendo que tu combobox se llama cbx.ObtenerDatos(). tu metodo en accesoLogica se llama obtenerDatos y tu consulta es “select datos from Empleados”. ya que tienes eso solo lo ligas a tu combobox.Muy facil solo haz otro metodo parecido a obtenerEmpleados pero en el query ingresale el select de tu otra tabla. espero te sirva. despues en tu capa de Negocio accesoLogica haces lo mismo que en obtener empleados. Reply 7. 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 o . puedes ponerme un correo donde te lo pueda enviar.

2012 at 11:06 pm Gracias por tu comentario. Verificare cada uno de los pasos. super bueno tu código.Wilson Estacio March 19. Aquiles June 5. regresa la semana siguiente. pero igual que al otro amigo. 2012 at 6:57 pm Hola. pero no consigo insertar los datos. Reply  programaspasoapaso June 6. 2012 at 7:08 am . Reply o programaspasoapaso June 5. 2013 at 2:41 am Por favor me puedes enviar el codigo fuente con*******n@hotmail. sigo los pasos.com Reply 8.

2012 at 7:34 pm .IsPostBack) la cual se encarga de cargar el grid de consultas solo la primera vez que se ingresa a la pagina. Gianina June 19. la cual realizaba una limpieza de los textbox en cada evento.. 9. falto una sola linea en el Page_Load. 2012 at 7:32 pm Lo he mandado ten en cuenta que deberas agregar tu informacion en la cadena de conexion. me ayudo mucho pero x ahy me salen unos incovenientes crees q podrias enviar a mi correo el proyecto … spero q si gracias!! Reply o programaspasoapaso June 19.Listo se ha realizado la verificación. Little Shawn July 25. la linea es if(!Page. 2012 at 6:39 pm hola!! muy bueno . ademas de tener tu base de datos lista. Reply 10.

cómo podrías obtener la cadena de configuración a la Bd desde el web. 2012 at 4:31 pm Buenas. Rolando Izaak Ramos August 2. esta excelente la explicacion pero me gustaria verlo con mas detalle… Una pregunta. usas procedimientos almacenados? Reply o programaspasoapaso .connectionstrings. Reply o programaspasoapaso July 28. 2012 at 9:27 am estos links que te pongo proponen soluciones.Hola que tal. no me podrias mandar el codigo del ejemplo.com/Articles/Show/store-connectionstring-in-web-config http://stackoverflow. http://www.com/questions/5642474/setting-up-connectionstring-in-asp-net-to-sql-server Reply 11.config? Esto debido a que no son los mismos datos en el ambiente de desarrollo que el de producción.

el unico cambio considerable es la capa de presentacion. respecto a la pregunta.August 2. todo el codigo detras lo que es C# funciona de la misma manera. ignacio martinez August 17. saludos Reply o programaspasoapaso August 18. solo pon especial atencion en los elementos que integran el ASP de VS2010. Reply 13. 2012 at 9:55 pm Ya lo mande a tu correo. las capas. 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. Las funciones. Reply 12. en especifico el marcado. 2012 at 12:28 am Es practicamente lo mismo. te recomiendo que lo leas detenidamente la parte de base de datos esos detalles están bien descritos ahí. . es casi lo mismo pero si existen algunas diferencias.

pero en proyectos mas grandes es necesario. pero este ejemplo es muy sencillo seria otra capa. 2012 at 3:54 am Muy bueno tu comentario. gracias por tu aporte…. para simplificar las cosas. y trabajo extra por la simplicidad.registrarMarca(marcaP). 2012 at 9:21 pm Muy buen tutorial te felicito!!!. marcaP = new Marca(nombreMarcaP). cantRegiAfec = mMarca. talvez en el futuro haga un ejemplo de eso.//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 o programaspasoapaso August 27. pero sencillo para evitar hacer tan largo el tutorial. Reply .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”.Victor August 26. de hecho yo igual lo realizo de la manera que mencionaste.

net no se si sabes alguna otra manera de hacerlo. Joel Mora September 17. Renzo September 4. Muy parte de eso tambien declaro un Event Mensaje(string msg) en mi interface de vb. 2012 at 3:44 am . 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.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. 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. Reply 15.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 o programaspasoapaso September 4. En cuanto este listo te mando un correo.net a c# pero tengo varios problemas ya que en mi capa de negocio en vb.net pero ahora queria pasar una clase que tenia sobre capas de vb. Saludos.14.

pero todo jalo genial no trono en nada. tendras que adaptarlos a MySQL.Que tutorial tan excelente nunca habia visto algo tan bien explicado y menos de esto en 3 capas. 2013 at 9:05 pm Por el momento no puedo adaptarlo. http://dev. yo estuve sigiendo paso paso aun que yo la conexion la hice a MySql y solo fueon cambios en unas instrucciones. aqui te dejo un link y en cuanto a los scripts de bd.1/en/connector-net-visualstudio-making-a-connection. Saludos… Reply o Topo June 7. 2013 at 4:50 pm Hola como estas me podrias enviar el tuyo en MySQL? muchas gracias! Reply  programaspasoapaso June 7. Los pasos para conectarse son simples.html  . no cambia mucho pero puede tener sus diferencias.com/doc/refman/5. FELICITACIONES que bueno eres para explicar. pero es muy parecido el código.mysql.

2013 at 9:33 pm buenisimo!!!! ahora lo que no me anda es la coneccion a la base. cree los stores procedures. 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. hay que instalar un adaptadro como el de Mysql y referenciar alguna dll?  programaspasoapaso June 7. tengo la base andando. 2013 at 9:19 pm Tienes razón existe un error con el formato que le da el wordpress.Topo June 7. 2013 at 9:08 pm Ok gracias por responder. se quedo el “&gt”. alguna pista?  programaspasoapaso June 7.  Topo June 7. gracias por ayudar a depurar el código. que debería ser un >. la tabla anda todo. y ya agregue las referencias y ademas el using. 2013 at 9:43 pm .. tengo que instalar algo mas ademas del SQL server 2005.

2013 at 10:19 pm . 2013 at 9:45 pm me da este error: ExecuteReader: CommandText property has not been initialized en la seccion MetodoDatos. el problema deberia ser tu consulta a la base de datos. con las bibliotecas descritas en este tutorial debería funcionar. 2013 at 9:59 pm Si las bibliotecas using System.  Topo June 7. estan declaradas.Data. Primero verifica en SQL Server que funcione y despues la colocas en el _comando.CommandText.Data.Checa bien la cadena de conexión a la base de datos.  programaspasoapaso June 7. using System.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.SqlClient. Cual es el problema?? no vez los datos? o te manda un error?  Topo June 7. no necesitas instalar nada extra.

en ese post te puedes dar una idea clara de lo que quieres realizar. 2013 at 10:31 pm Eso es mas fácil. y no se si puedo trabajarlo en 2010 Reply . en especifico la linea “SELECT usuario FROM usuarios WHERE usuario = „”+usuario+”„ AND password = „”+pass+”„”..ANDA!!! sos un genio!!! ahora te comento. revisa el metodo verificarUsuario. 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. sera que me podrias enviar tu proyecto a mi correo xq tmb me aparecen algunos detallitos.wordpress.com/2011/11/26/ejemplode-aplicacion-usando-programacion-en-tres-capas/ realice varios where. C&Y September 25. ese post no esta terminado pero es muy entendible para lo que deseas realizar. te comento… En otro post http://programaspasoapaso. 2012 at 6:02 pm Hola mui buen tutorial. 16.  programaspasoapaso June 7.

lo bueno de este modelo es que puedes usar como presentacion de escritorio o web. gracias por comentar! Reply 17. En cuanto al wpf. Reply . 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 o programaspasoapaso September 30. 2012 at 2:17 am Enviado.o programaspasoapaso September 25. ademas de que si lo desearas tambien podrias escoger otro gestor de base de datos. no tengo mucha experiencia ese si lo tendre que rechazar por el momento. eso es lo que te proporciona hacerlo en capas. 2012 at 8:32 pm Enviado. Luis Algarra September 30. es exactamente lo mismo.

} } demaciado facil para ser verdad. felicidades por el tutorial. mira en ese caso cambias o agregas (jejeje. Reply o programaspasoapaso October 9. la ventaja de las capas) en el negocio.ObtenerEmpleados(id). ahora bien. return tabla.Rows[0][0]. 2012 at 8:02 am Muy buena tu observacion.ToString(). blogdejosem October 9. 2012 at 7:47 am Antes que nada. Después de terminarlo me surge una duda: Al método ObtenerEmpleados le he añadido un parámetro para obtener un empleado dado el ID. si el usuario me proporciona un ID inválido. muy completo y muy detallado con todos los comentarios y capturas.18. public static string ObtenerEmpleados(int id) { try { DataTable tabla = AccesoDatos. Saludos . ¿Dónde haría esta comprobación? Gracias. } catch { return “No existe ese empleado”.

pero en el ejemplo que he hecho. devuelvo un IQueryable. ¿sábes cómo podría hacerlo en este caso? Gracias  programaspasoapaso October 9. 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. además de pasarle el ID. y en lugar de devolver un DataTable. 2012 at 3:46 pm .com/questions/1869304/determine-theposition-of-an-element-in-an-iqueryable 19.Reply  blogdejosem October 9. blogdejosem October 9. 2012 at 2:34 pm Para ser honesto no los he utilizado. http://stackoverflow. 2012 at 9:53 am Gracias por la respuesta. utilizo LINQ.

pero no doy con la función apropiada para hacerlo. espero te haya ayudado. el problema es que si me llega un parámetro inválido a la función de la capa de datos.Determinar si la consulta devuelve un resultado no es problema. necesito poner el control ahí. los muestras. puedo utilizar el método Any(). he intentado devolver un IQueryable vacío. El problema lo tengo cuando la consulta sí devuelve resultados. que es donde está la función que recibe el parámetro. necesito mostrar un GridView :S. si tiene. si no pues escondes el gridview. que no sé cómo mostrar el string generado en un GridView Reply o programaspasoapaso October 9. al regresar el Iqueryable verificas que tenga datos. deberias regresar el Iqueryable intego a la presentacion. que hace exactamente eso. Pero si necesitas hacerlo. Saludos Reply  blogdejosem October 9.  . 2012 at 4:23 pm Pues si estas regresando un string entonces no deberias usar gridview. me lanza un error en la capa datos. 2012 at 8:37 pm Sí. El IQueryable lo paso íntegro a la presentación.

creo un procedimiento al que le paso un SqlDataSource y una condicion y filtro utilizando SelectParameters. De nuevo. es mas de logica que de capas. 2012 at 11:19 am Muchas gracias por la ayuda. La comprobación de si la consulta devuelve o no datos la hago en la capa de aplicación.programaspasoapaso October 9. Pero mira. En lugar de montar la consulta completa en la capa de Datos. gracias por tu seguimiento Reply . blogdejosem October 30. 2012 at 10:13 pm Se exactamente cual es tu problema. al final he dejado un poco de lado LINQ para cuando tenga tiempo de investigar y estoy utilizando SqlDataSource. 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.

cosa que te agradecería. mucha suerte. 2012 at 6:31 pm Verifica que las comillas sean " y no ” un error muy comun y de formato en wordpress. Reply .Password=???”. gracias.User ID=sa. mi email es b*****8@hotmail. jesus armando macias benitez November 6. seguramente ese es el error.com. Saludos Reply 22.Initial Catalog=Empleados. me puedes hacer el favor de enviarme el código fuente. 2012 at 5:59 pm Hola. 2012 at 4:35 pm Disculpa me marta error en la clase AccesoDatos.21. Angel November 12.cs en la cadena @”Data Source=???. y tambien puse los valores de conexion que tengo con SQLServer… Reply o programaspasoapaso November 6.

estoy preparando mas aportes. solo necesito el tiempo para editar! Reply 24. Muchas gracias por comentar. Gracias de nuevo!!! Reply o programaspasoapaso November 15. . Reply 23. 2012 at 7:38 pm Gracias por darte el tiempo de comentar!. 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. 2012 at 12:02 am Enviado.o programaspasoapaso November 13. estare posteando pronto. Juzas November 15.

Hector November 20. 2012 at 6:18 pm Es algo que he querido terminar pero necesito algo de tiempo. saludos!! Reply o programaspasoapaso November 19.Danielmrsud November 16. Reply 25. se agradecería que subieras uno mas completo con delete y update. si tiene unos así te agradecería que me los enviaras a mi correo. 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 . lo que pasa que me estoy preparando para mi examen de titulo. anduve buscando algo así por todos lados pero por fin me encontré con esta pagina super bueno. 2012 at 2:50 am Super bueno tu post. Gracias por tu comentario.

rens November 22. Reply 26. 2012 at 3:43 pm Gracias por tu comentario.o programaspasoapaso November 20.com Reply o programaspasoapaso November 22. 2012 at 9:53 pm Gracias por tu comentario. 2012 at 10:41 am me interesa tu ejemplo te dejo mi coorreo re****40@hotmail. Saludos. He enviado la aplicacion. Saludos. Reply  Antony . He enviado la aplicacion.

December 8. haora lo me falta agregarle los Elimnar. 2012 at 6:27 am Excelente tutorial . te agradecería si me puedes enviar el proyecto porfa. 2012 at 4:19 am Muy buen tutorial.Actulizar. muy bien explicado mis Respetos…. Enzo December 11. Danilo December 27. 27. y a lo mejor buesquedas con `parametros ……………….Gracias Man muy bien explicado…. 2012 at 9:35 pm Te pasaste esta muy bien explicado. a mi me corrio ala perfeccion . Reply 28. saludos y gracias Reply 29... 2013 at 4:40 am . se agradece lo detallado de las explicaciones. Jonathan Mamani Chuquimaco January 6.

solo dame un poco de tiempo y terminare la aplicacion en 3 capas.modificar. Gracias por tu comentario. 2013 at 4:52 am Empezare mañana a terminar lo que empece.eliminary buscar ) te lo agrdeeria vastante es qyue de verdd nesecito aprender esto de veras grasias nuevamente Reply o programaspasoapaso January 8. 2013 at 4:46 am muy buen ejemplo y funciona que es lo mas importante.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. Reply 30. he probado llamando a la carpeta presentación directamente asi como a la carpeta tresCapas Reply . Edwin January 20. 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 presentación que tiene la pagina aspx.

OscarSade February 6. http://www.mspx?mfr=true Reply 31.com/technet/prodtechnol/WindowsServer2003/Lib rary/IIS/d2cc4557-dbe7-46f9-9b63-df1d09f17c6a. que debo de poner o no poner?? gracias . Solo tengo una duda la cual radica en la cadena de conexión. en el initial catalog es la bd y si no tengo user ni password. Juan Luis January 23. 2013 at 4:26 pm por favor si me podrias mandar el proyecto por favor.microsoft. 2013 at 4:16 pm Lo que tu comentas debe de hacerse en el IIS. son de gran ayuda. te dejo el siguiente link donde podrias encontrar informacion sobre como hostear tu aplicacion en el servidor.o programaspasoapaso January 21. 2013 at 12:03 am Hola y gracias por publicar este tipo de proyectos. En data source es el servidor. excelente explicación. ya que se conecta con Windows authentication. muchas gracias de antemano Reply 32.

En breve actualizo el post. 2013 at 6:11 pm Gracias. ya esta listo. jesusmax9 February 20.Reply o programaspasoapaso February 6. Tu página es genial. gracias por ayudar a mejorarlo Reply  OscarSade February 6. como haces esos estilos? cool! 33. 2013 at 1:59 pm . 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. 2013 at 6:31 am Hola gracias por tu comentario.

te podria ayudar a aclarar tus dudas.Hola excelente tutorial. pero la diferencia que la insercción de datos es dinámica. pero es posible. Exactamente que necesitas. Reply o programaspasoapaso February 20. 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. tengo un problema al insertar datos con un programa similar a este. podrias ayudarme con un tutorial donde uses capas y Crystal Reports. podrias hacer un tutorial parecido a lo que te menciono. 2013 at 4:16 pm Hola espero que puedas ayudarme. me consumiria muchisimo tiempo. OscarSade February 26. ya que tengo un stored procedure que hace referencia a parametros. los cuales son los registros que debo de introducir a una tabla cualesquiera. te lo agradeceria muchisimo. Reply 34. Gracias Reply o programaspasoapaso . 2013 at 6:35 pm Mira es muy buena tu observacion.

desde como configurar sql para conexiones remotas.aspx en cuanto a la conexion la detallo en este post. Dario Javier March 27. 2013 at 4:47 am La verdad instalar sql es algo sencillo. Saludos. en ese caso si deberias investigar un poco. solo tienes que seguir esta guia http://www.February 26. 2013 at 6:17 pm Mi mayor duda es. ya que tengo demaciados problemas al hacer eso… Reply o programaspasoapaso March 28.com/essentialguides/how-to-install-sql-serverquick-guide. 2013 at 2:07 pm Hola que tal muy bueno excelente tu guia hermano…como 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#. pero no creo que sea tan dificil. No he hecho conexiones remotas. si insercion dinamica es en el servidor o en la aplicacion?? y podrias poner un ejemplo de eso? Reply 35. solo es cosa de direccionar hacia el servidor.sqlserverclub. Reply .

net que es programación de escritorio y todo eso lo domino pero en programación web recién estoy empezando y quería saber si me podrías brindar ese ejemplo.net c# que he estado realizando desde hace tiempo. ejemplo: un pantallaso donde puedes buscar todas tus ventas registradas por filtro de fechas. por cliente. el cual se encuentra Aquí Espero te ayude en tu transición a ASP. mis mas sinceras felicitaciones por darte el tiempo de explicarlo detalladamente. Saludos Reply 37. Te dejo mi correo a*****4@hotmail. realmente se programar en vb. De ante mano muchas gracias. Pero en verdad me gustaría saber como puedes hacer consultas. Reply o programaspasoapaso April 15.36.com . realmente muy buen tutorial. Alan Rios April 15.NET. 2013 at 5:14 am He mandado a tu correo el ejemplo de una aplicación en asp. por tipo de documento. 2013 at 12:40 am Hola. todo esa consulta en un pantallaso. 2013 at 1:24 am . Amilkar May 10.

Nikotwo May 29. 2013 at 8:51 am Genial tu explicación he leído bastante sobre este tema y solo a ti te entendí . serias tan amable de enviarme el proyecto a mi correo? saludos! Reply 39. richard May 20. …puedes subir mas post de asp por fa Reply 38.thank master!! muy buen ejemplo de programacion se te agradece mucho. vanesa May 18.com te lo agradeceria recontramil!! Reply 40. 2013 at 2:21 am amigo eres un capo!! es posible que me envies el proyecto? si no fuera mucha la patudez roxhman@gmail. 2013 at 4:11 pm hola esta genial tu explicacion desde ya muchisimas gracias.

NET usando JavaScript con el evento onkeypress Categorias o C# 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. te lo agradeceré aun mas Reply Leave a Reply  Buscar    Posts Recientes o Almacenar y descargar archivos PDF en SQL 2005 usando ASP.Saludos y gracias por compartir lo que sabes.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# o Tkinter Frame o Validar multiple textbox en ASP. PD: si puedes me mandas el archivo.com o .NET con C# 5/5 (1 vote) o Programacion en tres capas en C# usando asp.

Entries (RSS) and Comments (RSS) Follow Follow “Programas paso a paso” Get every new post delivered to your Inbox. Theme: Choco by . Powered by WordPress.css{mayo}.com.com .Blog at WordPress.