none
Pasar un dato de la Capa de datos a la Capa de presentacion RRS feed

  • Pregunta

  • Hola, tengo una aplicación dividida en 3 capas (datos, negocio y presentación), quiero pasar el valor de una variable que esta en la capa datos a un método de la capa presentación. Es un id que obtengo al crear un registro y lo necesito para que una vez creado, pueda imprimir ese mismo registro. El código es el siguiente:

    Soy novato en la programación y más aún por capas pero espero que me puedan apoyar, de antemano les agradezco.

    namespace CapaDatos
    {
        public class DCompras
        {
            //Variables
            private int _IdCompra;

             .......

            public int IdCompra
            {
                get { return _IdCompra; }
                set { _IdCompra = value; }
            }

            .......

             public string Insertar(DCompras Compras, List<DDetalleCompras> Detalle)
            {
                string rpta = "";
                SqlConnection SqlCon = new SqlConnection();
                try
                {
                    SqlCon.ConnectionString = Conexion.Cn;
                    SqlCon.Open();
                    SqlTransaction SqlTra = SqlCon.BeginTransaction();
                    SqlCommand SqlCmd = new SqlCommand();
                    SqlCmd.Connection = SqlCon;
                    SqlCmd.Transaction=SqlTra;
                    SqlCmd.CommandText = "spcompras_insertar";
                    SqlCmd.CommandType = CommandType.StoredProcedure;

                    SqlParameter ParIdCompra = new SqlParameter();
                    ParIdCompra.ParameterName = "@idcompra";
                    ParIdCompra.SqlDbType = SqlDbType.Int;
                    ParIdCompra.Direction = ParameterDirection.Output;
                    SqlCmd.Parameters.Add(ParIdCompra);

                   .............

                   this.IdCompra=Convert.ToInt32(SqlCmd.Parameters["@idcompra"].Value);//Este es el valor que quiero 

    pasar a mi capa presentación

    namespace CapaNegocio
    {
        public class NCompras
        {
            public static string Insertar(int idtrabajador, int idproveedor, DateTime fecha, string tipo_comprobante, string folio_factura, decimal iva, string estado, DataTable dtDetalles)
            {
                DCompras Obj = new DCompras();
                Obj.IdCompra = Obj.IdCompra;

    .......

    namespace CapaPresentacion
    {
        public partial class frmCompras : Form

    .....

            private void btnGuardar_Click(object sender, EventArgs e)
            {

                    frmReporteCompra frm = new frmReporteCompra();
                    frm.IdCompra = ? //Aquí es donde necesito el valor de la capa de datos

    Gracias otra vez.

    miércoles, 2 de noviembre de 2016 23:31

Todas las respuestas

  • Hola, tienes dos alternativas 1) Crear una propiedad (o un método) en la capa de negocios en tu objeto NCompras que se encargue de invocar la capa de datos y buscar el valor para pasárselo a la capa de presentación  2) Agregar una referencia a la capa de datos y usarla directamente en la capa de presentación (con cuidado por que si haces esto mucha gente va a querer crucificarte :-) ).

    Saludos

    jueves, 3 de noviembre de 2016 7:22
  • Hola te agradezco el apoyo, te paso el código de lo que hice, pero que desgraciadamente no me esta funcionando, al parecer no logró pasar el valor de la variable (propiedad).

    namespace CapaNegocio

    {

       public class NCompras

       {

           private int _IC;

           public int IC {

           get { return _IC; }

           set { _IC = value; }

       }

    public NCompras()

    {

    }

    public NCompras(int ic)

    {

    this.IC = ic;

    }

    ....

    public static string Insertar(int idtrabajador, int idproveedor, DateTime fecha, string tipo_comprobante, string folio_factura, decimal iva, string estado, DataTable dtDetalles)

    {

    DCompras Obj = new DCompras();

    Obj.IdTrabajador = idtrabajador;

    Obj.IdProveedor = idproveedor;

    Obj.Fecha = fecha;

    Obj.Tipo_Comprobante = tipo_comprobante;

    Obj.Folio_Factura = folio_factura;

    Obj.Iva = iva;

    Obj.Estado = estado;

    NCompras Compras = new NCompras();//Aqui creo la instancia

    Compras.IC = Obj.IdCompra;//Aqui según yo asigno el valor

    .....

    namespace CapaPresentacion

    {

    public partial class frmCompras : Form

    {

    .....

    private void btnGuardar_Click(object sender, EventArgs e)

    {

    .....

    NCompras Com = new NCompras();

    frm.IdCompra = Com.IC;//Aquí es donde la llamo, pero al parecer no lleva nada

    Como te comento soy novato en este tema, así que lo más seguro es que no estoy haciendo las cosas bien, se supone que IC debería llevar el Id de la compra que obtuve desde la capa datos. Si me pudieras ayudar poniéndome algo de código. Gracias de antemano.

    • Editado RoblesOax viernes, 4 de noviembre de 2016 0:54 No salió con formato
    viernes, 4 de noviembre de 2016 0:32