none
Hacer consulta Select Max en sqlite RRS feed

  • Pregunta

  • Hola buenas tardes compañeros les comento , que estoy desarrollando una pequeña aplicación , es similar a una agenda , el propósito es controlar las tareas del usuario y enviarle un popup de las tareas , del dia. Para esto mi objetivo es crear una consulta con sql , es Un SELECT MAX pero lo que pasa es que mi consulta no me devuelve ningún registro , espero y me puedan ayudar les dejo mi código fuente :

    private async void MAXFECHA() { SQLiteAsyncConnection db = new SQLiteAsyncConnection(Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "people.sqlite")); var result = await db.CreateTableAsync<Tareas>(); try { DateTime fecha = DateTime.Parse(String.Format("{0:d}", DateTime.Now)); var consulta = await db.QueryAsync<Tareas>("SELECT MAX(horarecor) FROM Tareas WHERE User=? AND fecharecor=? ", lblusuario.Text,fecha); var resultados = consulta.ToList(); foreach (var nx in resultados) { myPopup.IsOpen = true; PopUpText.Text = String.Format("{0},{1},{2}", nx.recordatorio, nx.horarecor, nx.fecharecor); } } catch (Exception errop) { MessageDialog msgbox = new MessageDialog(errorp.message,""); await msgbox.ShowAsync();

    } }

    Pero no me devuelve ningun registro la consulta espero que me puedan ayudar o ¿hay una manera de hacer esta consulta con linq?


    Saludos desde México DF


    lunes, 17 de septiembre de 2012 4:10

Respuestas

  • hola

    el tema que noto es que estas ejecutando una query escalar por lo que deberia encontrarse el equivamente al ExecuteScalar() de ado.net para recuperar un valor simple y no una entidad Tarea como alli estas realizando

    porque la query que defines no devuelves una "Tarea", sino que devuelves un valor numerico simple

    o sea usa el metodo ExecuteScalarAsync<>()

    [Windows 8] Bases de datos locales en aplicaciones metro (I)

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 17 de septiembre de 2012 5:23
  • Hola!

    Leandro, gracias por citar mi post sobre SQLite en Windows 8 :)

    Oscar, si te fijas en mi artículo que ha citado Leandro, verás que uso Linq para ejecutar una consulta filtrada por nombre, puedes hacer algo así para tu consulta, mucho mejor que ejecutar el SQL "a pelo"

    En el artículo se explica bien como descargarte sqlite-net, el orm que se usa con sqlite para trabajar.

    Un saludo!


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter

    lunes, 17 de septiembre de 2012 13:41
    Moderador

Todas las respuestas

  • hola

    el tema que noto es que estas ejecutando una query escalar por lo que deberia encontrarse el equivamente al ExecuteScalar() de ado.net para recuperar un valor simple y no una entidad Tarea como alli estas realizando

    porque la query que defines no devuelves una "Tarea", sino que devuelves un valor numerico simple

    o sea usa el metodo ExecuteScalarAsync<>()

    [Windows 8] Bases de datos locales en aplicaciones metro (I)

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 17 de septiembre de 2012 5:23
  • Hola!

    Leandro, gracias por citar mi post sobre SQLite en Windows 8 :)

    Oscar, si te fijas en mi artículo que ha citado Leandro, verás que uso Linq para ejecutar una consulta filtrada por nombre, puedes hacer algo así para tu consulta, mucho mejor que ejecutar el SQL "a pelo"

    En el artículo se explica bien como descargarte sqlite-net, el orm que se usa con sqlite para trabajar.

    Un saludo!


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter

    lunes, 17 de septiembre de 2012 13:41
    Moderador