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

Ayuda con un Count

Estas en el tema de Ayuda con un Count en el foro de ASP Clásico en Foros del Web. Hola buenas, necesito ayuda, estoy haciendo un Select Count y por mas que miro creo que esta bien: set objrs = oConn.Execute(" SELECT count (*) ...
  #1 (permalink)  
Antiguo 08/07/2009, 03:32
 
Fecha de Ingreso: febrero-2009
Mensajes: 28
Antigüedad: 16 años, 2 meses
Puntos: 0
Ayuda con un Count

Hola buenas, necesito ayuda, estoy haciendo un Select Count y por mas que miro creo que esta bien:

set objrs = oConn.Execute(" SELECT count (*) AS total2 FROM Obras WHERE IdCliente=(select IdCliente from Clientes where nombr='"& variable &"') AND (Estado='5-Obra en Ejecución' OR Estado='2-Pendiente Hacer Presupuesto' OR Estado='4-Presupuesto Aceptado') AND IdObra= (SELECT idobra FROM Comentarios WHERE tipo='TECNICO') ")

Mi problema es que me un fallo, me dice:

En la mayoría un registro puede ser devuelto según esta subpregunta.

No entiendo porque me lo dice.

Muchas gracias y espero que me ayuden.
  #2 (permalink)  
Antiguo 08/07/2009, 06:28
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: Ayuda con un Count

cual es el codigo del error?????? que base de datos usa???

te recomiendo hacer losiguiente

Código asp:
Ver original
  1. dim sql
  2.  
  3. sql = " SELECT count (*) AS total2 FROM Obras WHERE IdCliente=(select IdCliente from Clientes where nombr='"& variable &"') AND (Estado='5-Obra en Ejecución' OR Estado='2-Pendiente Hacer Presupuesto' OR Estado='4-Presupuesto Aceptado') AND IdObra= (SELECT idobra FROM Comentarios WHERE tipo='TECNICO') "
  4.  
  5.  
  6. response.write sql
  7. response.end
  8.  
  9. set objrs = oConn.Execute(sql)

Luego ejecutas la aplicacion, se escribira el SQL en pantalla.
tomas la cadena resultante y te la llevas a tu BD y juegas ahi con ella,
verifica que todas las SUB QUERYS te traigan datos y analiza.

a mi parecer alguna de las subquerys esta trayendo mas de UN dato.
y si usas el operador = en vez del operador IN , entonces es obvio que se te va a arrojar error.

checalo y cuentas

  #3 (permalink)  
Antiguo 08/07/2009, 06:31
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 4 meses
Puntos: 126
Respuesta: Ayuda con un Count

Hola

Lee esto, probablemente te ayude

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #4 (permalink)  
Antiguo 08/07/2009, 06:56
 
Fecha de Ingreso: febrero-2009
Mensajes: 28
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Ayuda con un Count

El problema es el siguiente:

Recorro la base de datos en access y me cuenta bien con ese count, pero llega aun registro y hay me da el error:

Microsoft JET Database Engine error '80004005'

At most one record can be returned by this subquery.

y me deja de contar.
  #5 (permalink)  
Antiguo 08/07/2009, 07:01
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: Ayuda con un Count

Cita:
Iniciado por Muzztein Ver Mensaje


a mi parecer alguna de las subquerys esta trayendo mas de UN dato.
y si usas el operador = en vez del operador IN , entonces es obvio que se te va a arrojar error.

lee lo que te dijo este tipo, quizas te pueda ayudar
  #6 (permalink)  
Antiguo 08/07/2009, 07:33
 
Fecha de Ingreso: febrero-2009
Mensajes: 28
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Ayuda con un Count

Sustituyendo el = por el IN sigo teniendo el mismo problema.
  #7 (permalink)  
Antiguo 08/07/2009, 07:40
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: Ayuda con un Count

mmmmm no estoy diciendo que lo sustituyas.

resulta que una de tus querys esta trayendo mas de un registro. Cuando tu estas esperando traer solo uno.

como te dije anteriormente, revisa tus sub querys y piensa.
por ejemplo si

select IdCliente from Clientes where nombr='"& variable &"'

trae mas de un resistro

la sentencia

WHERE IdCliente=(select IdCliente from Clientes where nombr='"& variable &"')

carece de sentido para el compliador de la BD por ser ambigua.

me copias?
  #8 (permalink)  
Antiguo 08/07/2009, 07:54
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 4 meses
Puntos: 126
Respuesta: Ayuda con un Count

Hola

Al seguir la liga que te dejé en mi anterior post, me he dado cuanta por que no le has hecho ni caso, quería vincular esto

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #9 (permalink)  
Antiguo 08/07/2009, 08:21
 
Fecha de Ingreso: febrero-2009
Mensajes: 28
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Ayuda con un Count

Estuve comprobando y el error salta al compararlo con la variable:

SELECT count (*) AS total3 FROM Obras WHERE IdCliente=(select IdCliente from Clientes where nombr='"& variable &"')

Pero no se como solucionarlo y no entiendo que para unos registros funcione y para otros no.
  #10 (permalink)  
Antiguo 08/07/2009, 09:25
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: Ayuda con un Count

que pasa si haces esto?

SELECT count (*) AS total3 FROM Obras WHERE IdCliente in (select IdCliente from Clientes where nombr='"& variable &"')


esta bien escrito??? nombr

que valor trae variable?
  #11 (permalink)  
Antiguo 14/07/2009, 04:04
 
Fecha de Ingreso: febrero-2009
Mensajes: 28
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Ayuda con un Count

Nada gracias solucionado, con una subconsulta detro de otra, el problema era que habia dos datos iguales y saltaba el error.

Muchas gracias a todos,
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 01:18.