none
PROBLEMA CON CONSULTA QUE CONTIENE CONDICIONES... RRS feed

  • Pregunta

  • HOLA A TODOS tengo el siguiente condigo

            If pstrRuta = "" Then strValidacion &= "No se ha activado un contribuyente" & Chr(13)
            If DtimeHasta.Value < DtimeDesde.Value Then strValidacion &= "La Fecha Desde debe ser menor que la de Hasta." & Chr(13)
    
            If strValidacion = "" Then
                If DgvRegistro.Rows.Count > 0 Then DgvRegistro.Rows.Clear()
                Dim connBuscar As String
                connBuscar = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & pstrRuta & "\RegCompra.accdb"
                Dim strFechaDesde, strFechaHasta As String
                strFechaDesde = DtimeDesde.Value.Date.ToShortDateString
                strFechaHasta = DtimeHasta.Value.Date.ToShortDateString
                Dim sqlBuscar = "SELECT ComprasElectronicas.*, ProdCompras.* FROM ComprasElectronicas  INNER JOIN ProdCompras ON ComprasElectronicas.Autorizacion = ProdCompras.Autorizacion WHERE ComprasElectronicas.Fecha >= #" & strFechaDesde & "# and ComprasElectronicas.Fecha <= #" & strFechaHasta & "#"
                Dim drBuscar As OleDb.OleDbDataReader
                Dim connexion As OleDb.OleDbConnection = New OleDb.OleDbConnection(connBuscar)
                Dim tblBuscar As DataTable = New DataTable
                Dim cmdBuscar As OleDb.OleDbCommand = New OleDb.OleDbCommand(sqlBuscar, connexion)
                Dim i As Integer = 0
                connexion.Open()
                drBuscar = cmdBuscar.ExecuteReader()
                tblBuscar.Load(drBuscar, LoadOption.OverwriteChanges)
    

    pero cuando me da el resultado de la consulta por ejemplo entre el 01 de julio y el 31 de julio me muestra los resultados con fecha de junio que van hasta como el 15 de junio y no se que pasa si seleccione un rango especifico porque me muestra valores fuera de rango incluso pasab antes de que uniera las dos tablas asi que asumo que ese no deberia ser el problema... espero puedan ayudarme

    miércoles, 29 de mayo de 2019 17:23

Todas las respuestas

  • Mi sospecha es que puede ser que las variables strFechaDesde y strFechaHasta contengan la fecha formateada en un formato que no coincida con el de la base de datos. Por ejemplo, que estés generando esas variables como dia/mes/año, pero luego las concatenhas en la sentencia SQL que espera mes/dia/año, y por eso los resultados aparentan devolver resultados fuera de rango.

    Para evitar sorpresas por el tema del formato, yo recomendaría parametrizar la sentencia (en lugar de concatenar las variables), y pasarle a los parámetros directamente el dato de tipo DateTime, sin convertir a String, y de esa manera los propios Drivers ya se encargan de gestionar el formato adecuado internamente.

     
    miércoles, 29 de mayo de 2019 21:38