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

Consultar Campo Vacio de una BD

Estas en el tema de Consultar Campo Vacio de una BD en el foro de ASP Clásico en Foros del Web. Hola a todos... Estoy trabajando en la creación de una encuesta, la cual ya funciona, pero quedó un poco limitada al momento de grabar las ...

  #1 (permalink)  
Antiguo 01/06/2010, 09:52
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Exclamación Consultar Campo Vacio de una BD

Hola a todos... Estoy trabajando en la creación de una encuesta, la cual ya funciona, pero quedó un poco limitada al momento de grabar las respuestas (por la premura de la implementación). Resulta que cuando un reactivo no es contestado, en mi tabla de respuestas no se agrega nada, esto es, se contestas las preguntas 1,2,3,5,6,... las respuestas se graban:

idpregunta | respuesta
1|resp1
2|resp2
3|resp3
5|resp5
6|resp6
... |resp...

cuando muestro los resultados se hace de la sig manera:

Reactivo 1: pregunta


Reactivo 2: pregunta
No

Reactivo 3:pregunta
<------ NADA ME MUESTRA PUESTO QUE NO HAY EXISTE EN LA BD

Reactivo 4: pregunta
LO DESCUBRÍ EN GOOGLE

....

al hacer la consulta, quiero poner una leyenda de "NO CONTESTADO" en cada respuesta que no esté en la BD, pero no he sabido cómo

Puse la siguiente condición en el ciclo de respuestas:
Código:
for i=1 to 3
%><b><%
   DBresp.open "Select A.Idpregunta, C.Pregunta From (Respuestas A left join Posrespuesta B on (A.Idpregunta = B.Idpregunta)) left join Preguntas C on (A.Idpregunta = C.Idpregunta) Where A.Idpregunta = "& i &" and C.Idpregunta = "& i &"  Group By A.Idpregunta, C.Pregunta", Con 
        Do While not DBresp.eof 'Inicia el ciclo de preguntas
		response.write "Reactivo " & DBresp("Idpregunta") & ": " & DBresp("Pregunta") &  "<br />"
		DBresp.movenext
		%></b><%
	loop	
DBresp.Close

for j=1 to 3
  DBresp.open "Select B.Idpregunta, B.Posrespuesta From ((Respuestas A left join Posrespuesta B on (A.Idpregunta = B.Idpregunta)) left join Preguntas C on (A.Idpregunta = C.Idpregunta)) left join Regcontestada D on (A.Idcont = D.Idcont) Where A.respuesta = '"& j &"' and  A.Idpregunta = "& i &" and B.Punpreg = '"& j &"'  and C.Idpregunta = "& i &" and D.Carrera = '"& idinst &"' Group By  B.Idpregunta, B.Posrespuesta", Con
  Do While not DBresp.eof'Inicia el ciclo de respuestas
	If (DBresp("Idpregunta") <> i) Then
		response.Write("NO SE CONTESTO")
	Else
		response.Write DBresp("Posrespuesta")
	End If
	DBresp.movenext
	%><br /><br /><%
  loop
  DBresp.Close
Next
%></b><%			
Next
y me muestra las respuestas existentes, pero nunca me imprime response.Write("NO SE CONTESTO")...

¿Alguién tiene una ídea de cómo puedo resolver este detalle?

Gracias de antemano.

Nota: no es opción por el momento modificar al momento de guardar la encuesta.
  #2 (permalink)  
Antiguo 01/06/2010, 09:59
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Consultar Campo Vacio de una BD

No vi a mucho detalle tu código, pero si tu consulta te regresa el campo vacío (supongo asi es por que veo tienes outer joins), debes preguntar si el campo es nulo con IsNull(rs("campo"))

Saludos
  #3 (permalink)  
Antiguo 01/06/2010, 10:22
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Consultar Campo Vacio de una BD

Lo puse de la siguiente manera:

Código:
Do While not DBresp.eof 'Inicia el ciclo de respuestas
	If IsNull(DBresp("Idpregunta")) Then
		response.Write("NO SE CONTESTO")
	Else
		response.Write DBresp("Posrespuesta")
	End If
	DBresp.movenext
        %><br /><br /><%
loop
pero nada aún, sólo me imprime las que están contestadas....

en mis consultas, sólo estoy usando "left join", no sé si de esa manera me esté eligiendo sólo los que están...



Estaba pensando un poco, y me surgió la siguietne duda... IsNull(RS("x")) verifica un registro existente en la tabla, pero con valor NULL, ¿correcto?, entonces bien, en mi caso es, que el registro en realidad no existe, de esta manera por eso no imprime lo que pongo, porque en realidad nunca compara con un registro nulo....

No sé si esto que acabo de escribir tenga sentido, pero en mi cabeza suena algo lógico :S

¿Estoy en lo correcto o sigo perdido?

Última edición por JavierMMM; 01/06/2010 a las 11:54
  #4 (permalink)  
Antiguo 02/06/2010, 01:17
 
Fecha de Ingreso: mayo-2009
Mensajes: 201
Antigüedad: 14 años, 11 meses
Puntos: 9
Respuesta: Consultar Campo Vacio de una BD

te has confundido...

If IsNull(DBresp("Idpregunta")) Then

estas preguntando si es null el id, logicamente eso no tiene sentido, tu quieres saber si la RESPUESTA es null:

If IsNull(DBresp("Posrespuesta") Then
  #5 (permalink)  
Antiguo 02/06/2010, 09:19
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Consultar Campo Vacio de una BD

Buena observación monxas, pero aún verificando IsNull(DBresp("Posrespuesta"), no me imprime la leyenda de que no se contestó ...

¿Tendré algo mal en la consulta?
  #6 (permalink)  
Antiguo 02/06/2010, 09:36
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Consultar Campo Vacio de una BD

Vaya, es cierto, no se por que vi que tenias outers, entonces si solo son joins simples supongo que no tendrás un registro con un campo correspondiente al reactivo sin valor.

Traté de entender tu código y se me cruzaron los ojos, entre los FOR anidados y la consulta con subconsultas (¿Qué BD's estas usando, por cierto?) decidí dejarlo por la paz.

¿Puedes explicar un poco la lógica de tu código y la estructura de tus tablas?
  #7 (permalink)  
Antiguo 02/06/2010, 10:01
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Consultar Campo Vacio de una BD

Estoy usando una base de datos en Access, y el diseño de la misma no es mio, así que trataré de ser lo más claro posible dentro de lo que le entiendo :S ...

Las tablas que tengo son las siguientes:

Tabla:Preguntas
Idpregunta Unidad Idgrupo Pregunta Idtipo

Tabla: Respuestas
Idresp Idcont Idpregunta respuesta

Tabla: Regcontestada
Idcont Idusuario Facultad Carrera

Tabla: Posrespuesta
Idposrespuesta Idpregunta Posrespuesta Punpreg



El primer For me imprime el numero de reactivo y el reactivo en sí, que para ese no hay tanta brona....

El For anidado lo que hace es, imprimirme todas las respuestas contenidas en una tabla con el mismo nombre, lo que eso me lo hace a la perfección.

El detalle que me aparece es, que cuando se hace el inser al momento de grabar las encuesta contestada, no me graba las que no se contestan, y cuando hago la consulta, no me respeta el IsNull, para poder imprimir una leyenda.

Espero haberme explicado correctamente
  #8 (permalink)  
Antiguo 02/06/2010, 16:39
 
Fecha de Ingreso: mayo-2009
Mensajes: 201
Antigüedad: 14 años, 11 meses
Puntos: 9
Respuesta: Consultar Campo Vacio de una BD

yo probaria esto:

If (DBresp("Idpregunta")<>"") Then
response.Write DBresp("Posrespuesta")
Else
response.Write("NO SE CONTESTO")
End If
  #9 (permalink)  
Antiguo 02/06/2010, 17:07
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Consultar Campo Vacio de una BD

Ya lo hice de esa manera, nada.... Además de:

If (DBresp("Idpregunta")<>i) Then
response.Write DBresp("Posrespuesta")
Else
response.Write("NO SE CONTESTO")
End If

If (j<>i) Then
response.Write DBresp("Posrespuesta")
Else
response.Write("NO SE CONTESTO")
End If

entre varias cosas más...

como ejemplo, respondo las preguntas 1 y 3, la dos la dejo en blanco y no se graba en mi tabla de respuestas.... y cuando hago la consulta que puse anteriormente, me muestra a la perfección las respuestas de 1 y 3, pero no entra a 2...

  #10 (permalink)  
Antiguo 02/06/2010, 18:32
 
Fecha de Ingreso: mayo-2009
Mensajes: 201
Antigüedad: 14 años, 11 meses
Puntos: 9
Respuesta: Consultar Campo Vacio de una BD

joder, te corrijo algo y luego te lo pongo yo mal...


If DBresp("Posrespuesta")<>"" Then
response.Write DBresp("Posrespuesta")
Else
response.Write("NO SE CONTESTO")
End If

Te habia puesto pregunta otra vez...
  #11 (permalink)  
Antiguo 03/06/2010, 08:30
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Consultar Campo Vacio de una BD

noup, no funciona tampoco de esa manera.....

la verdad ya no se me ocurre nada para poder comparar...



No sé si tenga que ver en la consulta, que en lugar de usar sólo left join, deba de utilizar algo más.... estoy bloqueao.....
  #12 (permalink)  
Antiguo 08/06/2010, 08:28
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Consultar Campo Vacio de una BD

Hice algunas modificaciones dentro del ciclo anidado y me funciona parcialmente. Lo que hago ahora es lo siguiente:

Código:
for i=1 to 3
	DBresp.open "Select A.Idpregunta, C.Pregunta From (Respuestas A left join Posrespuesta B on (A.Idpregunta = B.Idpregunta)) left join Preguntas C on (A.Idpregunta = C.Idpregunta) Where A.Idpregunta = "& i &" and C.Idpregunta = "& i &"  Group By A.Idpregunta, C.Pregunta", Con 
	Do While not DBresp.eof'Inicia el ciclo de preguntas
		response.write "<b>Reactivo " & DBresp("Idpregunta") & ": " & DBresp("Pregunta") & "</b><br />"
		DBresp.movenext
	loop
	DBresp.Close
	
     for j=1 to 3
        Rs.Open "Select A.Idpregunta as AR, C.Idpregunta as AP, B.Idpregunta as APR, B.Posrespuesta From ((Respuestas A left outer join Posrespuesta B on (A.Idpregunta = B.Idpregunta)) left outer join Preguntas C on (A.Idpregunta = C.Idpregunta)) left join Regcontestada D on (A.Idcont = D.Idcont) Where A.respuesta = '"& j &"' and  A.Idpregunta = "& i &" and B.Punpreg = '"& j &"' and C.Idpregunta = "& i &" and D.Carrera = '"& idinst &"' Group By  A.Idpregunta, C.Idpregunta, B.Idpregunta, B.Posrespuesta Order By B.Idpregunta", Con

	if Not Rs.EOF Then
		response.Write(Rs("Posrespuesta")) & "</b><br />"
		f=Rs("Posrespuesta")
		Rs.movenext
		Rs.Close
		exit for
  	        else if Rs.EOF Then
			response.Write("No se contestó") & "</b><br />"
		end if
	end if
	Rs.close						
     Next
Next
Lo que pasa en el ciclo anidado es, que recorre el rs y va imprimiendo lo que encuentra, y lo que no, pues imprime "No se contestó". Hasta ahí todo bien en funcionamiento de lo que está programado, pero no en cuestión de visualización,. porque algunas veces el registro se encuentra la la posición 3, así que imprime

"No se contestó"
"No se contestó"
8

y esto no debe de verse.

Mi pregunta viene en el sentido de, ¿cómo puedo hacerle para que me recorra el rs en su totalidad y si encuentra un registro lo imprima en pantalla y cuando no, ponga una sola vez la leyenda "No se contestó"?

Gracias por su ayuda.
  #13 (permalink)  
Antiguo 08/06/2010, 08:56
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Respuesta: Consultar Campo Vacio de una BD

Código ASP:
Ver original
  1. var interruptor
  2. interruptor = 0
  3. for i=1 to 3
  4.     DBresp.open "Select A.Idpregunta, C.Pregunta From (Respuestas A left join Posrespuesta B on (A.Idpregunta = B.Idpregunta)) left join Preguntas C on (A.Idpregunta = C.Idpregunta) Where A.Idpregunta = "& i &" and C.Idpregunta = "& i &"  Group By A.Idpregunta, C.Pregunta", Con
  5.     Do While not DBresp.eof'Inicia el ciclo de preguntas
  6.         response.write "<b>Reactivo " & DBresp("Idpregunta") & ": " & DBresp("Pregunta") & "</b><br />"
  7.         DBresp.movenext
  8.     loop
  9.     DBresp.Close
  10.    
  11.      for j=1 to 3
  12.         Rs.Open "Select A.Idpregunta as AR, C.Idpregunta as AP, B.Idpregunta as APR, B.Posrespuesta From ((Respuestas A left outer join Posrespuesta B on (A.Idpregunta = B.Idpregunta)) left outer join Preguntas C on (A.Idpregunta = C.Idpregunta)) left join Regcontestada D on (A.Idcont = D.Idcont) Where A.respuesta = '"& j &"' and  A.Idpregunta = "& i &" and B.Punpreg = '"& j &"' and C.Idpregunta = "& i &" and D.Carrera = '"& idinst &"' Group By  A.Idpregunta, C.Idpregunta, B.Idpregunta, B.Posrespuesta Order By B.Idpregunta", Con
  13.  
  14.     if Not Rs.EOF Then
  15.         response.Write(Rs("Posrespuesta")) & "</b><br />"
  16.         f=Rs("Posrespuesta")
  17.         Rs.movenext
  18.         Rs.Close
  19.         exit for
  20.             else if Rs.EOF and interruptor = 0 Then
  21.             response.Write("No se contestó") & "</b><br />"
  22.                                 interruptor = 1
  23.         end if
  24.     end if
  25.     Rs.close                       
  26.      Next
  27. interruptor = 0
  28. Next

Asi de pronto se me ocurre que pongas un interruptor (swicht) de esa manera puedes controlar cuantas veces quieres que entre... de todas formas te lo he colocado en sitios que he visto...
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras

Última edición por Wasper; 08/06/2010 a las 09:55
  #14 (permalink)  
Antiguo 08/06/2010, 09:08
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Consultar Campo Vacio de una BD

Gracias Wasper, ahora tengo una perspectiva más... con el código que me compartiste, cuando en un registro no tengo elementos almacenados, me muestra SÓLO UNA VEZ la leyenda de "No se contestó"... seguiré en esta misma dirección buscándole, porque en los registros que el la posiciçon 1 no tienen registro, me antepone la leyenda de la siguiente manera:

Reactivo 1: Marca en el espacio correspondiente al trimestre que cursas actualmente
No se contestó


Reactivo 2: ¿Sabes que en la página de recursos educacionales está funcionando un apartado con insumos para la modalidad educativa Práctica Integrativa?
No se contestó

Reactivo 3: Si tu respuesta es SÍ, Por favor marca la opción que responda a la forma de cómo te enteraste
No se contestó
Me la sugirió el facilitador

Gracias por la ayuda
  #15 (permalink)  
Antiguo 08/06/2010, 09:21
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Respuesta: Consultar Campo Vacio de una BD

Cita:
Reactivo 1: Marca en el espacio correspondiente al trimestre que cursas actualmente
No se contestó


Reactivo 2: ¿Sabes que en la página de recursos educacionales está funcionando un apartado con insumos para la modalidad educativa Práctica Integrativa?
No se contestó

Reactivo 3: Si tu respuesta es SÍ, Por favor marca la opción que responda a la forma de cómo te enteraste
No se contestó
Me la sugirió el facilitador
Me podrias poner un ejemplo como este, comentandome como quieres que se vea en realidad?

Gracias a ti compañero
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras
  #16 (permalink)  
Antiguo 08/06/2010, 09:34
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Consultar Campo Vacio de una BD

La manera de visualizar correctamente los resultados sería la siguiente:

Reactivo 1: Marca en el espacio correspondiente al trimestre que cursas actualmente


Reactivo 2: ¿Sabes que en la página de recursos educacionales está funcionando un apartado con insumos para la modalidad educativa Práctica Integrativa?
No se contestó

Reactivo 3: Si tu respuesta es SÍ, Por favor marca la opción que responda a la forma de cómo te enteraste
Me la sugirió el facilitador

esto es, que cuando no se haya contestado, aparezca la leyenda... y en caso contrario, aparezca la respuesta.

Parcialmente he conseguido esto, inicializando la variable "interruptor" a 1

Código:
		
interruptor = 1
for i=1 to 28
	DBresp.open "Select A.Idpregunta, C.Pregunta From (Respuestas A left join Posrespuesta B on (A.Idpregunta = B.Idpregunta)) left join Preguntas C on (A.Idpregunta = C.Idpregunta) Where A.Idpregunta = "& i &" and C.Idpregunta = "& i &"  Group By A.Idpregunta, C.Pregunta", Con 
	Do While not DBresp.eof'Inicia el ciclo de preguntas
	response.write
.....
y digo parcialmente, porque en algunas si me respeta eso y en otras no.... entiendo que debe de ser la manera en que manejo la variable "interruptor"... me da algo así:


Reactivo 1: Marca en el espacio correspondiente al trimestre que cursas actualmente
(AQUÍ SI FUNCIONA)

Reactivo 2: ¿Sabes que en la página de recursos educacionales está funcionando un apartado con insumos para la modalidad educativa Práctica Integrativa?
No se contestó
No (AQUÍ NO FUNCIONA)

Reactivo 3: Si tu respuesta es SÍ, Por favor marca la opción que responda a la forma de cómo te enteraste
No se contestó (AQUÍ SI FUNCIONA)

Reactivo 4: Si tu respuesta es NO, ¿pudieras comentar que recursos utilizas para tus trabajos correspondiente a Práctica Integrativa?

No se contestó (AQUÍ SI FUNCIONA)

Reactivo 5: ¿La página cuenta con los insumos que necesitas para el semestre que cursas?
(AQUÍ SI FUNCIONA)

Reactivo 6: Si tu respuesta es NO ¿Pudieras enlistar los insumos que necesitas?
No se contestó (AQUÍ SI FUNCIONA)

Reactivo 7: ¿El propósito de la página está indicado en su contenido?
(AQUÍ SI FUNCIONA)

Reactivo 8: ¿La información contenida en la página contribuye a tu aprendizaje?
No se contestó
No

No se contestó (AQUÍ NO FUNCIONA)

Reactivo 10: ¿Hay algún rubro que creas que necesiten cambios en su contenido?
No se contestó
No (AQUÍ NO FUNCIONA)
  #17 (permalink)  
Antiguo 08/06/2010, 09:52
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Respuesta: Consultar Campo Vacio de una BD

Dentro del if Not Rs.EOF Then metele interruptor = 1, es decir, le estamos diciendo que si hay 1 respuesta valida en la secuencia ya no debe poner "No se contesto"...
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras
  #18 (permalink)  
Antiguo 08/06/2010, 09:57
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Consultar Campo Vacio de una BD

Sólo una respuesta por reactivo... pero algunos de los reactivos son de opción múltiple, y en la tabla de respuestas (respuestas), pongo el valor que me arroja el radiobutton y después hago el join con una de las posibles respuestas contenidas en la tabla respectiva (posrespuestas), por eso es que en este ejemplo, recorro j=1 to 3.....
  #19 (permalink)  
Antiguo 08/06/2010, 11:41
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Respuesta: Consultar Campo Vacio de una BD

En el momento que se cumpla 1 respuesta el interruptor debe estar a 1, cuando pases a la nueva pregunta el interruptor debe quedar a 0 y si no hubiera respuestas entonces se debe cumplir la condicion de fin de fichero y de interruptor a 0...

Deberia funcionar... lo has probado?

Tuve que ausentarme un rato, lo siento...
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras
  #20 (permalink)  
Antiguo 08/06/2010, 12:03
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Consultar Campo Vacio de una BD

He hecho varias pruebas, por ejemplo:

Código:
if Not Rs.EOF and interruptor = 1 Then
	response.Write(Rs("Posrespuesta")) & "</b><br />"
	Rs.movenext
	Rs.Close
	exit for
        else if Rs.EOF and interruptor = 0 Then
		response.Write("No se contestó") & "</b><br />"
		interruptor = 1
	end if
end if

-------------------------------------------------------------------------------

if Not Rs.EOF and interruptor = 0 Then
	response.Write(Rs("Posrespuesta")) & "</b><br />"
	Rs.movenext
	Rs.Close
	exit for
        else if Rs.EOF and interruptor = 0 Then
		response.Write("No se contestó") & "</b><br />"
		interruptor = 1
	end if
end if
y la que mejor se acomoda, porque me pone las respuestas es:
Código:
if Not Rs.EOF Then
	response.Write(Rs("Posrespuesta")) & "</b><br />"
	Rs.movenext
	Rs.Close
	exit for
        else if Rs.EOF and interruptor = 0 Then
		response.Write("No se contestó") & "</b><br />"
		interruptor = 1
	end if
end if
y me pone las respuestas de esta manera:

Reactivo 16: La información que necesito la encuentro.
Casi Siempre

Reactivo 17: ¿La información que encuentras en la página, te soluciona dudas?
No se contestó
Casi Siempre

Reactivo 18: ¿La información de los apartados es útil para tu propósito de aprendizaje?
No se contestó
Casi Siempre

Reactivo 19: La página de Práctica Integrativa te parece de funcionalidad
Excelente
  #21 (permalink)  
Antiguo 08/06/2010, 12:22
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Respuesta: Consultar Campo Vacio de una BD

Date cuenta de una cosa, cuando imprimes No se contesto por ejemplo en la pregunta 17, me da que el problema es que no rompes el for cuando llega, por lo que cuando va a la siguiente pregunta le esta preguntando el EOF de la anterior respuesta por eso te lo coloca primero el No se contesto debes hacer que cuando se conteste ya no siga el for y pase a la siguiente pregunta... el fallo ahora no lo veo en los interruptores si no en el for que no para y llega hasta el final...

No tiene sentido el orden de las respuestas 1º te da el resultado del EOF y despues te da una respuesta correcta... ¿comprendes?

Cita:
Reactivo 17: ¿La información que encuentras en la página, te soluciona dudas?
No se contestó <<resultado del anterior for
Casi Siempre <<resultado del nuevo for
Te falta el exit for dentro de la condicion EOF e Interruptor...
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras

Última edición por Wasper; 09/06/2010 a las 01:50
  #22 (permalink)  
Antiguo 08/06/2010, 12:33
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Consultar Campo Vacio de una BD

Totalmente de acuerdo que el detalle ahora está en el for, porque las respuestas contestadas me las pinta correctamente... Voy a darle una revisada detenidamente al for, para ver en dónde es el detalle y poder imprimir lo correcto....

Muchas gracias nuevamente Wasper por el empujón que me diste, que estaba algo atorado... Lo reviso con más calma y te comento del error, que debe de ser una tontería....
  #23 (permalink)  
Antiguo 08/06/2010, 16:50
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Respuesta: Consultar Campo Vacio de una BD

Espero con ansias esos cambios que vas a hacer...

Animo...
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras
  #24 (permalink)  
Antiguo 09/06/2010, 11:41
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Consultar Campo Vacio de una BD

Pues nada... que no me muestras los que no se contestaron.....

tengo lo siguietne:

Código:
interruptor = 0
if Not Rs.EOF Then
	response.Write(Rs("Posrespuesta")) & "</b><br />"
        interruptor = 0
	Rs.movenext
	Rs.Close
	exit for
        else if Rs.EOF and interruptor = 1 Then
		response.Write("No se contestó") & "</b><br />"
		interruptor = 1
	end if
end if
Rs.close
interruptor = 0
pero nada, sólo me muestra los que existen, y nunca me muestra "No contestó"

  #25 (permalink)  
Antiguo 09/06/2010, 12:02
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Respuesta: Consultar Campo Vacio de una BD

Claro, jamas te lo va a mostrar...

Interruptor esta a 0, mientras no es EOF escribes la respuesta y vuelves a poner el interruptor a 0

Ahora tambien veo cosas que no cuadran... porque tienes un

Rs.movenext
Rs.Close
exit for


Es decir, ¿que sentido tiene? Si has encontrado una respuesta que sentido tiene mover al siguiente registro y cerrar despues, despues de ese if tienes otro RS.Close...

Veamos, si hay respuesta a la pregunta no es logico seguir buscando, pues rompes la cadena, si no encuentras una respuesta, le imprimes "No contesto" y rompes la cadena tambien...

No cambies los valores de interruptor a lo loco, debes saber porque lo estas cambiando, de nada te servira encontrar la solucion de suerte...

Partimos de la base donde se consiguio esto
Cita:
Reactivo 16: La información que necesito la encuentro.
Casi Siempre

Reactivo 17: ¿La información que encuentras en la página, te soluciona dudas?
No se contestó
Casi Siempre

Reactivo 18: ¿La información de los apartados es útil para tu propósito de aprendizaje?
No se contestó
Casi Siempre

Reactivo 19: La página de Práctica Integrativa te parece de funcionalidad
Excelente
Fijate bien "No se Contesto" en primer lugar, lo que da que pensar que hay un EOF anterior que se ejecuta la 1ª vez...

Lo que aun no llego a entender es porque buscas 3 veces la respuesta... (Explicamelo)
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras
  #26 (permalink)  
Antiguo 09/06/2010, 12:36
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Consultar Campo Vacio de una BD

Totalmente de acuerdo, en que no debo de andar cambiando a diestra y siniestra valores en "interruptor", pero es que entré en un lapsus de desesperación jejejeje

Ahora bien, lo del buscar 3 veces la respuesta es, porque algunos de los reactivos son de opción múltiple, y en la tabla de respuestas (respuestas), pongo el valor que me arroja el radiobutton y después hago el join con una de las posibles respuestas contenidas en la tabla respectiva (posrespuestas), por eso es que recorro j=1 to 3.....
  #27 (permalink)  
Antiguo 09/06/2010, 13:31
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Respuesta: Consultar Campo Vacio de una BD

Tienes subido la web a algun sitio? Para verla en funcionamiento...
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras
  #28 (permalink)  
Antiguo 09/06/2010, 13:52
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Consultar Campo Vacio de una BD

Por el momento no... sólo estoy trabajando en el server del trabajo.... Apenas vamos a subir la encuesta....
  #29 (permalink)  
Antiguo 09/06/2010, 16:14
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Respuesta: Consultar Campo Vacio de una BD

¿Habria alguna posibilidad de poder ver el codigo en funcionamiento?
Quizas conviriendo tu localhost en publico por medio de la ip hacia el puerto 8080 configurando el Router con un NAT hacia el puerto 8080 apuntando a tu ip privada...

En resumen, redirigir el puerto 8080 a tu ip privada... asi podria ver el codigo funcionando desde mi ordenador al tuyo por tu ip publica...
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras
  #30 (permalink)  
Antiguo 09/06/2010, 16:33
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Consultar Campo Vacio de una BD

Cita:
Quizas conviriendo tu localhost en publico por medio de la ip hacia el puerto 8080 configurando el Router con un NAT hacia el puerto 8080 apuntando a tu ip privada...
jejeje

¿por qué mejor no le dices que use servicios como no-ip o dyndns?, en cristiano, hombre, en cristiano

Etiquetas: bd, consultar, vacio, campos
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 12:42.