![]() |
busqueda por rango de fecha :arriba:HOla amigos del foro me pueden ayudar con el siguiente problemita: necesito realizar una busqueda por rango de fechas en una tabla access 2000 con coneccion ADO y k me muestre los resultados en una grilla, el rango de fechas es seleccionado en dos textbox, el primero desde que fecha y el segundo hasta que fecha, y luego al presionar un boton buscar me muestre los resultados en la grilla eso, espero me puedan ayudar, gracias saludos:arriba: |
Re: busqueda por rango de fecha Cita:
"select * from tabla where fecha between '#01/01/2007#' and '#31/12/2007#'" si no te funciona asi quita los numerales despues las fechas las reemplazas por dtpickers o bien textbox nos vemos |
Re: busqueda por rango de fecha Cita:
Hola amigo GeoAvila una consulta, tienes algun ejemplo acerca de esta consulta que me puedas enviar porfavor, te lo agradeceria mucho:-) te cuidas:arriba: bye |
Re: busqueda por rango de fecha Especifica si es vb6 o .net En visualbasic6.0 lo hice de esta manera Private Sub cmdBusqueda_Click() Select Case List1.ListIndex Case 0 rsLectores.Filter = "" & List1 & " = '" & Text1 & "'" Case 1 To 2 rsLectores.Filter = "" & List1 & " LIKE '" & Text1 + "%" & "'" Case 3 rsLectores.Filter = "" & List1 & " >= '" & dtpDesde & "' and " & List1 & " <= '" & dtpHasta & "'" End Select If rsLectores.RecordCount <= 0 Then MsgBox "No se encontro ningun registro" Text1 = "" Text1.SetFocus End If End Sub Cambia los controles dtpicker por los text y el list1 por el campo de busqueda saludos |
Re: busqueda por rango de fecha Amigos ayudenme porfavor, no se en que estoy fallando para k me realice la busqueda por rangos de fechas, se los agradecere muchoo, es urgente aqui les dejo el codigo para k me ayuden Private Sub Command1_Click() Dim sql As String sql = " SELECT DATOSVISITADOR.RutVisitador, DATOSVISITADOR.DvVisitador, DATOSVISITADOR.NombreVisitador, DATOSCLIENTE.RutCliente, DATOSCLIENTE.DvCliente, DATOSCLIENTE.NombreCliente, OBSERVACIONESGENERALES.MontoCredito, OBSERVACIONESGENERALES.PlazoCredito, OBSERVACIONESGENERALES.NombrePersonaAtendio, OBSERVACIONESGENERALES.HoraVisita, OBSERVACIONESGENERALES.Fecha " sql = sql & "FROM (DATOSCLIENTE INNER JOIN (DATOSVISITADOR INNER JOIN VISITAS ON (DATOSVISITADOR.DvVisitador = VISITAS.DvVisitador) AND (DATOSVISITADOR.RutVisitador = VISITAS.RutVisitador)) ON (DATOSCLIENTE.ID = VISITAS.ID) AND (DATOSCLIENTE.DvCliente = VISITAS.DvCliente) AND (DATOSCLIENTE.RutCliente = VISITAS.RutCliente)) LEFT JOIN OBSERVACIONESGENERALES ON (VISITAS.DvCliente = OBSERVACIONESGENERALES.DvCliente) AND (VISITAS.RutCliente = OBSERVACIONESGENERALES.RutCliente) AND (VISITAS.ID = OBSERVACIONESGENERALES.ID);" rs1.Open sql & "WHERE (((OBSERVACIONESGENERALES.FECHA)= #" & Format(Txtfechainicio.Text, "mm/dd/yyyy") & "# and #" & Format(txtfechafin.Text, "mm/dd/yyyy") & "#", cnn1, adOpenDynamic, adLockOptimistic If rs1.BOF = False And rs1.EOF = False Then If Txtfechainicio.Text <> "" Or txtfechafin.Text <> "" Then If rs1("fecha") = Txtfechainicio.Text And txtfechafin.Text Then Call CargarDataGrid(DataGrid1) Else MsgBox ("no hay datos para cargar"), vbInformation End If Else MsgBox ("Debe seleccionar un dato"), vbCritical com_grupo.Enabled = True End If Else MsgBox ("La tabla no tiene registros"), vbCritical End If End Sub gracias saludos Juan |
Re: busqueda por rango de fecha POrfavor ayudenme que es urgente amigos:-( gracias saludos Cita:
|
Re: busqueda por rango de fecha Una consulta que me parece demasiado complicada, es decir, demasiados paréntesis sin sentido. ¿ pero, probaste con la primera respuesta que te dieron? "WHERE (((OBSERVACIONESGENERALES.FECHA) BETWEEN #" & Format(Txtfechainicio.Text, "mm/dd/yyyy") & "# and #" & Format(txtfechafin.Text, "mm/dd/yyyy") & "#", Aunque creo que, si las fechas vienen de unos TextBox no necesitas hacer el formato de conversión. Prueba así: "WHERE (((OBSERVACIONESGENERALES.FECHA) BETWEEN #" & Txtfechainicio & "# AND #" & txtfechafin & "#", |
Re: busqueda por rango de fecha Cita:
|
Re: busqueda por rango de fecha Por cierto, la sentencia SQL que tienes es.. guapa eh :aplauso: jejejeje en serio, si ves que te va mal mira de filtrarlo por yyyy/mm/dd (aunque con mm/dd/yyyy deberia de irte bien). Por cierto, respecto el código que va después de la SQL... te corregiria lo siguiente: If not (rs1.BOF And rs1.EOF) Then 'Es más fácil de leer con el not, no crees? If isdate(Txtfechainicio) Or isdate(txtfechafin) Then 'Para que haces la comprobación si ya has hecho la SQL? lo lógico seria hacer este filtro al principio de todo ya que si abres el recordset sin fecha te va a pegar un pedo de aquí a HonoLulu (o como se escriba). y utilizaria el isdate en vez de "" 'Creo que aquí pretendres preguntar que si la fecha del rs1 es igual al txtfechainicio y al tctfechafin, no? pues te falta otro = If rs1("fecha") = Txtfechainicio.Text And rs1("fecha") = txtfechafin.Text Then Call CargarDataGrid(DataGrid1) Else MsgBox ("no hay datos para cargar"), vbInformation End If Else MsgBox ("Debe seleccionar un dato"), vbCritical com_grupo.Enabled = True End If Else MsgBox ("La tabla no tiene registros"), vbCritical End If End Sub |
Re: busqueda por rango de fecha Amigos me sale un error que no se a que se debe, por favor ayudenme, aqui les dejo el codigo marcado en donde me sale el error: Error'-2147217900 (80040e14)`en tiempo de ejecucion: se encontraron caracteres despúes del final de la instrucción SQL. sql = " SELECT DATOSVISITADOR.RutVisitador, DATOSVISITADOR.DvVisitador, DATOSVISITADOR.NombreVisitador, DATOSCLIENTE.RutCliente, DATOSCLIENTE.DvCliente, DATOSCLIENTE.NombreCliente, OBSERVACIONESGENERALES.MontoCredito, OBSERVACIONESGENERALES.PlazoCredito, OBSERVACIONESGENERALES.NombrePersonaAtendio, OBSERVACIONESGENERALES.HoraVisita, OBSERVACIONESGENERALES.Fecha " sql = sql & "FROM (DATOSCLIENTE INNER JOIN (DATOSVISITADOR INNER JOIN VISITAS ON (DATOSVISITADOR.DvVisitador = VISITAS.DvVisitador) AND (DATOSVISITADOR.RutVisitador = VISITAS.RutVisitador)) ON (DATOSCLIENTE.ID = VISITAS.ID) AND (DATOSCLIENTE.DvCliente = VISITAS.DvCliente) AND (DATOSCLIENTE.RutCliente = VISITAS.RutCliente)) LEFT JOIN OBSERVACIONESGENERALES ON (VISITAS.DvCliente = OBSERVACIONESGENERALES.DvCliente) AND (VISITAS.RutCliente = OBSERVACIONESGENERALES.RutCliente) AND (VISITAS.ID = OBSERVACIONESGENERALES.ID);" rs1.Open sql & "(WHERE OBSERVACIONESGENERALES.FECHA BETWEEN #" & Txtfechainicio & "# AND #" & txtfechafin & "#)", cnn1, adOpenDynamic, adLockOptimistic les agradesco su ayuda saludos:-) Cita:
|
Re: busqueda por rango de fecha Es por el punto y coma que pones al final de la sentencia sql. Además debes quitar los paréntesis en la instrucción Open del recordset. En fin, prueba poniendo el código así: Código: Dim sql As String(DATOSCLIENTE.ID = VISITAS.ID) AND (DATOSCLIENTE.DvCliente = VISITAS.DvCliente) AND (DATOSCLIENTE.RutCliente = VISITAS.RutCliente) ¿No sería igual comparar solamente el ID? los demás campos, se supone que siempre son iguales. |
Re: busqueda por rango de fecha Gracias a todos por la ayuda que me han dado, espero porfavor me sigan ayudando con lo siguiente, miren ya no me salen errores en codigo, me muestra datos buscados en la grilla pero no todos, solo me muestra el primer dato de la tabla, me muestra la linea del primer registro, a k se puede deber esto? ayudenme porfavor les dejo el ultimo codigo que tengo gracias Private Sub Command1_Click() Dim sql As String sql = " SELECT DATOSVISITADOR.RutVisitador, DATOSVISITADOR.DvVisitador, DATOSVISITADOR.NombreVisitador, DATOSCLIENTE.RutCliente, DATOSCLIENTE.DvCliente, DATOSCLIENTE.NombreCliente, OBSERVACIONESGENERALES.MontoCredito, OBSERVACIONESGENERALES.PlazoCredito, OBSERVACIONESGENERALES.NombrePersonaAtendio, OBSERVACIONESGENERALES.HoraVisita, OBSERVACIONESGENERALES.Fecha " sql = sql & "FROM (DATOSCLIENTE INNER JOIN (DATOSVISITADOR INNER JOIN VISITAS ON (DATOSVISITADOR.DvVisitador = VISITAS.DvVisitador) AND (DATOSVISITADOR.RutVisitador = VISITAS.RutVisitador)) ON (DATOSCLIENTE.ID = VISITAS.ID) AND (DATOSCLIENTE.DvCliente = VISITAS.DvCliente) AND (DATOSCLIENTE.RutCliente = VISITAS.RutCliente)) LEFT JOIN OBSERVACIONESGENERALES ON (VISITAS.DvCliente = OBSERVACIONESGENERALES.DvCliente) AND (VISITAS.RutCliente = OBSERVACIONESGENERALES.RutCliente) AND (VISITAS.ID = OBSERVACIONESGENERALES.ID)" rs1.Open sql & "WHERE OBSERVACIONESGENERALES.FECHA BETWEEN #" & txtFechaInicio & "# AND #" & txtfechafin & "#", cnn1, adOpenDynamic, adLockOptimistic If rs1.BOF = False And rs1.EOF = False Then If txtFechaInicio.Text <> "" Or txtfechafin.Text <> "" Then If rs1("fecha") >= txtFechaInicio.Text And rs1("fecha") <= txtfechafin.Text Then rs1.MoveNext Call CargarDataGrid(DataGrid1) Else MsgBox ("no hay datos para cargar"), vbInformation End If Else MsgBox ("Debe seleccionar un dato"), vbCritical com_grupo.Enabled = True End If Else MsgBox ("La tabla no tiene registros"), vbCritical End If End Sub Cita:
|
Re: busqueda por rango de fecha el último código? pero si es el mismo de siempre ... Además ... mucho caso de los consejos no haces... anteriormente te dije que seria mejor cambiar esta línea: If txtFechaInicio.Text <> "" Or txtfechafin.Text <> "" Then por esta If isdate(txtFechaInicio) Or isdate(txtfechafin.Text) Then Y que de poco servia ponerla cuando ya has abierto el recordset ..... ya que si en el txt introduzco letras que pasará? pues que te colará todo ... o ... y si introduzco 30/02/07? pues que tambien colará ... (el 30 del 02 no existe..) un consejo (esta vez no sobre código): intenta desglosar el problema... pegar todo el código del proyecto aquí no es la mejor solución... donde está el error (en teoria) es en la SQL así que centrate en eso ... y explica un poco la estructura de la tabla. Saludos y suerte... |
Respuesta: Re: busqueda por rango de fecha Cita:
rs.Open "SELECT * From tabla where campo_marca=true and fecha between #& Format(Text1.Text, "dd/mm/yyyy") & "# and #" & Format(Text2.Text, "dd/mm/yyyy") & "# " Como le puedo hacer?. Espero me puedas ayudar por favor, muchas gracias =) |
Respuesta: busqueda por rango de fecha Hola usuario_16 Te recuerdo el aviso que había al final de este tema y que parece que no has leído. http://img39.imageshack.us/img39/9218/antiguow.jpg Tema cerrado. |
| La zona horaria es GMT -6. Ahora son las 07:49. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.