Ver Mensaje Individual
  #1  
Antiguo 30-11-2015
Malixnox Malixnox is offline
Miembro
NULL
 
Registrado: nov 2015
Posts: 15
Reputación: 0
Malixnox Va por buen camino
Ayuda (Por favor) con un Grid View C# y SQL

Muy Buenas a las almas que se compadezcan de mi, a los que no pues solo buenas.

Tengo el siguiente problema, tengo varios en realidad pero el principal es el siguiente:

Soy actualmente pasante en una empresa, la empresa me ha estado poniendo a hacer cosas y yo las he hecho pero la última que me pidieron mis conocimientos noobs se quedaron cortos, voy a explicar primero qué debo hacer.

El programa es una aplicación web que muestra el consumo de químicos mensual por una planta en específico (Molinos), mostrando el código del químico es decir una tabla como:

Código de químicos|Enero|Febrero|Marzo|Abril|Mayo|Junio|etc...|Total_Anual
Código 1 | 413 | 34344 | num | num | num | sum de num
Código 2 ...

Así sucesivamente, la base de datos es de la siguiente manera:

Código de químico: TPROD.
Fechas: yyyyMMdd - Año, med y día, es decir para el primero de enero del 2015 sería 20150101
TWRKC: Código de molinos.
Cantidades: T1, T2, T3 (Se dividen por turnos) o sea el total es SUM(T1+T2+T3)
TTYPE: El tipo de producto, para diferenciar, I es para Insumos y R para producción.

Las cantidades se sacan con la siguiente fórmula:

WHERE TTYPE = I SUM(T1+T2+T3)/(WHERE = 'R' (SUM(T1+T2+T3))/1000), mi consulta en la BD es exactamente esta:

Código SQL [-]
SELECT        TPROD, 
SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '01%' AND TTYPE = 'I' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)/SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '01%' AND TTYPE = 'R' THEN ((T1 + T2 + T3)/1000) ELSE 1 END) AS Enero, 
SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '02%' AND TTYPE = 'I' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)/SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '02%' AND TTYPE = 'R' THEN ((T1 + T2 + T3)/1000) ELSE 1 END) AS Febrero, 
SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '03%' AND TTYPE = 'I' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)/SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '03%' AND TTYPE = 'R' THEN ((T1 + T2 + T3)/1000) ELSE 1 END) AS Marzo, 
SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '04%' AND TTYPE = 'I' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)/SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '04%' AND TTYPE = 'R' THEN ((T1 + T2 + T3)/1000) ELSE 1 END) AS Abril, 
SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '05%' AND TTYPE = 'I' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)/SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '05%' AND TTYPE = 'R' THEN ((T1 + T2 + T3)/1000) ELSE 1 END) AS Mayo,
SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '06%' AND TTYPE = 'I' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)/SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '06%' AND TTYPE = 'R' THEN ((T1 + T2 + T3)/1000) ELSE 1 END) AS Junio, 
SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '07%' AND TTYPE = 'I' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)/SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '07%' AND TTYPE = 'R' THEN ((T1 + T2 + T3)/1000) ELSE 1 END) AS Julio, 
SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '08%' AND TTYPE = 'I' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)/SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '08%' AND TTYPE = 'R' THEN ((T1 + T2 + T3)/1000) ELSE 1 END) AS Agosto, 
SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '09%' AND TTYPE = 'I' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)/SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '09%' AND TTYPE = 'R' THEN ((T1 + T2 + T3)/1000) ELSE 1 END) AS Septiembre,
SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '10%' AND TTYPE = 'I' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)/SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '10%' AND TTYPE = 'R' THEN ((T1 + T2 + T3)/1000) ELSE 1 END) AS Octubre,
SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '11%' AND TTYPE = 'I' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)/SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '11%' AND TTYPE = 'R' THEN ((T1 + T2 + T3)/1000) ELSE 1 END) AS Noviembre,
SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '12%' AND TTYPE = 'I' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)/SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '12%' AND TTYPE = 'R' THEN ((T1 + T2 + T3)/1000) ELSE 1 END) AS Diciembre,
SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '%' AND TTYPE = 'I' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)/SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '%' AND TTYPE = 'R' THEN ((T1 + T2 + T3)/1000) ELSE 1 END) AS Total_Anual
FROM            BPCS_TRANS_ITH_2
WHERE        (TTDTE LIKE '%' + @TTDTE + '%') AND (THWRKC LIKE '431105')
GROUP BY TPROD
ORDER BY TPROD

Pero tengo me trae los siguientes problemas:

Me muestra todos los TPROD y solo quiero que me muestre los TPROD que comiencen por Q, se me ocurre hacerlo con un if pero no manejo Gridview por eso pido ayuda, las cantidades resultantes no me están cuadrando pero necesito una revisión para ver si es verdad que no me dan bien.

Ah, ¿Por qué no hice una tabla toda genial con una cantidad exagerada de labels que es mas trabajosa pero me gusta mas?, porque me obligaron ya que los químicos podrían aumentar es decir puede que el año que viene agreguen unos 6 químicos mas, tendría que hacerlo a mano y tienen que avisarme ellos, mi jefe me dijo que lo quería auto generado (El no programa, solo me dijo que fuese auto generado), por consiguiente terminé usando un Gridview, que no los sé usar así que he usado mis pocos conocimientos de SQL, para ver si lo hacía desde el ayudante, ya me rendí, pues el ayudante no ayuda, solo me comprueba las consultas, haha.

Ah, si, en el trabajo tengo Internet censurado por ello no ando viendo vídeos en YouTube "GridViews for dummies", de hecho este foro no está censurado by el Barracuda filter ese que tenemos acá, por eso ando posteando acá, sino es revisar desde el cel si respondieron y copiar el código a mano (Ya lo he hecho antes cuando me quedo trancado, es un proceso lento pero bueh) ah y tampoco tengo acceso a los puertos USB, están bloqueados... Estoy programando en una granja haha, o con las manos atadas mas bien, sin Internet ni USB, wao... Ya 2 meses acá, me acostumbré.

Pero llevo como 2 semanas trancado y ya de verdad necesito ayuda y por eso posteo, si alguien se apiada de mi alma, estoy solo en un cuarto, nadie para ayudarme, sin Internet ni USB, no me dejen morir, haha, realmente lo que pido es que si alguien me puede hacer ese mismo código pero en la parte de código C# del Gridview porque yo personalmente no tengo idea de como hacerlo, el código está vacio y todo es hecho desde el ayudante, lo único que tiene el Gridview es:

<SelectParameters>
<asp:ControlParameter ControlID="label0" Name="TTDTE" PropertyName="Text"
DefaultValue="2015" />
</SelectParameters>

Que es un mugre label que agarra el año actual y ya.

#HALPH

Gracias por su atención así no puedan ayudarme, al menos me leyeron llorando (No literalmente claro) por acá.
Responder Con Cita