Foros del Web » Programación para mayores de 30 ;) » Programación General »

Error El nombre cbx no existe en el contexto actual c#

Estas en el tema de Error El nombre cbx no existe en el contexto actual c# en el foro de Programación General en Foros del Web. Hola espero me puedan ayudar a solucionar mi problema que ya no doi una, trate de heredar del de mi clase principal y no logro ...
  #1 (permalink)  
Antiguo 07/10/2015, 16:28
Avatar de fidl117  
Fecha de Ingreso: julio-2013
Ubicación: Mexico
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Pregunta Error El nombre cbx no existe en el contexto actual c#

Hola espero me puedan ayudar a solucionar mi problema que ya no doi una, trate de heredar del de mi clase principal y no logro terminar con este problema que es siguiente.

Deseo enviar como parametro el valor que contiene un combobox a una consulta, que se encuentra desde una segunda clase (como se mostrara en el codigo), al colocar el parametro en :

Código:
 public class PagoBL 
    {

        private readonly PagoDA oPagoDA = new PagoDA();

        public IList<Pago> ObtenerPagos()
        {
            return oPagoDA.ObtenerPagos(Convert.ToInt32(cbxseminario.SelectedValue));
        }
como se ve en el codigo en la parte de cbxseminario me arroja :

El nombre cbxseminario no existe en el contexto actual

intente con lo siguiente:

public class PagoBL : abonos

trato de heredar los controles de mi clase principal ABONOS, cuando lo hago el error se quita pero a la hora de compilar mi proyecto me arroja un error, sopongo es la manera incorrecta de hacerlo, espero me puedan ayudar, dejare todo mi codigo por alguna cosa, saludos.

Código PHP:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Globalization;


namespace eom
{
    public 
partial class abonos : Form
    
{
        public 
readonly PagoBL oPagoBL = new PagoBL();

        List<
Pago> pagos = new List<Pago>();

        public 
abonos()
        {
            
InitializeComponent();
            
CargarPagos();
          

        }


        private 
void CargarPagos()
        {
            
dataGridView1.DataSource = null;
            
dataGridView1.DataSource = oPagoBL.ObtenerPagos();
            
           
        }

        public 
void GenerarPago()
        {
            
decimal monto = Convert.ToDecimal(txtimporte.Text);
            List<
decimal> fraccionarmonto = new List<decimal>();
            var 
CuotasPagar = oPagoBL.ObtenerPagos();
            var 
montoTotal = oPagoBL.ObtenerPagos().Sum(s => s.importe);
            if (
monto > montoTotal)
            {
                
MessageBox.Show("El monto ingresado es mayor al monto deudor");
                return;
            }

            foreach (var 
cuota in CuotasPagar)
            {
                if (
monto == 0)
                    break;
                if (
monto > cuota.importe)
                {
                    
monto -= cuota.importe;
                    
fraccionarmonto.Add(cuota.importe);
                }
                else
                {
                    
fraccionarmonto.Add(monto);
                    
monto -= monto;
                }

            }
           foreach (var 
pago in fraccionarmonto)
            {
                var 
CuotaPagar = oPagoBL.ObtenerPagos().Take(1).SingleOrDefault();
                
CuotaPagar.importe = CuotaPagar.importe - pago;
                if (
CuotaPagar.importe == 0)
                    
CuotaPagar.estatus_pago = true;

                
oPagoBL.ActualizarPago(CuotaPagar);
            }

            
CargarPagos();
        }
}


 
//Capa Entidades
    
public class Pago 
    
{
        public 
int id_saldo { get; set; }
        public 
decimal importe { get; set; }
        public 
DateTime fecha_registro { get; set; }
        public 
Boolean estatus_pago { get; set; }
        public 
int id_matricula { get; set; }


    }

    
//Capa de Negocio
    
public class PagoBL : abonos
    
{

        private 
readonly PagoDA oPagoDA = new PagoDA();

      [
I][COLOR="Blue"]  public IList<Pago> ObtenerPagos()
        {
            return 
oPagoDA.ObtenerPagos(Convert.ToInt32(cbxseminario.SelectedValue));
        }[/
COLOR][/I]

        public 
void ActualizarPago(Pago pago)
        {
            
oPagoDA.ActualizarPago(pago);
        }




        
//Capa de Datos
        
public class PagoDA 
        
{
            

 private 
readonly SqlConnection connection;

            private 
string cadenaconexion = @"micadenitadeconexion....";
            
//Constructor

            
public PagoDA()
            {
                
connection = new SqlConnection(cadenaconexion);
            }

                  

 public 
IList<Pago> ObtenerPagos(int idmatricula,  Boolean EsPagado = false)
            {
                
                try
                {
                   
                    var 
resultado = new List<Pago>();
                    var 
command = new SqlCommand("Select * from consulta_saldos_2 where estatus_pago = 0 and id_matricula = @idmatricula", connection);
                    
command.Connection = connection;
                    
command.CommandText = "Select * from consulta_saldos_2 Where estatus_pago = @EsPagado and id_matricula  = @idmatricula"; 
                    
command.Parameters.Add("@EsPagado", SqlDbType.Bit).Value = EsPagado;
                    
command.Parameters.Add("@idmatricula", SqlDbType.Int).Value = idmatricula ;


                    
command.CommandType = CommandType.Text;
                    
connection.Open();
                    var 
reader = command.ExecuteReader();

                    while (
reader.Read())
                    {
                        
resultado.Add(new Pago() { id_saldo = Convert.ToInt32(reader[0]), importe = Convert.ToDecimal(reader[1]), fecha_registro = Convert.ToDateTime(reader[2]), estatus_pago = Convert.ToBoolean(reader[3]), id_matricula = Convert.ToInt32(reader[4]) });
                    }
                    return 
resultado;
                }
                
finally
                
{
                    if (
connection.State == ConnectionState.Open)
                        
connection.Close();

                }

            }

            public 
void ActualizarPago(Pago pago)
            {

                try
                {
                    var 
command = new SqlCommand();
                    
command.Connection = connection;
                    
command.CommandText = "Update consulta_saldos_2 set pago = @Monto, estatus_pago = @EsPagado Where id_factura = @IdPago ";
                    
command.Parameters.Add("@Monto", SqlDbType.Decimal).Value = pago.importe;
                    
command.Parameters.Add("@EsPagado", SqlDbType.Bit).Value = pago.estatus_pago;
                    
command.Parameters.Add("@IdPago", SqlDbType.Int).Value = pago.id_saldo;
                    
command.CommandType = CommandType.Text;
                    
connection.Open();
                    
command.ExecuteNonQuery();
                }
                
finally
                
{
                    if (
connection.State == ConnectionState.Open)
                        
connection.Close();

                }

            }
           
        } 
// public class PagoDA

        
    
}//public class PagoBL

    
}//nameespace 
  #2 (permalink)  
Antiguo 08/10/2015, 02:08
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 18 años, 8 meses
Puntos: 606
Respuesta: Error El nombre cbx no existe en el contexto actual c#

Tu problema principal es de diseño. La función ObtenerPagos() está usando una variable externa de la clase PagoBL, de ahí que no tenga visibilidad sobre ella.

Si la función ObtenerPagos() ha de trabajar sobre el valor del combo seleccionado, queda mucho más claro, más limpio y más testeable, que le pases a ObtenerPagos() un entero. Se escapa de la responsabilidad de la clase PagoBL saber que el "id" del que ha de devolver los pagos corresponde a un combobox de nombre "cbxseminario" y que en realidad te devuelve un string que has de parsear.

Estas queriendo separar tu aplicación en tres capas y en realidad te las estás saltando accediendo directamente a elementos de la capa de presentación desde la capa de negocio...
__________________
Aviso: No se resuelven dudas por MP!

Etiquetas: c#, errores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:29.