none
Buscar por Fecha

    Pregunta

  • Buenas a todos
    tengo una aplicacion hecha en vb.net estoy aprendiendo a usar fechas la aplicacion usa una base de datos en access
    la consulta que hice fue SELECT Id, Nombre, [Telefono:], Dia, Hora FROM Cita
    WHERE (Dia=TO_DATE(´fecha','dd-mm-yyyy')) pero al llamar la consulta me da problemas
    Me.CitaTableAdapter.FillBy(Me.Programaci… fechaTimePicker.value))
    no se que estare haciendo mal
    si alguien me ayuda

    sábado, 19 de febrero de 2011 5:06

Respuestas

  • No intentes concatenar la fecha en forma de string dentro de la cadena, antes o después tendrás problemas con el formato cuando cambies de base de datos o cuando cambien los ajustes internacionales del equipo o de la base de datos. En lugar de eso, parametriza la sentencia y deja que sean los drivers de acceso a datos los que se encarguen de convertir la fecha al formato adecuado. Concretamente, para Access usando OleDb, puedes hacerlo asi:

    Dim laFecha as DateTime=...
    Dim sentencia as String = "SELECT Id, Nombre, [Telefono:], Dia, Hora FROM Cita
    WHERE Dia=?"
    Dim cmd as New OleDbCommand(sentencia, conexion)
    cmd.Parameters.AddWithValue("laFecha", laFecha)
    
    sábado, 19 de febrero de 2011 8:06
  • Hola:

    Otra alternativa a la utilización de los parámetros, es especificar el formato de fecha correcto que utiliza el motor Microsoft Jet, que es el formato americano (mes/dia/año), encerrado entre el signo #:

        Dim today As DateTime = DateTime.Now
    
        ' Con independencia del formato de fecha establecido en la
        ' configuración regional de Windows, los componentes de la
        ' fecha estarán separados por la barra /.
        '
        Dim fecha As String = String.Format("{0:#MM\/dd\/yyyy#}", today)
    
        Dim sql As String = _
          "SELECT Id, Nombre, [Telefono:], Dia, Hora " & _
          "FROM Cita " & _
          "WHERE Dia = " & fecha
    
        MessageBox.Show(sql)
    
    

    Un saludo

     


    Enrique Martínez
      [MS MVP - VB]

    sábado, 19 de febrero de 2011 12:33

Todas las respuestas

  • No intentes concatenar la fecha en forma de string dentro de la cadena, antes o después tendrás problemas con el formato cuando cambies de base de datos o cuando cambien los ajustes internacionales del equipo o de la base de datos. En lugar de eso, parametriza la sentencia y deja que sean los drivers de acceso a datos los que se encarguen de convertir la fecha al formato adecuado. Concretamente, para Access usando OleDb, puedes hacerlo asi:

    Dim laFecha as DateTime=...
    Dim sentencia as String = "SELECT Id, Nombre, [Telefono:], Dia, Hora FROM Cita
    WHERE Dia=?"
    Dim cmd as New OleDbCommand(sentencia, conexion)
    cmd.Parameters.AddWithValue("laFecha", laFecha)
    
    sábado, 19 de febrero de 2011 8:06
  • Hola:

    Otra alternativa a la utilización de los parámetros, es especificar el formato de fecha correcto que utiliza el motor Microsoft Jet, que es el formato americano (mes/dia/año), encerrado entre el signo #:

        Dim today As DateTime = DateTime.Now
    
        ' Con independencia del formato de fecha establecido en la
        ' configuración regional de Windows, los componentes de la
        ' fecha estarán separados por la barra /.
        '
        Dim fecha As String = String.Format("{0:#MM\/dd\/yyyy#}", today)
    
        Dim sql As String = _
          "SELECT Id, Nombre, [Telefono:], Dia, Hora " & _
          "FROM Cita " & _
          "WHERE Dia = " & fecha
    
        MessageBox.Show(sql)
    
    

    Un saludo

     


    Enrique Martínez
      [MS MVP - VB]

    sábado, 19 de febrero de 2011 12:33