none
Encontrar Registros en Una Tabla ?? RRS feed

  • Pregunta

  • Tengo una tabla en la cual guardo todos los pagos hechos por  clientes,es decir varios pagos pueden pertenecer a un mismo cliente,la clave principal es el numero de cedula correspondiente,lo q deseo hacer es recuperar el registro del ultimo pago hecho por el cliente...nesecito un ejemplo de como puedo hacerlo ???

     

    Gracias......

    domingo, 12 de septiembre de 2010 21:19

Respuestas


  • entonces el ultimo query deberia ser util

    SELECT TOP 1  P.fechavencimiento FROM Pago P

    ORDER BY P.fechapago DESC

    ahi recuperas la ultima fecha de la tabla pagos, y luego puedes comparar con la fecha del dia

    podrias usar

    public static DateTime GetUltimoPago(string cedula)
    {
        SqlConnection conn = new SqlConnection(StringConexion);
        string query = "SELECT TOP 1 P.fechavencimiento FROM Pago P
                        WHERE P.cedula = @cedula
                        ORDER BY P.fechapago DESC";

        SqlCeCommand cmd = new SqlCeCommand(query, conn);
        cmd.Parameters.AddWithValue("@cedula", cedula);

        DateTime vencimiento = Convert.ToDateTime(cmd.ExecuteScalar());
        return vencimiento;
    }

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 13 de septiembre de 2010 14:25

Todas las respuestas

  • hola

    habria ayudado sidefinias en la pregunta la estructura de las tablas, pero bien imagino que podria ser algo como esto

     

    SELECT P.* FROM Pagos P INNER JOIN Cliente C

    ON P.IdCliente = C.IdCliente

    WHERE c.cedula = @cedula

     

    Imagine que el filtro lo harias po la cedula, la conaulta de arriba devuelve todos los pagoas del cliente, si solo quieres el ultimo podrias usar

    SELECT TOP 1  P.* FROM Pagos P INNER JOIN Cliente C

    ON P.IdCliente = C.IdCliente

    WHERE c.cedula = @cedula

    ORDER BY P.fecha DESC

    aqui usarias el campo de fecha para ordenar descendente, con lo cual el ultimo pago quedaria arriba y de este con el TOP tomaria solo un registro

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 12 de septiembre de 2010 21:31
  • la estructura de la tabla (pago) es la siguiente............cedula,nombre,apellido,fechapago,fechavencimiento.........Como quedaria ???

     

    lunes, 13 de septiembre de 2010 3:39
  • hola

    ahh pero la tabla de clientes y de pagos es la misma tabla ? o sea no hay una relacion entre uan tabla de pagos y otra de clientes ?

    lo pregunto porque veo alli las columnas nombre y apellido, que es claramente informacion del cliente

    mas que nada confunde porque habias comentado anteriormente " todos los pagos hechos por  clientes,es decir varios pagos pueden pertenecer a un mismo cliente"

     

    bien, si es una sola tabla seria:

    SELECT TOP 1  P.* FROM Pago P

    ORDER BY P.fechapago DESC

     

    por supuesto el P.* podrias reempzlarlos por los campos en concreto que quieras devolver, en este caso el * indica que se devuelven todos

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Propuesto como respuesta AlexLander lunes, 13 de septiembre de 2010 13:27
    lunes, 13 de septiembre de 2010 3:45
  • Hola .......

    Tienes la razon no plante mi pregunta bien desde el principio............

    bueno en realidad lo q quiero hacer es una consulta q me satisfaga la siguiente condicion:

    conseguir el ultimo registro de pago de un cliente,para comparar la fecha actual con el campo @FechaVencimiento y determinar si ese cliente esta vigente o vencido,el cliente esta vigente si @FechaVencimiento  es menor a la fecha actual y el cliente estara vencido si @FechaVencimiento mayor o igual a la fecha actual........

    la estructura de la tabla (pago) es la siguiente............cedula,nombre,apellido,fechapago,fechavencimiento.

    1000 Disculpas.......Gracias

    Efrain Mejias C

    Valencia_Venezuela

     

    lunes, 13 de septiembre de 2010 14:17

  • entonces el ultimo query deberia ser util

    SELECT TOP 1  P.fechavencimiento FROM Pago P

    ORDER BY P.fechapago DESC

    ahi recuperas la ultima fecha de la tabla pagos, y luego puedes comparar con la fecha del dia

    podrias usar

    public static DateTime GetUltimoPago(string cedula)
    {
        SqlConnection conn = new SqlConnection(StringConexion);
        string query = "SELECT TOP 1 P.fechavencimiento FROM Pago P
                        WHERE P.cedula = @cedula
                        ORDER BY P.fechapago DESC";

        SqlCeCommand cmd = new SqlCeCommand(query, conn);
        cmd.Parameters.AddWithValue("@cedula", cedula);

        DateTime vencimiento = Convert.ToDateTime(cmd.ExecuteScalar());
        return vencimiento;
    }

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 13 de septiembre de 2010 14:25