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

Mostrar una consulta

Estas en el tema de Mostrar una consulta en el foro de ASP Clásico en Foros del Web. Hola que tal ahora tengo el siguiente problema: Estoy realizando un proyecto de inventarios, en el cual me piden un reporte donde el usuario pueda ...
  #1 (permalink)  
Antiguo 16/03/2010, 18:23
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 16 años, 7 meses
Puntos: 3
Mostrar una consulta

Hola que tal ahora tengo el siguiente problema:

Estoy realizando un proyecto de inventarios, en el cual me piden un reporte donde el usuario pueda elegir los campos que desea ver, los criterios de filtrado y ordenamiento. El problema radica que son varias tablas las tablas que tengo que anidar, pero no tengo idea de como hacerlo, ya tengo identificados los campos con sus valores, pero a la hora de ponerlos en el query general es donde me pierdo.
  #2 (permalink)  
Antiguo 16/03/2010, 22:01
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Mostrar una consulta

Creo que nos ayudaría más si pones tu consulta para darnos una mejor idea de lo que necesitas.

Saludos!
  #3 (permalink)  
Antiguo 17/03/2010, 10:45
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Mostrar una consulta

Para idear una respuesta debería ver cómo son las tablas involucradas o qué tipo de información devuelve el reporte, pero así rápidamente se me ocurre que, para no volverte loco, hagas un SELECT de todos los campos que el usuario podría requerir haciendo los joins necesarios de todas las tablas. Luego el where y el order by si los haría dinámicos. O sea, la primera parte de la sentencia SQL hacerla "estática" mientras que los criterios de filtrado y ordenamiento los generás según la selección del usuario.
__________________
...___...
  #4 (permalink)  
Antiguo 17/03/2010, 10:54
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Mostrar una consulta

Si tu consulta va a ser dinámica, pues el usuario seleccionará los campos que deben mostrarse en el reporte, se me ocurre que puedes hacerlo con un Stored Procedure para generar tu query dinámicamente y lo puedas ejecutar, sin tener que obtener más campos de los requeridos por el usuario.

Lo que sí debes tener bien definidos son tus joins de las tablas involucradas, pues como dice AlZuwaga, es la parte estática.

Saludos!
  #5 (permalink)  
Antiguo 17/03/2010, 12:27
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Mostrar una consulta

Pues las tablas involucradas son las siguientes:

Tabla: asignacion
Campos involucrados: clave,usuario

Tabla: cpu_laptop
Campos involucrados: clave,marca,modelo,tipo,caracteristicas,no_serie,i p

Tabla: monitores
Campos involucrados: clave,marca,modelo,no_serie

Tabla: teclado
Campos involucrados: clave,marca,modelo,no_serie

Tabla: mouse
Campos involucrados: clave,marca,modelo,no_serie

Tabla: impresoras
Campos involucrados: clave,marca,modelo,tipo,no_serie,ip

Tabla: otros dispositivos
Campos involucrados: clave,marca,modelo,tipo,no_serie

Tabla: catalogo gerencias
Campos involucrados: idgerencia,gerencia

Tabla: catalogo departamentos
Campos involucrados: idgerencia,iddepartamento,departamento

Tabla: usuarios
Campos involucrados: idusuario,nombre,paterno,materno

Tabla: catalogo dispositivos
Campos involucrados: iddispositivo,dispositivo

Tabla: catalogo marcas
Campos involucrados: idmarca,marca

Tabla: catalogo modelo
Campos involucrados: idmarca,idmodelo,modelo

Donde el campo tipo hago referencia a un numero,que es le numero que tiene el dispositivo en el catalogo
  #6 (permalink)  
Antiguo 17/03/2010, 13:18
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 6 meses
Puntos: 27
Respuesta: Mostrar una consulta

Cita:
Iniciado por DanX03 Ver Mensaje
Pues las tablas involucradas son las siguientes:

Tabla: asignacion
Campos involucrados: clave,usuario

Tabla: cpu_laptop
Campos involucrados: clave,marca,modelo,tipo,caracteristicas,no_serie,i p

Tabla: monitores
Campos involucrados: clave,marca,modelo,no_serie

Tabla: teclado
Campos involucrados: clave,marca,modelo,no_serie

Tabla: mouse
Campos involucrados: clave,marca,modelo,no_serie

Tabla: impresoras
Campos involucrados: clave,marca,modelo,tipo,no_serie,ip

Tabla: otros dispositivos
Campos involucrados: clave,marca,modelo,tipo,no_serie

Tabla: catalogo gerencias
Campos involucrados: idgerencia,gerencia

Tabla: catalogo departamentos
Campos involucrados: idgerencia,iddepartamento,departamento

Tabla: usuarios
Campos involucrados: idusuario,nombre,paterno,materno

Tabla: catalogo dispositivos
Campos involucrados: iddispositivo,dispositivo

Tabla: catalogo marcas
Campos involucrados: idmarca,marca

Tabla: catalogo modelo
Campos involucrados: idmarca,idmodelo,modelo

Donde el campo tipo hago referencia a un numero,que es le numero que tiene el dispositivo en el catalogo

haz lo que te ha recomendado el maestro AlZuwaga
__________________
JuanRa Pérez
San Salvador, El Salvador
  #7 (permalink)  
Antiguo 17/03/2010, 14:23
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Mostrar una consulta

Creo que ya encontre la solucion la instrucion sql seria:

Código SQL:
Ver original
  1. SELECT e.usuario,c.area,d.departamento,b.clave,f.dispositivo,g.marca,h.modelo,b.no_serie[,b.caracteristicas,b.ip] FROM (SELECT
  2. marca,modelo,no_serie,clave,caracteristicas,tipo,ip FROM [dbo.cpu_laptop] WHERE [clave LIKE '02%']) b LEFT JOIN (SELECT id,descripcion
  3. AS dispositivo FROM dbo.catalogo_dispositivos) f ON b.tipo=f.id LEFT JOIN (SELECT clave,usuario FROM dbo.asignacion) a ON
  4. a.clave=b.clave LEFT JOIN (SELECT idusuario,ltrim(rtrim(nombre))+' '+ltrim(rtrim(paterno))+' '+ltrim(rtrim(materno)) AS
  5. usuario,idgerencia,iddepartamento FROM prod.rh.usuarios) e ON e.idusuario=a.usuario LEFT JOIN (SELECT id,descripcion AS marca FROM dbo.catalogo_marcas)g
  6. ON b.marca=g.id LEFT JOIN (SELECT id_marca,id_modelo,desc_modelo AS modelo FROM dbo.catalogo_modelos)h ON b.marca=h.id_marca AND
  7. b.modelo=h.id_modelo LEFT JOIN (SELECT idgerencia,descripcion AS area FROM prod.rh.cat_gerencias) c ON c.idgerencia=e.idgerencia
  8. LEFT JOIN (SELECT idgerencia,iddepartamento,descripcion AS departamento FROM prod.rh.cat_departamentos) d ON d.idgerencia=e.idgerencia
  9. AND d.iddepartamento=e.iddepartamento ORDER BY c.area,d.departamento

Donde las partes que estan entre corchetes tendria que cambiarlas conforme a los criterios del usuario.
  #8 (permalink)  
Antiguo 17/03/2010, 15:13
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Mostrar una consulta

Ya lo tienes!!

Saludos!
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:10.