none
Obtener ultimo rows de una tabla sql desde C# RRS feed

  • Pregunta

  • Hola buen dia, alguien sabe como puedo obtener cada determinado tiempo la ultima fila insertada en una tabla, tengo un web service que en uno de sus métodos descarga un archivo y crea un  nuevo registro del archivo descargado en la tabla (notificaciones) de la base de datos (sql server) ,hasta ahi todo perfecto por otra parte tengo una aplicación de escritorio que debe obtener ese nuevo registro y si pertenece a un usuario especifico me envie una notificacion (Notifyicon) todo lo debe hacer a través del web service.  ecepto la notificacion esa la hace desde mi aplicacion de escritorio
    • Editado D. Velazquez viernes, 16 de septiembre de 2016 17:09
    viernes, 16 de septiembre de 2016 17:08

Respuestas

  • L. Velazquez,

    Puedes usar una variable a nivel de clase para almacenar el último ID recuperado, y en cada intervalo de tiempo validas si el ID recuperado es distinto al almacenado, de ser así envías la notificación, caso contrario la evitas.

    La resolución es simple, si tienes dudas puedes postear el código que tienes para dirigirte en base a lo escrito.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta D. Velazquez martes, 20 de septiembre de 2016 3:11
    sábado, 17 de septiembre de 2016 3:09

Todas las respuestas

  • hola no te entiendo muy bien pero para obtener la ultima fila podrias ejecutar la siguente consulta

    SELECT TOP 1 *
    FROM notificaciones
    ORDER BY Fecha DESC

    donde te muestra el ultimo registro de la base de datos ojala sea de tu ayuda saludo ;)


    viernes, 16 de septiembre de 2016 17:15
  • L. Velazquez,

    ¿La tabla en mención tiene alguna columna que determine un orden en las filas?. Si cuentas con dicha columna (una columna 'ID' auto-incremental o una columna 'Fecha', etc.) entonces lo justo es que recuperes la primera fila resultante de ordenar de manera descendente por la columna candidata.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 16 de septiembre de 2016 18:51
  • Si mi tabla cuenta con un Id que es auto- incremental al igual que una fecha de registro, podrias proporcionarme un ejemplo de lo que comentas porfavor, mi tabla es la siguiente

    viernes, 16 de septiembre de 2016 21:28
  • L. Velazquez,

    Pienso que lo mejor será utilizar la columna 'Id' considerando que se trata de la clave primaria y se espera que tenga un Index Clustered que permitirá minimizar los tiempos de respuesta en la consulta.

    SELECT TOP (1) * FROM T ORDER BY Id DESC;


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 16 de septiembre de 2016 21:46
  • Gracias AMIGO ya lo realice asi, y si obtengo el resultado que quiero, solo que como mi metodo de notificacion lo tengo dentro de un timer me envia la notificacion cada 3 segundos que es el tiempo que tiene mi timer como puedo controlar para que solo me envie la notificacion una sola vez?

    sábado, 17 de septiembre de 2016 0:02
  • Hola L. Velazquez,

    Puedes deshabilitar el timer después de ejecutar el método que muestra la notificación.

           private void timer1_Tick(object sender, EventArgs e)
            {
                showNotification();
                timer1.Enabled = false;
            }

    Así ejecutará solo una vez el método.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    sábado, 17 de septiembre de 2016 0:23
  • Gracias por responder, pero si deshabilito el timer ya no me envia la notificación si se inserta un nuevo registro, el timer lo utilizo para que cada determinado tiempo detecte cuando se inserte un registro en mi tabla, alguna otra sugerencia?
    sábado, 17 de septiembre de 2016 0:32
  • L. Velazquez,

    Puedes usar una variable a nivel de clase para almacenar el último ID recuperado, y en cada intervalo de tiempo validas si el ID recuperado es distinto al almacenado, de ser así envías la notificación, caso contrario la evitas.

    La resolución es simple, si tienes dudas puedes postear el código que tienes para dirigirte en base a lo escrito.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta D. Velazquez martes, 20 de septiembre de 2016 3:11
    sábado, 17 de septiembre de 2016 3:09
  • L. Velazquez,

    Puedes usar una variable a nivel de clase para almacenar el último ID recuperado, y en cada intervalo de tiempo validas si el ID recuperado es distinto al almacenado, de ser así envías la notificación, caso contrario la evitas.

    La resolución es simple, si tienes dudas puedes postear el código que tienes para dirigirte en base a lo escrito.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    Willams gracias por responde, solo que aun no logro, enviar solo una vez el mensaje, dejo mi codigo de donde obtengo la ultima fila de mis registros y todo bien pero al pasarlo y enviar el mensaje se enviar infinidad de veces y solo quisiera que se enviara una sola vez cada que encuentre una nueva fila, espero puedas ayudarme, gracias

    martes, 20 de septiembre de 2016 2:02
  • martes, 20 de septiembre de 2016 2:03
  • L. Velazquez,

    Veo que has abierto un nuevo hilo con la última pregunta, te recomiendo cerrar el hilo antes de abrir una nueva pregunta para evitar duplicar hilos.

    martes, 20 de septiembre de 2016 2:58