Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: athor en Mayo 28, 2014, 10:14:38 am

Título: problema con mshflexgrid
Publicado por: athor en Mayo 28, 2014, 10:14:38 am
Estimados amigos, gusto en saludarlos necesito algo de ayuda, ya que tengo un entremero con un control mshflexgrid al cual le hago una consulta sql donde traigo un grupo de registros los cuales se diferencian netamente por el mes, en este caso  son Cliente, Mes y Suma de Total el tema es que la consulta trae los registros sin problema pero el dilema es que cuando arroja los registros en la columna mes me lanza todos los meses en linea hacia abajo y lo que necesito es que arroje por ej:

Cliente  MEs      Total   Mes        total   Mes     Total   etc   etc
arturo    Enero    500   Febrero   700    Marzo   980

actualmente me lo arroja asi

Cliente Vendedor Mes      total
Arturo    001        enero    500
pedro     001        febrero   700
etc etc

Algunos de ustedes se les ocurre como mostrar los registros en vertical descriminando por el mes
agradeceria alguna orientacion
desde ya muchas gracias.

atte
Alex
Valparaiso

Título: Re:problema con mshflexgrid
Publicado por: YAcosta en Mayo 28, 2014, 12:44:34 pm
Usando Transpose o Pivot se podría resolver, cuéntanos con que motor trabajas y publica tu codigo. La otra opcion fea seria recorrer los registros para armar la presentación.

Saludos
Título: Re:problema con mshflexgrid
Publicado por: athor en Mayo 28, 2014, 01:02:08 pm
Ocupo el motor SQL SERVER 2008 R2  y como indicas ocupe PIVOT y la funcion TRANSFORM

sentencia SQL de access 2013

'inicio de sentencia

TRANSFORM Sum(venta_cm.netocon) AS Resultado
SELECT clientes_cm.cliente, venta_cm.vencon
FROM venta_cm INNER JOIN clientes_cm ON venta_cm.rutcon = clientes_cm.rut_clie
GROUP BY clientes_cm.cliente, venta_cm.vencon
ORDER BY venta_cm.vencon
PIVOT Format([fechacon],"mmm") In ("Ene", "Feb", "Mar", "Abr", "May",
"Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic");

'fin de sentencia

ahora llevarlo al form del VB6 es el dilema, me arroja error de sintaxis cerca de 'ventas_cm'.  me indica...
ahy estoy parado...
Título: Re:problema con mshflexgrid
Publicado por: YAcosta en Mayo 28, 2014, 01:14:04 pm
Correcto, no era transpose sino transform

Es venta_cm o ventas_cm?
Título: Re:problema con mshflexgrid
Publicado por: athor en Mayo 28, 2014, 01:23:15 pm
la tabla en SQL Server se llama venta_cm  y clientes_cm  son las dos que interactuan.

en access me arroja los resultados super bien, pero al llevar la sentencia al Form del VB6  me arroja el problema al inicio despues del TRANSFORM SUM(tabla.campo) as campo SELECT .....etc etc    debe faltar algo
asi tengo la sentencia en VB6

Código: (VB) [Seleccionar]
rs = recordset
tablas : clientes_cm , venta_cm
campos: netocon (totales netos), cliente, vencon(vendedor), rut_clie(dni cliente), rutcon(dni cliente), fechacon(fechas de facturacion)

rs.Open "TRANSFORM Sum(venta_cm.netocon) AS Expr1 SELECT clientes_cm.cliente, vencon FROM venta_cm INNER JOIN clientes_cm ON rutcon = clientes_cm.rut_clie GROUP BY clientes_cm.cliente, vencon ORDER BY vencon PIVOT Format([fechacon], 'mm') In ('Ene', 'Feb', 'Mar', 'Abr', 'May','Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic');", Cn, adOpenDynamic, adLockOptimistic


ojalas se pueda arreglar el inconveniente.

saludos y gracias
Título: Re:problema con mshflexgrid
Publicado por: athor en Mayo 28, 2014, 08:33:02 pm
agradezco la ayuda, luego de 7 horas de lees codigos encontre la solucion
Código: (VB) [Seleccionar]
rs.Open "SELECT * From(SELECT desarrollo.dbo.clientes_cm.cliente, venta_cm.vencon, SUM(venta_cm.netocon) as Valor, month(venta_cm.fechacon) as MES FROM Desarrollo.dbo.venta_cm  INNER JOIN desarrollo.dbo.clientes_cm ON venta_cm.rutcon = desarrollo.dbo.clientes_cm.rut_clie WHERE (((venta_cm.vencon)= '" & Label2.Caption & "')) GROUP BY venta_cm.fechacon, venta_cm.vencon, venta_cm.netocon, desarrollo.dbo.clientes_cm.cliente) as grupo Pivot (SUM(valor) FOR MES IN ( [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12] )) AS pvtMonth", Cn, adOpenDynamic, adLockOptimistic


indicar que el TRANSFORM de access no funciona en SQL server 2008

saludos