ASP, consulta a BDD Access

Hola, disculpa que te moleste, te escribo para ver si me puedes resolver la siguiente duda que tengo, capturo unos datos en la página ASP, concretamente son una fechas, el código de eso es el siguiente:
<%if request.form("FechaInicial")="" then%>
<form method="POST" action="inventario.asp">
<div align="center">
<center>
 <p> </p>
<table border="0" width="50%" bgcolor="#F2F2F2">
<tr>
<td width="100%" colspan="2" bgcolor="#0000FF">
<p align="center"><font color="#FFFFFF">Rango de Fechas</font></td>
</tr>
<tr>
<td width="50%">Fecha Inicial:</td>
<td width="50%"><input type="text" name="FechaInicial" size="20"></td>
</tr>
<tr>
<td width="50%">Fecha Final: </td>
<td width="50%"> <input type="text" name="FechaFinal" size="20"></td>
</tr>
<tr>
<td width="100%" colspan="2">
<p align="center"><input type="submit" value="Enviar" name="B1"></td>
</tr>
</table>
</center>
</div>
</form>
<p align="center"> </p>
<p align="center"><a href="http://www.web.com/menu.asp">
<img border="0" id="img2" src="images/button11.jpg" height="20" width="100" alt="Menu Reportes" onmouseover="FP_swapImg(1,0,/*id*/'img2',/*url*/'images/button12.jpg')" onmouseout="FP_swapImg(0,0,/*id*/'img2',/*url*/'images/button11.jpg')" onmousedown="FP_swapImg(1,0,/*id*/'img2',/*url*/'images/button13.jpg')" onmouseup="FP_swapImg(0,0,/*id*/'img2',/*url*/'images/button12.jpg')" fp-style="fp-btn: Glass Capsule 1" fp-title="Menu Reportes"></a></p>
<p align="center"><a href="http://www.web.com/">
<img border="0" id="img1" src="button6.jpg" height="20" width="100" alt="Pagina Principal" onmouseover="FP_swapImg(1,0,/*id*/'img1',/*url*/'button7.jpg')" onmouseout="FP_swapImg(0,0,/*id*/'img1',/*url*/'button6.jpg')" onmousedown="FP_swapImg(1,0,/*id*/'img1',/*url*/'button8.jpg')" onmouseup="FP_swapImg(0,0,/*id*/'img1',/*url*/'button7.jpg')" fp-style="fp-btn: Glass Capsule 1" fp-title="Pagina Principal"></a></p>
<p align="center"> </p>
En esta pequeña forma en ASP, capturo la fecha (aquí no se en que forma capturala si así: "01012004" o así "01/01/2004"). Y estos datos los quiero incluir en forma de "parametros" en la consulta SQL.
Me marca el siguiente error:
Error Type:
Microsoft JET Database Engine (0x80040E07)
Data type mismatch in criteria expression.
/inventario.asp, line 94
A continuacion pego el codigo de lo que realiza al presionar el boton Submit.
Para ver si puedes ver en que parte tengo el error.
<%else
FechaInicial=replace(request.form("FechaInicial"),"'","")
FechaFinal=replace(request.form("FechaFinal"),"'","")
Dim oConn, rs, SQL
Dim nombre
set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("\dbf\Trafico2.mdb")
'SQL= "SELECT Trafico.Trafico, Trafico.FechaLLegada, Trafico.FechaSalida, Facturas.Factura, Facturas.OrdenCompra, Productos.Producto, Productos.Descripcion, Productos.Cantidad, Productos.UnidadMedida, Productos.CantPresentacion, Productos.Presentacion, Productos.Observaciones FROM (Trafico INNER JOIN Facturas ON Trafico.pk1=Facturas.pk1_trafico) INNER JOIN Productos ON Facturas.pk1=Productos.pk1_Facturas WHERE Trafico.FechaLlegada between '"&FechaInicial&"' and '"&FechaFinal&"'"
SQL= "SELECT Trafico.Trafico, Trafico.FechaLLegada, Trafico.FechaSalida, Facturas.Factura, Facturas.OrdenCompra, Productos.Producto, Productos.Descripcion, Productos.Cantidad, Productos.UnidadMedida, Productos.CantPresentacion, Productos.Presentacion, Productos.Observaciones FROM (Trafico INNER JOIN Facturas ON Trafico.pk1=Facturas.pk1_trafico) INNER JOIN Productos ON Facturas.pk1=Productos.pk1_Facturas WHERE (Trafico.FechaLlegada between '"&FechaInicial&"' and '"&FechaFinal&"') and (Trafico.FechaSalida = Null or Trafico.FechaSalida = 0)"
set rs = oConn.Execute(SQL)
if rs.EOF then
Response.Write("No hay ningún registro en esta tabla")
else
PintarTabla
end if
rs.Close
set rs = nothing
oConn.Close
set oConn = nothing
Sub PintarTabla ()
Response.Write( "<TABLE BORDER=""1"">" & vbCrlf)
Response.Write( "<TR>" & vbCrlf)
Response.Write( "<TD><B>Producto</B></TD>" & vbCrlf )
Response.Write( "<TD><B>Descripcion</B></TD>" & vbCrlf )
Response.Write( "<TD><B>Cantidad</B></TD>" & vbCrlf )
Response.Write( "<TD><B>Unidad Medida</B></TD>" & vbCrlf )
while not rs.EOF
Response.Write( "<TR>" & vbCrlf )
Response.Write( "<TD>" & rs.Fields("Producto") & "</TD>" )
Response.Write( "<TD>" & rs.Fields("Descripcion") & "</TD>" )
Response.Write( "<TD>" & rs.Fields("Cantidad") & "</TD>" )
Response.Write( "<TD>" & rs.Fields("UnidadMedida") & "</TD>" )
Response.Write( "</TR>" & vbCrlf )
rs.MoveNext
wend
Response.Write("</TABLE>")
End Sub 'PintarTabla
end if%>

1 Respuesta

Respuesta
1
Ahora no recuerdo como era en Access, pero creo que tienes que indicar a la consulta SQL que se trata de valores de fechas. No sé si era encerrando los valores entre comillas simples o ente almohadillas (#). Algo así como:
WHERE (Trafico.FechaLlegada between #"&FechaInicial&"# and #"&FechaFinal&"#)
En cualquier caso, las fechas te van a crear muchos dolores de cabeza, sobre todo por lo del formato americano y el europeo (mm/dd/yyyy o dd/mm/aaaa). Es posible que tengas que invertir días y meses antes de utilizar las fechas en tu consulta (pasarlas a formato americano), y también es posible que Access te juegue malas pasadas cuando día y mes son menores de 12. Lo mejor es guardar las fechas en formato texto (aaaammdd) y hacer las consultas en consecuencia.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas