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

ayuda llevo un mes de lucha con este codigo

Estas en el tema de ayuda llevo un mes de lucha con este codigo en el foro de ASP Clásico en Foros del Web. Necesito ayuda : Quiero hacer un sistema de preguntas y respuestas , donde usuarios realizen preguntas y el administrador se las conteste , tengo dos ...
  #1 (permalink)  
Antiguo 17/11/2004, 20:14
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 21 años, 10 meses
Puntos: 0
ayuda llevo un mes de lucha con este codigo

Necesito ayuda :

Quiero hacer un sistema de preguntas y respuestas , donde usuarios realizen preguntas y el administrador se las conteste , tengo dos tablas

tabla 1 Preguntas

id
categoria
pregunta
usuario
imagen

tabla 2 respuestas

respuestaid
preguntaid
respuesta
imagen
usuario

El tema que quiero que cada pregunta tenga sus respuesta justo de bajo de cada pregunta que se realize , este es el codigo que estube trabajando pero tengo errores En el Recorset ya que si lo realizo asi me dice que el obejto esta abierto y no puedo realizar la operacion, intente abriendo dos veces la tabla cambiando el nombre del RS pero de esa forma me dice que pocos parametros se esperaba 1 , y me estoy volivendo loco, si alguno me puede ayudar agradecido ya que llevo mas de un mes con esto -


Set oConn = Server.CreateObject ("ADODB.Connection")
Set RS = Server.CreateObject ("ADODB.RecordSet")
oConn.Open "Driver={Microsoft Access Driver (*.mdb)}; " & "Dbq=" & Server.MapPath("base2.mdb")

sql ="SELECT TOP 10 * FROM preguntas WHERE Categoria= " & articulo & " ORDER BY id DESC"

RS.Open sql, oConn %> <%Do While not RS.EOF %> </tr>

<%Response.Write "<IMG SRC="""&RS("imagen")&""">" %>

<%Response.Write RS.Fields("pregunta")%>
<%Response.Write RS.Fields("usuario") %>
<%Session("idnumero") = RS("id")%>
<%response.write session ("idnumero") %>

<%sql ="SELECT TOP 10 * FROM respuestas WHERE respuestas_id= " & idnumero & " ORDER BY id DESC" RS.Open sql, oConn %>
<%Do While not RS.EOF %>

<%Response.Write "<IMG"&RS("imagen")&""">" %>
<%Response.Write RS.Fields("pregunta")%>
<% Response.Write RS.Fields("usuario") %>


<%RS.MoveNext
RS.Close
oConn.Close
Set RS = Nothing
Set oConn = Nothing

Loop

%>

<%
Session("sArticulo") = articulo



%>

<%RS.MoveNext
RS.Close
oConn.Close
Set RS = Nothing
Set oConn = Nothing

Loop
%>
  #2 (permalink)  
Antiguo 17/11/2004, 23:32
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
debe quedar asi

Código:
open rs
do rs
     open RS2
     DO RS2
     loop rs2
     close rs2
loop rs
close rs
close conn

Última edición por trasgukabi; 17/11/2004 a las 23:36
  #3 (permalink)  
Antiguo 18/11/2004, 05:24
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 21 años, 10 meses
Puntos: 0
pero el nombre de RS puede ser el mismo o hay que cambiarlo ? por que si lo cambio me dice obviamente que el objeto no existe y si pongo el mismo me dice que ya esta abierto ?
  #4 (permalink)  
Antiguo 18/11/2004, 06:16
 
Fecha de Ingreso: octubre-2003
Mensajes: 49
Antigüedad: 20 años, 7 meses
Puntos: 0
Pero pq dices que el objeto no existes, si debes de declararlo antes de abrirlo.

lo q dice trasgukabi me parece correcto y asi lo hago funcionar yo cuando necesito dos tablas de una BD.

si miras este codigo puedes ver como lo tengo definido.

SQL1="SELECT * FROM monitor "
SET Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "string de conexion"
SET RS1 = Conn.Execute(SQL1)
IF NOT RS1.EOF THEN
RS1.MOVEFIRST
DO WHILE NOT RS1.EOF
DOCUMENTO=RS1.FIELDS("CAMPO")
SQL2="SELECT * FROM documentos WHERE DOC_COD="&DOCUMENTO&""
SET Conn2 = Server.CreateObject("ADODB.Connection")
Conn2.Open "string_de_conexion"
SET RS2 = Conn.Execute(SQL2)
IF NOT RS2.EOF THEN
<<CONDICIONES>>
RS1.MOVENEXT
END IF
LOOP
END IF
RS1.CLOSE
CONN.CLOSE

-----------------
EL DO WHILE LO PUEDES HACER EN CUALQUIER LUGAR O INCLUSO EN AMBAS CONSULTAS PERO DEBES DE SABER MUY BIEN EN QUE ESTADO ESTAN LAS VARIABLES Y CUAL TABLA DESEAS RECORRER DE ACUERDO A QUE CRITERIO.
  #5 (permalink)  
Antiguo 18/11/2004, 17:24
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 21 años, 10 meses
Puntos: 0
ok lo hago asi pero por que me sigue saliendo este error :

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][Controlador ODBC Microsoft Access] Pocos parámetros. Se esperaba 1.
  #6 (permalink)  
Antiguo 30/11/2004, 15:58
Avatar de luisvasquez  
Fecha de Ingreso: diciembre-2003
Ubicación: Venezuela
Mensajes: 879
Antigüedad: 20 años, 6 meses
Puntos: 6
Amigo Hugo,
Perdoname que intente cambiar tu forma de programa esto, pero no sería más simple tener una sola tabla llamada "preguntas" y un campo adicional con la respuesta?

Se supone que existe una sola respuesta por cada pregunta no es cierto?

De esta manera es más sencillo desplegar los datos en el orden que los quieres, recorriendo la tabla PREGUNTAS y escribiendo las respuestas, si las tiene..

Tal vez estoy diciendo una locura, pero me parece que yo intentaría hacerlo asi.

Saludos, Luis
  #7 (permalink)  
Antiguo 30/11/2004, 20:54
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 5 meses
Puntos: 16
Set oConn = Server.CreateObject ("ADODB.Connection")
Set RS = Server.CreateObject ("ADODB.RecordSet")
Set RS2 = Server.CreateObject ("ADODB.RecordSet")
oConn.Open "Driver={Microsoft Access Driver (*.mdb)}; " & "Dbq=" & Server.MapPath("base2.mdb")

sql ="SELECT TOP 10 * FROM preguntas WHERE Categoria= " & articulo & " ORDER BY id DESC"

sql ="SELECT TOP 10 * FROM respuestas WHERE respuestas_id= " & idnumero & " ORDER BY id DESC"

RS.Open sql, oConn
RS2.Open sql2, oConn

y usa el RS para las preguntas y el RS2 para las respuestas......
__________________
CreandoWebs.com
www.creandowebs.com
PLANTILLAS TEMPLATEMONSTER CON 10% DE DESCUENTO
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 23:25.