Código:
SQL = "UPDATE pcm_productos Set total_votos = "&total&", votos = "&rating&" WHERE id_prod = "&prodID&" "
| ||||
no me da el mismo error Microsoft JET Database Engine error '80040e07' No coinciden los tipos de datos en la expresión de criterios. /pruebas/add_valoracion.asp, line 14
__________________ Haz la guerra en la cama y el amor donde se te de la gana... El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!! |
| ||||
no se si puede ser problema de configuración porque en otra pagina tengo algo similar y me tira errores puede ser que este mal configurado el PWS???? porque siempre el error es RS.open strsql, oConn, (3, 3)--->con esos numeros
__________________ Haz la guerra en la cama y el amor donde se te de la gana... El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!! |
| ||||
No, el error es claro, tienes un problema con los tipos de datos, pon aqui la estructura de esa tabla. Salu2,
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
Microsoft JET Database Engine error '80040e07' No coinciden los tipos de datos en la expresión de criterios. /pruebas/add_valoracion.asp, line 14
Código:
y la tabla es pcm_productos<% stroconn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("pcmstore.mdb") set oConn = server.createobject("adodb.connection") oConn.open stroconn 'Recupero el valor del voto y el valor del ID del producto prodID = Request.Querystring("prodID") votos = Request.Querystring("Votos") 'Traigo los votos actuales que tiene el producto para sumarle los nuevos SQL="SELECT * FROM pcm_productos WHERE id_prod = '"&prodID&"' " Set Rs = Server.CreateObject("ADODB.Recordset") Rs.Open SQL, oConn,3,1 vact = Cint(Rs("total_votos")) total = vact + Votos 'Sumamos uno a las votaciones rating = Cint(Rs("votos"))+1 'Ahora que tengo el total que es lo que recibi de la base mas los votos nuevos actualizo la valoracion del producto segun su ID SQL = "UPDATE pcm_productos Set total_votos = '"&total&"', votos = '"&rating&"' WHERE id_prod = '"&prodID&"' " Set RS = oConn.Execute(SQL) 'Creamos una cookie con el id del producto para que no voten mas de una vez(puro grupo) le damos una semana Response.Cookies("valoracion")("prodID")= prodID Response.Cookies("valoracion").Expires = Now() + 7 %> <br> <br> <br> <br> <table width="215" height="22" border="0" align="center" cellpadding="1" cellspacing="0" bgcolor="#000000"> <tr> <td><table width="100%" height="140" border="0" cellpadding="4" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td class="text"><div align="center"><img src="http://www.pcmod.cl/images/index01.jpg" width="200" height="60"><br> Gracias por tu Voto<br> <a href="javascript:onClick=window.close()"><br> Cerrar Ventana </a><br> </div></td> </tr> </table></td> </tr> </table> id_prod (autonumerico) producto (texto) descripcion (texto) URL (texto) clicks (numerico) votos (numerico) total_votos (numerico)
__________________ Haz la guerra en la cama y el amor donde se te de la gana... El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!! Última edición por El_Metallick; 04/04/2005 a las 11:46 |
| ||||
OK, fijate muy bien, pues para mi, este es un problema que no estas muy familiarizado con el manejo de tipos de datos. Lo que haces basicamente en una consulta es pasarle variables a tu SQL, estas variables, basicamente pueden ser de dos tipos 1.- texto 2.- numericas SQL te pide si o si, que las variables de texto esten encerradas entre comillas simples 'este es un texto en SQL' en tanto que las variables de tipo nmericas pasan como estan 316 Por lo tanto, lo que hacemos es concatenar el valor de las variables a la SQL, pero si son de texto necesitamos concatenarlas con comillas simples "SELECT campo FROM tabla WHERE campo_texto = '" & variable & "'" Pero si el campo es de tipo numerico: "SELECT campo FROM tabla WHERE campo_numerico = " & variable A partir de ahi, hazlo tu mismo! ![]() Salu2,
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
AHI SI FUNCIONA!!!!!!!!!!!!!!!!!!!!!.... gracias a todos, en especial a dobled, quien ha desarrollado este script, bueno les doy los codigos para que funcione bien ver.asp, (esta en vez de valoracion.asp)
Código:
add_valoracion.asp<html> <head> <title>Productos</title> </head> <SCRIPT> <!-- function openWin(url, width, height) { var Win = window.open(url,"displayWindow",'width=' + width + ',height=' + height + ',resizable=no,scrollbars=no,menubar=no,status=no' ); } //--> </SCRIPT> <body> <% Set Conn = Server.CreateObject("ADODB.Connection") strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("pcmstore.mdb") Conn.Open strConn SQL="SELECT * FROM pcm_productos ORDER BY id_prod" set RS = Conn.Execute(SQL) Do While Not RS.EOF %> <table border="0" width="100%"> <tr> <td width="15%">Producto</td> <td width="85%"><a href="clicks.asp?url=<% = RS("URL") %>"><% = RS("producto") %></a></td> </tr> <tr> <td width="15%">Descripción</td> <td width="85%"><% = RS("descripcion") %></td> </tr> <tr> <td width="15%">Valoración</td> <td width="85%">Clicks: <% = RS("clicks") %> <% rate = Cint(Rs("total_votos"))/Cint(Rs("votos")) rate = Round(rate) Response.Write ("Este producto ha recibido "&Rs("votos")&" votos ") Response.Write ("<img src="""&rate&"_star_rating.gif"" width=""66"" height=""14"" alt="""&rate&" Estrellas"" border=""0"" align=""absmiddle"">") Response.Write (" - ") Response.Write ("<a href=""javascript:openWin('valoracion_producto.asp?prodID=" & rs("id_prod") & "','rate_site')"" style=""font-size:""11px""; font-style: italic;"">votar</>") %></td> </tr> </table><br><br> <% RS.MoveNext Loop %> </body> </html>
Código:
valoracion_producto.asp<% stroconn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("pcmstore.mdb") set oConn = server.createobject("adodb.connection") oConn.open stroconn 'Recupero el valor del voto y el valor del ID del producto prodID = Request.Querystring("prodID") votos = Request.Querystring("Votos") 'Traigo los votos actuales que tiene el producto para sumarle los nuevos SQL="SELECT * FROM pcm_productos WHERE id_prod = "&prodID&" " Set Rs = Server.CreateObject("ADODB.Recordset") Rs.Open SQL, oConn,3,1 vact = Cint(Rs("total_votos")) total = vact + Votos 'Sumamos uno a las votaciones rating = Cint(Rs("votos"))+1 'Ahora que tengo el total que es lo que recibi de la base mas los votos nuevos actualizo la valoracion del producto segun su ID SQL = "UPDATE pcm_productos Set total_votos = "&total&", votos = "&rating&" WHERE id_prod = "&prodID&" " Set RS = oConn.Execute(SQL) 'Creamos una cookie con el id del producto para que no voten mas de una vez(puro grupo) le damos una semana Response.Cookies("valoracion")("prodID")= prodID Response.Cookies("valoracion").Expires = Now() + 7 %> <br> <br> <br> <br> <table width="215" height="22" border="0" align="center" cellpadding="1" cellspacing="0" bgcolor="#000000"> <tr> <td><table width="100%" height="140" border="0" cellpadding="4" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td class="text"><div align="center"><img src="http://www.pcmod.cl/images/index01.jpg" width="200" height="60"><br> Gracias por tu Voto<br> <a href="javascript:onClick=window.close()"><br> Cerrar Ventana </a><br> </div></td> </tr> </table></td> </tr> </table>
Código:
clicks.asp<% prodID = Request.Querystring("prodID") valoracion = Request.Cookies("valoracion")("prodID") %> <script language="JavaScript"> function Rating(star) { if (star != "") self.location.href = "add_valoracion.asp?prodID=<%=prodID%>&Votos=" + star; return true; } // --> </script> <link href="default.css" rel="stylesheet" type="text/css"> </head> <body> <div align="center"> <% If valoracion = prodID Then %> <br> <br> <br> <br> <table width="215" height="22" border="0" align="center" cellpadding="1" cellspacing="0" bgcolor="#000000"> <tr> <td><table width="100%" height="140" border="0" cellpadding="4" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td class="text"><div align="center">Disculpa, pero tú ya has votado por este producto. Intenta la proxima semana <br> <a href="javascript:onClick=window.close()"><br> <br> Cerrar Ventana </a><br> </div></td> </tr> </table></td> </tr> </table> <%else%> <br> <span class="text2">Valoración de Productos<br> </span>Haz click en las estrellas que crees que<br> representan el valor de votos para el<br> producto elegido.<br> <br> <br> <table width="215" height="22" border="0" align="center" cellpadding="1" cellspacing="0" bgcolor="#000000"> <tr> <td><table width="100%" border="0" cellspacing="0" cellpadding="4" bgcolor="#FFFFFF"> <tr> <td width="50" class="text"><a href="javascript:Rating('0')"><img src="0_star_rating.gif" width="66" height="14" alt="0 Stars" border="0"></a></td> <td width="154" class="text">No lo compraría</td> </tr> <tr> <td width="50" class="text"><a href="javascript:Rating('1')"><img src="1_star_rating.gif" width="66" height="14" alt="1 Star" border="0"></a></td> <td width="154" class="text">Solo lo vería </td> </tr> <tr> <td width="50" class="text"><a href="javascript:Rating('2')"><img src="2_star_rating.gif" width="66" height="14" alt="2 Stars" border="0"></a></td> <td width="154" class="text">Algo tiene de bueno </td> </tr> <tr> <td width="50" class="text"><a href="javascript:Rating('3')"><img src="3_star_rating.gif" alt="3 Stars" width="66" height="14" border="0" align="absmiddle"></a></td> <td width="154" class="text">OK</td> </tr> <tr> <td width="50" class="text"><a href="javascript:Rating('4')"><img src="4_star_rating.gif" width="66" height="14" alt="4 Stars" border="0"></a></td> <td width="154" class="text">Excelente</td> </tr> <tr> <td width="50" class="text"><a href="javascript:Rating('5')"><img src="5_star_rating.gif" width="66" height="14" alt="5 Stars" border="0"></a></td> <td width="154" class="text">No puede faltar en el PC </td> </tr> </table></td> </tr> </table> <%End if%> </div>
Código:
y la BD pcmstore.mdb, la tabla pcm_productos<% Response.Buffer=TRUE url = Request.Querystring("url") if url <>"" then Set oConn = Server.CreateObject("ADODB.Connection") oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("pcmstore.mdb")&";" strsql = "SELECT * FROM pcm_productos WHERE url = '" & url & "'" Set rs = Server.CreateObject("ADODB.RecordSet") RS.open strsql, oConn, 3, 3 if rs.eof then rs.AddNew rs("clicks")= 1 rs("url") = url rs.update else rs("clicks")=rs("clicks")+1 rs.update end if rs.Close set rs=nothing oConn.Close response.redirect URL end if %> id_prod (autonumerico) producto (texto) descripcion (texto) URL (texto) clicks (numerico) votos (numerico) total_votos (numerico) Bueno y espero que todos disfrutemos de esto... muchas gracias...
__________________ Haz la guerra en la cama y el amor donde se te de la gana... El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!! |
| ||||
Adaptando el script a mi web me tope con un nuevo error: objeto Response error 'ASP 0156 : 80004005' Error de encabezado /am/metallica/add_valoracion.asp, line 34 Los enbezados HTTP ya están escritas en el explorador cliente. Cualquier cambio en el encabezado HTTP se debe hacer antes de escribir el contenido de la página. add_valoracion.asp
Código:
valoracion_producto.asp<!--#include file="lenguaje.asp" --> <html> <head> <title><% = Titulo %></title> <link rel="stylesheet" type="text/css" href="estilo1.css"> </head> <body> <% stroconn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("" & DB & "tablaturas.mdb") set oConn = server.createobject("adodb.connection") oConn.open stroconn 'Recupero el valor del voto y el valor del ID del producto ID = Request.Querystring("ID") votos = Request.Querystring("Votos") 'Traigo los votos actuales que tiene el producto para sumarle los nuevos SQL="SELECT * FROM tablaturas WHERE id = "&ID&" " Set Rs = Server.CreateObject("ADODB.Recordset") Rs.Open SQL, oConn,3,1 vact = Cint(Rs("total_votos")) total = vact + Votos 'Sumamos uno a las votaciones rating = Cint(Rs("votos"))+1 'Ahora que tengo el total que es lo que recibi de la base mas los votos nuevos actualizo la valoracion del producto segun su ID SQL = "UPDATE tablaturas Set total_votos = "&total&", votos = "&rating&" WHERE id = "&ID&" " Set RS = oConn.Execute(SQL) 'Creamos una cookie con el id del producto para que no voten mas de una vez(puro grupo) le damos una semana Response.Cookies("valoracion")("ID")= ID Response.Cookies("valoracion").Expires = Now() + 7 %> <br> <br> <br> <br> <table width="215" height="22" border="0" align="center" cellpadding="1" cellspacing="0"> <tr> <td><table width="100%" height="140" border="0" cellpadding="4" cellspacing="0"> <tr> <td class="text"><div align="center">Gracias por tu Voto<br> <a href="javascript:onClick=window.close()"><br> Cerrar Ventana </a><br> </div></td> </tr> </table></td> </tr> </table> </body> </html>
Código:
ver.asp<!--#include file="lenguaje.asp" --> <html> <head> <title><% = Titulo %></title> <% ID = Request.Querystring("ID") valoracion = Request.Cookies("valoracion")("ID") %> <script language="JavaScript"> function Rating(star) { if (star != "") self.location.href = "add_valoracion.asp?ID=<%=ID%>&Votos=" + star; return true; } // --> </script> <link rel="stylesheet" type="text/css" href="estilo1.css"> </head> <body> <div align="center"> <span class="text2">Valoración de Productos<br> </span>Haz click en las estrellas que crees que<br> representan el valor de votos para el<br> producto elegido.<br> <br> <br> <table width="215" height="22" border="0" align="center" cellpadding="1" cellspacing="0" bgcolor="#000000"> <tr> <td><table width="100%" border="0" cellspacing="0" cellpadding="4"> <tr> <td width="50" class="text"><a href="javascript:Rating('0')"><img src="<% = Img %>0_star_rating.gif" width="66" height="14" alt="0 Stars" border="0"></a></td> <td width="154" class="text">No lo compraría</td> </tr> <tr> <td width="50" class="text"><a href="javascript:Rating('1')"><img src="<% = Img %>1_star_rating.gif" width="66" height="14" alt="1 Star" border="0"></a></td> <td width="154" class="text">Solo lo vería </td> </tr> <tr> <td width="50" class="text"><a href="javascript:Rating('2')"><img src="<% = Img %>2_star_rating.gif" width="66" height="14" alt="2 Stars" border="0"></a></td> <td width="154" class="text">Algo tiene de bueno </td> </tr> <tr> <td width="50" class="text"><a href="javascript:Rating('3')"><img src="<% = Img %>3_star_rating.gif" alt="3 Stars" width="66" height="14" border="0" align="absmiddle"></a></td> <td width="154" class="text">OK</td> </tr> <tr> <td width="50" class="text"><a href="javascript:Rating('4')"><img src="<% = Img %>4_star_rating.gif" width="66" height="14" alt="4 Stars" border="0"></a></td> <td width="154" class="text">Excelente</td> </tr> <tr> <td width="50" class="text"><a href="javascript:Rating('5')"><img src="<% = Img %>5_star_rating.gif" width="66" height="14" alt="5 Stars" border="0"></a></td> <td width="154" class="text">No puede faltar en el PC </td> </tr> </table></td> </tr> </table> </div> </body> </html>
Código:
y no se porque el error si solo cambie Response.Cookies("valoracion")("prodID")= prodID por Response.Cookies("valoracion")("ID")= ID ... .. . <% Dim Conn Dim strConn Dim SQL Dim RS Dim rate Set Conn = Server.CreateObject("ADODB.Connection") strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("" & DB & "tablaturas.mdb") Conn.Open strConn SQL="SELECT * FROM tablaturas ORDER BY id" set RS = Conn.Execute(SQL) Do While Not RS.EOF %> <table border="0" width="100%"> <tr> <td width="100%"> <table border="0" width="100%"> <tr> <td width="85%" class="text"><a href="clicks1.asp?url=<% = RS("URL") %>"><% = RS("cancion") %></a> (<% = RS("formato") %>)</td> <td width="15%" class="text">Descargas: <% = RS("clicks") %></td> </tr> </table> </td> </tr> <tr> <td width="100%"><% = RS("tamaño") %>KB<br><% = RS("descripcion") %></td> </tr> <tr> <td width="100%"><% if RS("votos")="0" then Response.Write ("Este producto ha recibido "&Rs("votos")&" votos ") Response.Write ("<img src=""" & Img & "0_star_rating.gif"" width=""66"" height=""14"" alt="""&rate&" Estrellas"" border=""0"" align=""absmiddle"">") Response.Write (" - ") Response.Write ("<a href=""javascript:openWin('valoracion_producto.asp?ID=" & rs("id") & "','rate_site')"" style=""font-size:""11px""; font-style: italic;"">votar</>") else rate = Cint(Rs("total_votos"))/Cint(Rs("votos")) rate = Round(rate) Response.Write ("Este producto ha recibido "&Rs("votos")&" votos ") Response.Write ("<img src=""" & Img & "" & rate & "_star_rating.gif"" width=""66"" height=""14"" alt="""&rate&" Estrellas"" border=""0"" align=""absmiddle"">") Response.Write (" - ") Response.Write ("<a href=""javascript:openWin('valoracion_producto.asp?ID=" & rs("id") & "','rate_site')"" style=""font-size:""11px""; font-style: italic;"">votar</>") end if %></td> </tr> </table><br><br> <% RS.MoveNext Loop %> . .. ...
__________________ Haz la guerra en la cama y el amor donde se te de la gana... El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!! |
| ||||
es super raro, yo lo probe con access y arregle el primer problema que tenias, bueno mejor te comprimo todos los archivos y lo copias a la raiz te mando al correo
__________________ Usa títulos específicos y con sentido En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema. |
| ||||
es que tiene que haver un error porque con el codigo original no me tira errores y funciona perfectamente, lo que pasa es que cuando comence a adaptarlo a mi web todo bien solo que le agregue algunos campos a la BD y le modifique otros como id_prod por id solamente, y ahora me tira ese error que no se porque es porque comparando he cambiado todo
__________________ Haz la guerra en la cama y el amor donde se te de la gana... El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!! |
| ||||
El problema es que no tienes el buffer habilitado, pon esta linea al principio de tu codigo: Response.Buffer = true El redirect tiene que ser lo primero que aparezca en un ASP, de lo contrario, te tirara este error, lo que se hace es guardar todo el codigo cliente en el buffer para despues redirigir. En win2k para arriba deberia estar por default. Salu2,
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
y me percate recien de que pese a ese error: objeto Response error 'ASP 0156 : 80004005' Error de encabezado /am/metallica/add_valoracion.asp, line 34 Los enbezados HTTP ya están escritas en el explorador cliente. Cualquier cambio en el encabezado HTTP se debe hacer antes de escribir el contenido de la página. el sistema funciona igual, es decir que suma un voto al id y saca correctamente el promedio, el unico problema es que no sale el aviso de gracias por tu voto y cerrar ventana
__________________ Haz la guerra en la cama y el amor donde se te de la gana... El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!! |
| ||||
ahora esto: objeto Response error 'ASP 0156 : 80004005' Error de encabezado /am/metallica/add_valoracion.asp, line 9 Los enbezados HTTP ya están escritas en el explorador cliente. Cualquier cambio en el encabezado HTTP se debe hacer antes de escribir el contenido de la página.
Código:
<!--#include file="lenguaje.asp" --> <html> <head> <title><% = Titulo %></title> <link rel="stylesheet" type="text/css" href="estilo1.css"> </head> <body> <% Response.Buffer = true stroconn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("" & DB & "tablaturas.mdb") set oConn = server.createobject("adodb.connection") oConn.open stroconn 'Recupero el valor del voto y el valor del ID del producto ID = Request.Querystring("ID") votos = Request.Querystring("Votos") 'Traigo los votos actuales que tiene el producto para sumarle los nuevos SQL="SELECT * FROM tablaturas WHERE id = "&ID&" " Set Rs = Server.CreateObject("ADODB.Recordset") Rs.Open SQL, oConn,3,1 vact = Cint(Rs("total_votos")) total = vact + Votos 'Sumamos uno a las votaciones rating = Cint(Rs("votos"))+1 'Ahora que tengo el total que es lo que recibi de la base mas los votos nuevos actualizo la valoracion del producto segun su ID SQL = "UPDATE tablaturas Set total_votos = "&total&", votos = "&rating&" WHERE id = "&ID&" " Set RS = oConn.Execute(SQL) 'Creamos una cookie con el id del producto para que no voten mas de una vez(puro grupo) le damos una semana Response.Cookies("valoracion")("ID")= ID Response.Cookies("valoracion").Expires = Now() + 7 %> <br> <br> <br> <br> <table width="215" height="22" border="0" align="center" cellpadding="1" cellspacing="0"> <tr> <td><table width="100%" height="140" border="0" cellpadding="4" cellspacing="0"> <tr> <td class="text"><div align="center">Gracias por tu Voto<br> <a href="javascript:onClick=window.close()"><br> Cerrar Ventana </a><br> </div></td> </tr> </table></td> </tr> </table> </body> </html>
__________________ Haz la guerra en la cama y el amor donde se te de la gana... El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!! |
| ||||
Al principio, la primera linea de tu codigo antes de escribir ningun HTML... ![]()
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
ahi si gracias nuevamente amigo
__________________ Haz la guerra en la cama y el amor donde se te de la gana... El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!! |