Foros del Web » Programando para Internet » ASP Clásico »

buscar rango de fechas

Estas en el tema de buscar rango de fechas en el foro de ASP Clásico en Foros del Web. Saludos Tengo un buscador en mi servidor para consultas del estado de un producto, Pero si quiero mostrar un rango de fechas , me marca ...
  #1 (permalink)  
Antiguo 16/08/2004, 10:53
Avatar de Boxmaster  
Fecha de Ingreso: agosto-2004
Ubicación: Ahorita... frente a mi PC
Mensajes: 74
Antigüedad: 19 años, 10 meses
Puntos: 0
Exclamación buscar rango de fechas

Saludos

Tengo un buscador en mi servidor para consultas del estado de un producto,

Pero si quiero mostrar un rango de fechas , me marca error mi codigo

Tengo tres textbox en mi formulario, uno para seleccionar el taller, otro para la primera fecha, el segundo para la segunda fecha, Ok

a continuacion muestro parte del codigo que estoy usando:

<%
'Leo el valor introducido por el usuario
Dim frmFecha1, frmFecha2, frmTaller
frmFecha1 = Trim(Request("txtFecha1"))
frmFecha2 = Trim(Request("txtFecha2"))
frmTaller = Trim(Request("selTaller"))

If frmFecha1 = "" AND frmFecha2 = "" AND frmTaller = "" Then
objConn.Close
Set objConn = Nothing
Response.Write "<br><br>Lo sentimos, no podemos mostrarle la información que solicito."
Response.Write "<br><br>Por favor llene el formulario con los datos correctos."
Response.Write "<br><br>De "
Response.Write "<a href='" & Request.ServerVariables("HTTP_REFERER") & "'>"
Response.Write "Click aquí"
Response.Write "</a> Para regresar.<br><br><br><br><br><br><br><br><br><br>< br>"
%>
<%
Response.End
'End If

Else

'Crea la variable para la instruccion SQL
Dim strSQL
strSQL = "SELECT * FROM Acumulado WHERE Fecha >= like '%" & frmFecha1 & "%' AND Fecha <= like '%" & frmFecha2 & "%' AND Taller like '%" & frmTaller & "%' ORDER BY Fecha DESC" 'UCase(PO) like '%" & frmOrden & "%' ORDER BY PO DESC"


'Crea una instancia del objeto Recordset y ejecuta la instruccion SQL
Dim objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
'Abre el recordset con un Keyset
objRS.Open strSQL, objConn,1,3

'Necesitamos crear una variable contadora para llevar la cuenta
Dim iCuentaRegistros
iCuentaRegistros = 0

'Determina si hay registros en objRS o no.

If objRS.EOF Then
'No se devolvieron registros para los caracteres introducidos por el usuario
Response.Write "<br><font color='#000000' size='1' face='Verdana'>"
Response.Write "No se pudo realizar la búsqueda con el dato: Taller " & UCase(frmTaller) & ", del " & UCase(frmFecha1) & " al " & UCase(frmFecha2) & "<br>"
Response.Write "<br>"
Response.Write "Por favor intentelo de nuevo.<br><br>"
'Response.Write "Si desea agregar un registro nuevo "
'Response.Write "<strong><a href='/qy/confeccion/add_faltantes.asp'>Click Aqu&iacute;</a></strong></font><br><br><br><br><br>"
'que comiencen con " & UCase(frmModelo) & "&nbsp;" & UCase(frmMaterial) & ":"

Else

'No hay más Modelos que coincidan con la condición introducida
'por el usuario.
%>

y a continuacion pinto la tabla e introduzco los datos de la busqueda realizada.

Todo marchaba bien con mi buscador, pero cuando quise modificarlo para que realizara busquedas por rango de fechas, marca el siguiente error:

Información técnica (para personal de soporte técnico)

Tipo de error:
Error de compilación de Microsoft VBScript (0x800A03EA)
Error de sintaxis
/qy/confeccion/mostrar_acumulado.asp, line 50, column 50


Si alguien me puede ayudar con este dato, se los agradezco mucho.


Saludos a todos los del foro
  #2 (permalink)  
Antiguo 16/08/2004, 10:57
 
Fecha de Ingreso: marzo-2004
Mensajes: 41
Antigüedad: 20 años, 3 meses
Puntos: 0
estas intentando comparar strings como fechas..utiliza la funcion datediff..saludos
  #3 (permalink)  
Antiguo 16/08/2004, 10:58
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
¿puedes poner la linea 50?
Si la linea 50 es objRS.Open strSQL, objConn,1,3, postea, pf, el contenido de strSQL.
  #4 (permalink)  
Antiguo 16/08/2004, 11:09
Avatar de Boxmaster  
Fecha de Ingreso: agosto-2004
Ubicación: Ahorita... frente a mi PC
Mensajes: 74
Antigüedad: 19 años, 10 meses
Puntos: 0
el error lo esta marcando en la linea 56 que hace alusion a la instruccion strSQL que esta en la linea 50

'Crea una instancia del objeto Recordset y ejecuta la instruccion SQL
Dim objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
'Abre el recordset con un Keyset

exactamente aqui >>>> objRS.Open strSQL, objConn,1,3
  #5 (permalink)  
Antiguo 16/08/2004, 11:17
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Cita:
Iniciado por Myakire
¿puedes poner la linea 50?
Si la linea 50 es objRS.Open strSQL, objConn,1,3, postea, pf, el contenido de strSQL.
Puedes poner el contenido de strSQL.
Haz un response.write strSQL para ver que es lo que se ha formado como consulta. Comenta la linea 50 y haz lo que sea necesario para que no truene al grado de no mostrar la salida de ese write.

Asi será mucho mas rápido poder ayudarte.
  #6 (permalink)  
Antiguo 16/08/2004, 11:40
Avatar de Boxmaster  
Fecha de Ingreso: agosto-2004
Ubicación: Ahorita... frente a mi PC
Mensajes: 74
Antigüedad: 19 años, 10 meses
Puntos: 0
el tipo de error es el siguiente:

Tipo de error:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis (falta operador) en la expresión de consulta 'Fecha >= like '%10/08/04%' AND Fecha <= like '%16/08/04%' AND Taller like '%Qualyconf%''.
/qy/confeccion/mostrar_acumulado.asp, line 58


La salida que ma da despues es la siguiente:

selTaller=Qualyconf&txtFecha1=10%2F08%2F04&txtFech a2=16%2F08%2F04&Submit=Ok

La linea 50 esta si:

'Crea la variable para la instruccion SQL
Dim strSQL
'En estas lineas trato de hacer la comparacion de las fechas, si fecha1 >= objRS("Fecha") y fecha2 <= objRS("Fecha") y que sea igual a Taller = objRS("Taller")

strSQL = "SELECT * FROM Acumulado WHERE Fecha >= like '%" & frmFecha1 & "%' AND Fecha <= like '%" & frmFecha2 & "%' AND Taller like '%" & frmTaller & "%' ORDER BY Fecha DESC"

Tal vez no estoy haciendo la comparacion de la forma correcta, es en la instruccion strSQL donde se hace, o hago la comparacion en oto lado, por ejemplo:

<% Do While Not objRS.EOF %>
  #7 (permalink)  
Antiguo 16/08/2004, 11:51
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Cita:
[Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis (falta operador) en la expresión de consulta 'Fecha >= like '%10/08/04%' AND Fecha <= like '%16/08/04%' AND Taller like '%Qualyconf%''.
/qy/confeccion/mostrar_acumulado.asp, line 58
Con esto, uno facilmente se da cuenta que debes cambiarlo asi:

strSQL = "SELECT * FROM Acumulado WHERE Fecha like '%" & frmFecha1 & "%' AND Fecha like '%" & frmFecha2 & "%' AND Taller like '%" & frmTaller & "%' ORDER BY Fecha DESC"
  #8 (permalink)  
Antiguo 16/08/2004, 12:05
Avatar de Boxmaster  
Fecha de Ingreso: agosto-2004
Ubicación: Ahorita... frente a mi PC
Mensajes: 74
Antigüedad: 19 años, 10 meses
Puntos: 0
realice el cambio que me dices, pero en la busqueda no me muestra nada.

Da el siguiente mensaje (este mensaje es el que yo puse, para que el usuario introduzca datos en los campos del form)

"No se pudo realizar la búsqueda con el dato: Taller QUALYCONF, del 10/08/04 al 16/08/04

Por favor intentelo de nuevo."

Pero si introduzco solo una fecha, si realiza la busqueda pero con el dato que introduje

Ej. Taller: Qualytel - fecha1: 10/08/04 Fecha2: ""

Da el siguiente dato:

Acumulado: QUALYCONF Del 10/08/04 al Calendario Imprimir Ayuda

Fecha Taller Recibido Terminado Saldo Enviado Inventario Producción Facturado
10/08/04 Qualyconf 9656 7500 2156 5000 4656 0 0

Se encontraron 1 registros.

Cuando quiero realizar la consulta por rango no muestra datos, pero si introduzco una fecha solo da el resultado arriba escrito

******
Ayuda *
******
  #9 (permalink)  
Antiguo 16/08/2004, 12:15
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Una consulta por rangos de fechas es con Entre o Between:

Sintaxis
expr [Not] Entre valor1 Y valor2
La sintaxis del operador Entre...Y consta de las siguientes partes:
Parte Descripción
expr Expresión que identifica el campo que contiene los datos que desea evaluar.
valor1, valor2 Expresiones en comparación con las cuales desea evaluar expr.

O bien:

select * from tabla where fecha between #fecha1# and #fecha2#

Donde fecha1 y fecha2 son variables con los datos que necesitas. Si deseas formarlas "a pie" puedes hacer algo como lo siguiente:

f1=cdate(fecha1)
f2=cdate(fecha2)
n2="#"&year(fecha2)&"/"&month(fecha2)&"/"&day(fecha2)&"#"
n1="#"&year(fecha1)&"/"&month(fecha1)&"/"&day(fecha1)&"#"

Y usas n1 y n2 para tu consulta.
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 16:20.