Foros del Web » Programación para mayores de 30 ;) » .NET »

Como obtener el rango entre 2 DateTimePicker?

Estas en el tema de Como obtener el rango entre 2 DateTimePicker? en el foro de .NET en Foros del Web. Hola, Necesito cargar en un DataGridView datos que voy a obtener de una base de access 2003, pero solo debera cargar los que esten comprendidos ...
  #1 (permalink)  
Antiguo 19/10/2008, 18:46
 
Fecha de Ingreso: octubre-2008
Ubicación: Córdoba
Mensajes: 31
Antigüedad: 16 años, 1 mes
Puntos: 0
Como obtener el rango entre 2 DateTimePicker?

Hola, Necesito cargar en un DataGridView datos que voy a obtener de una base de access 2003, pero solo debera cargar los que esten comprendidos entre los dos DataTimePicker.Es decir mi formulario tiene un dtpDesde y un dtpHasta pongo esas dos fechas y le doy al boton generar y mi datagridview se debe cargar con datos comprendidos entre esas dos fechas. la base de access tien estas columnas(IdCompra,Fecha,Comprobante,IdSucursal y totad) ademas se debe mostrar ordenada por fecha, segun me han dicho endria que definir un indice.Como hago todo esto?
  #2 (permalink)  
Antiguo 20/10/2008, 04:52
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 10 meses
Puntos: 37
Respuesta: Como obtener el rango entre 2 DateTimePicker?

Cita:
Iniciado por dieama Ver Mensaje
Hola, Necesito cargar en un DataGridView datos que voy a obtener de una base de access 2003, pero solo debera cargar los que esten comprendidos entre los dos DataTimePicker.Es decir mi formulario tiene un dtpDesde y un dtpHasta pongo esas dos fechas y le doy al boton generar y mi datagridview se debe cargar con datos comprendidos entre esas dos fechas. la base de access tien estas columnas(IdCompra,Fecha,Comprobante,IdSucursal y totad) ademas se debe mostrar ordenada por fecha, segun me han dicho endria que definir un indice.Como hago todo esto?
Hola, prueba con un SqlDataAdapter:

Código:
Dim cmd As New SqlDataAdapter("Select * From LaTabla " & _
                " Where Fecha between '" & dtpDesde.Value.ToString("MM/dd/yyyy") & _
                "' And '" & dtpHasta.Value.ToString("MM/dd/yyyy") & "' Order By Fecha", cn)

            Dim ds As New DataSet
            cmd.Fill(ds)

            DataGridView1.DataSource = ds.Tables(0)
Leyenda:
LaTabla = el nombre de la tabla de donde sacar los datos.
cn = La conexión a la base de datos que ya habrás abierto.

No olvides importar el espacio de nombres System.Data.SqlClient

  #3 (permalink)  
Antiguo 20/10/2008, 05:28
 
Fecha de Ingreso: octubre-2008
Ubicación: Córdoba
Mensajes: 31
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Como obtener el rango entre 2 DateTimePicker?

Me olvidaba necesito resolverlo con OLEDB como se haria para este caso?
  #4 (permalink)  
Antiguo 20/10/2008, 07:22
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 10 meses
Puntos: 37
Respuesta: Como obtener el rango entre 2 DateTimePicker?

Cita:
Iniciado por dieama Ver Mensaje
Me olvidaba necesito resolverlo con OLEDB como se haria para este caso?
Pues sustituye 'SqlDataAdapter' por 'OleDbDataAdapter' y el espacio de nombres por 'System.Data.OleDb'.

  #5 (permalink)  
Antiguo 20/10/2008, 08:32
 
Fecha de Ingreso: octubre-2008
Ubicación: Córdoba
Mensajes: 31
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Como obtener el rango entre 2 DateTimePicker?

No entiendo coño hacerlo todavia. Te dejo el procedimiento que tengo para que me lo modifiques.


Private Sub cmdGenerar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGenerar.Click
Dim cnn As New OleDbConnection
Dim dt As New DataTable
Dim da As New OleDbDataAdapter
Dim cmd As New OleDbCommand
'abro la conexion
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\base.mdb"
cnn.Open()
'creo el comando y lleno la tabla
cmd.Connection = cnn
cmd.CommandText = "Compras"
cmd.CommandType = CommandType.TableDirect
da.SelectCommand = cmd
da.Fill(dt)
cnn.Close()
dgvListado.DataSource = dt
End Sub
  #6 (permalink)  
Antiguo 20/10/2008, 09:05
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 10 meses
Puntos: 37
Respuesta: Como obtener el rango entre 2 DateTimePicker?

Cita:
Iniciado por dieama Ver Mensaje
No entiendo coño hacerlo todavia. Te dejo el procedimiento que tengo para que me lo modifiques.


Private Sub cmdGenerar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGenerar.Click
Dim cnn As New OleDbConnection
Dim dt As New DataTable
Dim da As New OleDbDataAdapter
Dim cmd As New OleDbCommand
'abro la conexion
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\base.mdb"
cnn.Open()
'creo el comando y lleno la tabla
cmd.Connection = cnn
cmd.CommandText = "Compras"
cmd.CommandType = CommandType.TableDirect
da.SelectCommand = cmd
da.Fill(dt)
cnn.Close()
dgvListado.DataSource = dt
End Sub
Bueno, es que más facil no sé como ponerlo. Después de abrir la conexión, coloca el código que te puse en la primera respuesta con la adaptación a OleDb que pongo en la segunda respuesta.

Modifica las variables para ajustarlas a tu necesidad. p.e.
LaTabla = Compras
cn = cnn
DataGridView1 = dvgListado
y elimina las declaraciones de variables al principio (excepto cnn)

  #7 (permalink)  
Antiguo 20/10/2008, 13:38
 
Fecha de Ingreso: octubre-2008
Ubicación: Córdoba
Mensajes: 31
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Como obtener el rango entre 2 DateTimePicker?

Aun no he logrado resolver con la informacion de Avellaneda. Por favor alguien que pueda resolverlo desde ya, Muchas gracias
  #8 (permalink)  
Antiguo 20/10/2008, 14:38
 
Fecha de Ingreso: octubre-2008
Mensajes: 12
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Como obtener el rango entre 2 DateTimePicker?

Sustituye cmd.CommandText = "Compras"

por

cmd.CommandText= "Select * From LaTabla " & _
" Where Fecha between '" & dtpDesde.Value.ToString("MM/dd/yyyy") & _
"' And '" & dtpHasta.Value.ToString("MM/dd/yyyy") & "' Order By Fecha"

Un saludo.
  #9 (permalink)  
Antiguo 20/10/2008, 21:45
 
Fecha de Ingreso: octubre-2008
Ubicación: Córdoba
Mensajes: 31
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Como obtener el rango entre 2 DateTimePicker?

Escribi tal cual me dijiste:


Public Class FrmListado

Private Sub cmdGenerar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGenerar.Click
Dim cnn As New OleDbConnection
Dim dt As New DataTable
Dim da As New OleDbDataAdapter
Dim cmd As New OleDbCommand
'abro la conexion
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\base.mdb"
cnn.Open()
'creo el comando y lleno la tabla
cmd.Connection = cnn
cmd.CommandText = "Select * From Compras " & _
" Where Fecha between '" & dtpInicio.Value.ToString("MM/dd/yyyy") & _
"' And '" & dtpFinal.Value.ToString("MM/dd/yyyy") & "' Order By Fecha"
cmd.CommandType = CommandType.TableDirect
da.SelectCommand = cmd
da.Fill(dt)
cnn.Close()
dgvListado.DataSource = dt
End Sub

y me salio este error sobre da.Fill(dt)

No coinciden los tipos de datos en la expresión de criterios.
  #10 (permalink)  
Antiguo 21/10/2008, 02:06
 
Fecha de Ingreso: octubre-2008
Mensajes: 12
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Como obtener el rango entre 2 DateTimePicker?

El error te da en tiempo de ejecucion, no? Si es asi lo mas seguro es que sea porr por la consulta SQL, yo no la escribiria asi. Yo pondria (es a lo que estoy acostumbrado):

cmd.CommandText = "Select * From Compras " & _
" Where Fecha > '" & Format(dtpInicio,"dd/MM/yyyy") & _
"' And '" & Fecha< Fortmat(dtpFinal,"dd/MM/yyyy") & "' Order By Fecha"

Fijate en que las fechas van entre comillas simples, en access creo que deben ir entre # y en Access las fechas las coge en formato europeo primero dia, luego mes y luego año. De todos modos prueba primero la sentencia sql en una consulta access para asegurarte de que funciona. El resto de codigo yo creo que esta bien, asi que lo mas seguro que sea problema de la consulta.

Un saludo.
  #11 (permalink)  
Antiguo 21/10/2008, 02:11
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 10 meses
Puntos: 37
Respuesta: Como obtener el rango entre 2 DateTimePicker?

Cita:
Iniciado por dieama Ver Mensaje
Escribi tal cual me dijiste:

...

y me salio este error sobre da.Fill(dt)

No coinciden los tipos de datos en la expresión de criterios.
En Access el separador de campos tipo fecha es la almohadilla (#), copia este código tal cual está.

Código:
Private Sub cmdGenerar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGenerar.Click
    Dim cnn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " & _
        "data source=" & CurDir() & "\base.mdb")
    Dim da As New OleDbDataAdapter("SELECT * FROM Compras " & _
        " Where Fecha BETWEEN #" & dtpDesde.Value.ToString("MM/dd/yyyy") & _
        "# AND #" & dtpHasta.Value.ToString("MM/dd/yyyy") & "# ORDER BY Fecha", cnn)

    Dim ds As New DataSet
    da.Fill(ds)
    dgvListado.DataSource = ds.Tables(0)
End Sub
Espacio de nombres: Imports System.Data.OleDb


  #12 (permalink)  
Antiguo 21/10/2008, 07:13
 
Fecha de Ingreso: octubre-2008
Ubicación: Córdoba
Mensajes: 31
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Como obtener el rango entre 2 DateTimePicker?

Funciono. Muchas gracias!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:11.