Ayuda Urgente

11/03/2005 - 21:33 por ZMGestion | Informe spam
Tengo la siguiente instrucción SQL
SQL = "TRANSFORM Count(Identificacion.Peligroso) AS CuentaDePeligroso SELECT
Identificacion.Localidad FROM Identificacion WHERE
(((Identificacion.Fecha_alta) Between #"&sFecha0&"# And #"&sFecha1&"#))
GROUP BY Identificacion.Localidad PIVOT Identificacion.Peligroso "
Se trata de una consulta de referencias cruzadas en donde las filas
aparecen localidades y en las columnas las palabras SI y NO
La consulta funciona perfectamente cuando encuentra datos en ambas columnas
con las siguientes instrucciones:

<%=(Rs.Fields.Item("NO").Value)%>
<%=(Rs.Fields.Item("SI").Value)%>
El problema lo tengo cuando alguna de las columnas esta vacia y no devuelve
ningun dato o no existen resultados
He probado con el siguiente código pero me da error
<%
If IsNull(Rs.Fields.Item("SI").Value) Then
Response.Write("0")
else
=(Rs.Fields.Item("SI").Value)
end if
%>
Como puedo resolver este fallo?
Muchas gracias de antemano

Preguntas similare

Leer las respuestas

#1 Manuel Vera
14/03/2005 - 16:05 | Informe spam
A ver si lo entendí...

Si hay datos, los datos devueltos son SI y/o NO.
Pero si falta alguno o ambos, no son devueltos, por lo tanto no existen esas
columnas en el recordset.
Tendrías que ver primero si la columna existe.
Una forma es con RS.Fields.Count. Si las dos estan eso devuelve 2.
En caso contrario, verificas cual de las dos falta con:
if RS.Fields.Count=1 then
if RS.Fields(0).name = "SI" then
existe el SI
end if
if RS.Fields(0).name = "NO" then
existe el NO
end if
end if

if RS.Fields.Count=0 then
NO HAY NINGUNA
end if

Salu2
MV

"ZMGestion" wrote in message
news:d0svbk$k6l$
Tengo la siguiente instrucción SQL
SQL = "TRANSFORM Count(Identificacion.Peligroso) AS CuentaDePeligroso


SELECT
Identificacion.Localidad FROM Identificacion WHERE
(((Identificacion.Fecha_alta) Between #"&sFecha0&"# And #"&sFecha1&"#))
GROUP BY Identificacion.Localidad PIVOT Identificacion.Peligroso "
Se trata de una consulta de referencias cruzadas en donde las filas
aparecen localidades y en las columnas las palabras SI y NO
La consulta funciona perfectamente cuando encuentra datos en ambas


columnas
con las siguientes instrucciones:

<%=(Rs.Fields.Item("NO").Value)%>
<%=(Rs.Fields.Item("SI").Value)%>
El problema lo tengo cuando alguna de las columnas esta vacia y no


devuelve
ningun dato o no existen resultados
He probado con el siguiente código pero me da error
<%
If IsNull(Rs.Fields.Item("SI").Value) Then
Response.Write("0")
else
=(Rs.Fields.Item("SI").Value)
end if
%>
Como puedo resolver este fallo?
Muchas gracias de antemano



Respuesta Responder a este mensaje
#2 Cristina M.
14/03/2005 - 23:49 | Informe spam
Aunque te aparezca otro nombre soy el primitivo Zamedia
Te explico a ver si me echas la mano
La consulta devuelve una cosa asi
SI NO
Localidad_1 5 2
Localidad_2 1 4
etc
El problema esta en cuando no existe ningun valor por ejemplo de la columna
de los SI y si existe de la de los NO o viceversa.
Gracias

"Manuel Vera" wrote:

A ver si lo entendí...

Si hay datos, los datos devueltos son SI y/o NO.
Pero si falta alguno o ambos, no son devueltos, por lo tanto no existen esas
columnas en el recordset.
Tendrías que ver primero si la columna existe.
Una forma es con RS.Fields.Count. Si las dos estan eso devuelve 2.
En caso contrario, verificas cual de las dos falta con:
if RS.Fields.Count=1 then
if RS.Fields(0).name = "SI" then
existe el SI
end if
if RS.Fields(0).name = "NO" then
existe el NO
end if
end if

if RS.Fields.Count=0 then
NO HAY NINGUNA
end if

Salu2
MV

"ZMGestion" wrote in message
news:d0svbk$k6l$
> Tengo la siguiente instrucción SQL
> SQL = "TRANSFORM Count(Identificacion.Peligroso) AS CuentaDePeligroso
SELECT
> Identificacion.Localidad FROM Identificacion WHERE
> (((Identificacion.Fecha_alta) Between #"&sFecha0&"# And #"&sFecha1&"#))
> GROUP BY Identificacion.Localidad PIVOT Identificacion.Peligroso "
> Se trata de una consulta de referencias cruzadas en donde las filas
> aparecen localidades y en las columnas las palabras SI y NO
> La consulta funciona perfectamente cuando encuentra datos en ambas
columnas
> con las siguientes instrucciones:
>
> <%=(Rs.Fields.Item("NO").Value)%>
> <%=(Rs.Fields.Item("SI").Value)%>
> El problema lo tengo cuando alguna de las columnas esta vacia y no
devuelve
> ningun dato o no existen resultados
> He probado con el siguiente código pero me da error
> <%
> If IsNull(Rs.Fields.Item("SI").Value) Then
> Response.Write("0")
> else
> =(Rs.Fields.Item("SI").Value)
> end if
> %>
> Como puedo resolver este fallo?
> Muchas gracias de antemano
>
>
>



Respuesta Responder a este mensaje
#3 Manuel Vera
15/03/2005 - 15:25 | Informe spam
Ok. Tienes que ver que te está devolviendo el recordset. Siguiendo tu
ejemplo:
...SI NO
Localidad_1 5 2
Localidad_2 1 4

Si en vez de eso, viene:
...NO
Localidad_1 5
Localidad_2 1

No podrás hacer una verificacion por:
if isnull(RS("SI") then
pues la columna SI, no existe en el recordset.
Por eso debes verificar cuantas columnas hay.

if RS.Fields.Count=1 then
' si solo hay una columna, debes ver cual es
if RS.Fields(0).name = "SI" then
' existe la columna SI
end if
if RS.Fields(0).name = "NO" then
' existe la columna NO
end if
end if

if RS.Fields.Count=0 then
NO HAY NINGUNA
end if

Salu2
MV
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida