Principales respuestas
Consulta por rango de Fechas de 2 DateTimePicker y un textbox BD Access

Pregunta
-
Buenas tardes
antes que nada agradesco sus aportaciones pues si bien me han ayudado bastante aclarando dudas con todo su conocimiento, pero ahora, no encuentro solucion a mi problema por mas que he buscado no doy con la solucion y solicito porfavor me ayuden a resolverlo
Resulta que tengo un form con dos datetimepicker "Desde" "Hasta" un Datagridview donde se supone me debe de cargar la informacion a consultar de mi textbox y mi boton Consulta
pues bien el problema radica que al momento de realizar la consulta a la BD Access el campo fecha de mi BD esta con el Formato "dd/MM/yyyy" pero al generar la consulta los valores de mis DatetimePicker los toma en formato "MM/dd/yyyy" por lo cual no me arroja ningun resultado, me podrian ayudar para que al momento de llamar al evento de consulta me pueda dar el Resultado deseado? aqui les dejo el codigo que estoy utilizando
Public Class FRM_MOVIMIENTOS Dim adaptador As OleDb.OleDbDataAdapter Dim tabla As New DataTable Private Sub todo() adaptador = New OleDb.OleDbDataAdapter("SELECT * FROM Movimientos WHERE Fecha BETWEEN#" & dtfecha1.Value & " #AND# " & dtfecha2.Value & " #AND Clave = '" & txt_consulta.Text & "'", conexion.conexion) tabla = New DataTable adaptador.Fill(tabla) DataGridView1.DataSource = tabla DataGridView1.Columns("Hora").DefaultCellStyle.Format = "T" For Each Columna As DataGridViewColumn In DataGridView1.Columns Columna.SortMode = DataGridViewColumnSortMode.Programmatic Next Dim dtView As DataView = Nothing dtView = New DataView(tabla) Me.DataGridView1.DataSource = dtView dtView.Sort = "Fecha DESC, Hora DESC" End Sub Private Sub FRM_MOVIMIENTOS_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load enlace() lbl_estado.Text = estado If lbl_estado.Text = "Conectado" Then ProgressBar1.Increment(100) Else ProgressBar1.Increment(30) lbl_estado.Text = "Error en conexion a Base de Datos" End If End Sub
Espero me puedan ayudar porfavor de antemano muchas gracias
Respuestas
-
Hola Poeta, al principio de la función, uno para cada datetimePicker y en la consulta colocas las variables en vez del dtFecha
Private Sub todo() Dim DatD As Date = dtFecha.value.ToString("dd/MM/yyyy") Dim DatH As Date = dtFecha2.Value.ToString("dd/MM/yyyy") adaptador = New OleDb.OleDbDataAdapter("SELECT * FROM Movimientos WHERE Fecha BETWEEN#" & DatD.Value & " #AND# " & DatH.Value & " #AND Clave = '" & txt_consulta.Text & "'", conexion.conexion) tabla = New DataTable
..................
Lo escribí a mano alzada, controla errores
Por otra parte trada de verificar que lo que carga sea correcto ya que puede pasar, que si bien corrige la cultura, que sea ej: 06/08/2019 23:07
En tal caso evalúa tomar el Text (dtFecha.Text)
Provoca un Messenger.Show para verificar el resultado
Saludos
Edito: Disculpas
ARA San Juan 44 HEROES ‗‗‗‗|||||‗‗‗‗‗
- Editado Marcelo PF miércoles, 7 de agosto de 2019 2:18
- Marcado como respuesta PoetaMaldito miércoles, 7 de agosto de 2019 4:18
-
efectivamente ejecuto todo () desde un boton
te comento que ya logre que me mostrara los datos que requiero pero el problema ahora radica en que no me los filtra segun el intervalo de fechas que ponga en los dtp
el codigo quedo asi:
Private Sub todo() Dim DatD = dtfecha1.Value.ToString("dd/MM/yyyy") Dim DatH = dtfecha2.Value.ToString("dd/MM/yyyy") adaptador = New OleDb.OleDbDataAdapter("SELECT * FROM Movimientos WHERE Fecha BETWEEN#" & DatD & " #AND# " & DatH & " #AND Clave = '" & txt_consulta.Text & "'", conexion.conexion) tabla = New DataTable
yo tengo registros del dia 27/07/2019 y un registro del 06/08/2019 el problema ahora es que si yo pongo los dtp del 01/08/2019 al 31/08/2019 me manda todos los registros desde el 27/07/2019
que tengo que modificar para que si yo selecciono los dias del 01/08/2019 al 31/08/2019 me muestre solo el registro que tengo con la fecha 06/08/2019
- Marcado como respuesta PoetaMaldito miércoles, 7 de agosto de 2019 4:18
Todas las respuestas
-
-
-
Hola Poeta, al principio de la función, uno para cada datetimePicker y en la consulta colocas las variables en vez del dtFecha
Private Sub todo() Dim DatD As Date = dtFecha.value.ToString("dd/MM/yyyy") Dim DatH As Date = dtFecha2.Value.ToString("dd/MM/yyyy") adaptador = New OleDb.OleDbDataAdapter("SELECT * FROM Movimientos WHERE Fecha BETWEEN#" & DatD.Value & " #AND# " & DatH.Value & " #AND Clave = '" & txt_consulta.Text & "'", conexion.conexion) tabla = New DataTable
..................
Lo escribí a mano alzada, controla errores
Por otra parte trada de verificar que lo que carga sea correcto ya que puede pasar, que si bien corrige la cultura, que sea ej: 06/08/2019 23:07
En tal caso evalúa tomar el Text (dtFecha.Text)
Provoca un Messenger.Show para verificar el resultado
Saludos
Edito: Disculpas
ARA San Juan 44 HEROES ‗‗‗‗|||||‗‗‗‗‗
- Editado Marcelo PF miércoles, 7 de agosto de 2019 2:18
- Marcado como respuesta PoetaMaldito miércoles, 7 de agosto de 2019 4:18
-
Hola Marcelo, ya intente con ambos ejemplos que me compartiste pero al momoento de iniciar el depurador paso por paso me percato que la Dim DatD me agrega el valor de Hora en ves de fecha y ninguno de los ejemplos me ha sido util no se que es lo que este haciendo mal, ahora para lo de evaluar con el text, sinceramente no se como realizarlo soy bastante nuevo en esto de la programacion
Edito
Tambien me indica que la propiedad value no es miembro de Date
- Editado PoetaMaldito miércoles, 7 de agosto de 2019 2:29
-
No hay problema, verifica en las propiedades de los DateTImePicker en Format este seleccionado Short
en cuanto a la sentencia quita los Value a los Dat.. mi error
imagen de las dos fechas en un msgbox
adaptador = New OleDb.OleDbDataAdapter("SELECT * FROM Movimientos WHERE Fecha BETWEEN#" & DatD & " #AND# " & DatH & " #AND Clave = '" & txt_consulta.Text & "'", conexion.conexion)
ARA San Juan 44 HEROES ‗‗‗‗|||||‗‗‗‗‗
- Editado Marcelo PF miércoles, 7 de agosto de 2019 2:38
-
-
te comento
al iniciar el Form este es el valor que toma las variables DatD y DatH antes de realizar cualquier cosa
#12:00:00 AM#
y ese valor se mantiene no se por que
en verdad ya estoy muy frustrado jejeje no se que alternativas me puedas dar
-
Tranquilo jeje tus dolores de cabeza recién empiezan...
dime donde ejecutas todo() si es en el Load del formulario no estaría bien pues siempre te tomará la fecha y el formato por defecto debería ser en um button, asi poder mofificar las fechas para la busqueda. Algo nos está faltando porque la lógica sería que según el pedido modificar las fechas para buscar en la BD no es así?
ARA San Juan 44 HEROES ‗‗‗‗|||||‗‗‗‗‗
-
efectivamente ejecuto todo () desde un boton
te comento que ya logre que me mostrara los datos que requiero pero el problema ahora radica en que no me los filtra segun el intervalo de fechas que ponga en los dtp
el codigo quedo asi:
Private Sub todo() Dim DatD = dtfecha1.Value.ToString("dd/MM/yyyy") Dim DatH = dtfecha2.Value.ToString("dd/MM/yyyy") adaptador = New OleDb.OleDbDataAdapter("SELECT * FROM Movimientos WHERE Fecha BETWEEN#" & DatD & " #AND# " & DatH & " #AND Clave = '" & txt_consulta.Text & "'", conexion.conexion) tabla = New DataTable
yo tengo registros del dia 27/07/2019 y un registro del 06/08/2019 el problema ahora es que si yo pongo los dtp del 01/08/2019 al 31/08/2019 me manda todos los registros desde el 27/07/2019
que tengo que modificar para que si yo selecciono los dias del 01/08/2019 al 31/08/2019 me muestre solo el registro que tengo con la fecha 06/08/2019
- Marcado como respuesta PoetaMaldito miércoles, 7 de agosto de 2019 4:18
-
Bueno pero las fechas quedaron correctas? Estoy mirando la sentencia no se sí está bien And ... And ... Pero te propongo que efectues otra pregunta para este caso para que los demás (y más capacitados en SQL) puedan acceder a responderte, eso si las fechas quedaron correctas
Sigo estudiando la Sentencia
Saludos
ARA San Juan 44 HEROES ‗‗‗‗|||||‗‗‗‗‗
- Editado Marcelo PF miércoles, 7 de agosto de 2019 4:26
-
Muchas Gracias Marcelo, en efecto las fechas quedaron Correctas, de antemano muchas gracias por el momento jugare un poco con el codigo que tengo para ver de que modo puedo modificar la sentencia de buscar y si no lo logro ya mañana realizare una pregunta nueva, en verdad Muchas gracias por tu tiempo y sobre todo tu paciencia infinita
-
De nada amigo, me quede pensando, para probar la búsqueda, quita la parte de la Clave de la senencia, si la busqueda funciona debería traerte todo lo que tenga ese el rango de fecha, se ser así la parte errada seria la Clave
Saludos
ARA San Juan 44 HEROES ‗‗‗‗|||||‗‗‗‗‗
-
Hola Marcelo Buena noche, te comento que al realizar pruebas me di cuenta que no funciona como debe de ser ya que para que funcione en el dtfecha1 debo poner la fecha 14/08/2019 y en el dtfecha2 la fecha actual para que me traiga todos los registros que coincidan con el textbox Clave
popr otro lado quite la parte de clave y tengo que hacer lo mismo que comente arriba, no se que esta pasando o que esta mal en mi codigo
-
Hola Poeta, lo que asumo que te debe estár pasando es que la comparación la hace en stirng por tanto verifica caracter por caracter ej si fuera 01/01/2008 contra 14/08/ 2009 pondría la comprobación con la segunda fecha primero, esto es lo que supongo, no puede comprobar tu sentencia. Puedes probar pasando a date la columna encuestión. Por otra parte has coloca una nueva pregunta en el foro para verificar esa sentencia, aquí hay gente de nivel catedratico que te puede ayudar en SQL, ni lo dudes je
Saludos y a disposición
ARA San Juan 44 HEROES ‗‗‗‗|||||‗‗‗‗‗