CLR: .Net / Mono / Boo / Otros CLR > VB .NET
problema con query para cierre de mes
(1/1)
fre_saga:
buenos dias me presento me llamo fredy y vivo en el salvador
el motivo de este mensaje es para pedirles ayuda para terminar una query la cual sera la encargada para realizar un cierre de mes
hasta el momento tengo diseñada para que me consulte los detalles de las las tablas compra_dt y venta_dt lo cual funciona perfectamente asi esta
--- Código: ---SELECT a.cod_prod, b.cantida AS cant_compra, b.ptotal AS tota_compra, c.cantida AS cant_venta,c.ptotal AS total_venta FROM existencias a
LEFT JOIN (SELECT cod_prod, SUM (cantida) AS cantida, SUM (ptotal) AS ptotal FROM compra_dt GROUP BY cod_prod) b ON
a.cod_prod = b.cod_prod
LEFT JOIN (SELECT cod_prod, SUM (cantida) AS cantida, SUM (ptotal) AS ptotal FROM venta_dt GROUP BY cod_prod) c ON
a.cod_prod = c.cod_prod
GROUP BY a.cod_prod
--- Fin del código ---
pero ahora quiero filtra los datos por rango de fechas de las tablas de cabecera de compra_cb y venta_cb
esta es la estructura de las tablas
--- Código: ---CREATE TABLE compra_cb ( nfactura varchar(25) PRIMARY KEY, fecha date, cod_prov varchar(25), total varchar(15));
CREATE TABLE compra_dt ( nfactura nvarchar(25), cod_prod varchar(25), cantida float, punitario float, ptotal varchar(13),
costopromedio float, totalexistencia varchar(13));
CREATE TABLE venta_cb ( nfactura varchar(25) PRIMARY KEY NOT NULL, venta integer, baja integer, fecha date,
cliente varchar(80), total varchar(15));
CREATE TABLE venta_dt ( nfactura varchar(25), cod_prod varchar(25), cantida float(8,2), costopromedio float(8,2),
ptotal varchar(13));
--- Fin del código ---
ya tengo ratos de estar queriendo filtrar por la cabecera pero no lo logro espero que ustedes me puedan ayudar a resolver el problema
de esta forma lo estado intentando
--- Código: ---SELECT a.cod_prod, b.cantida AS cant_compra, b.ptotal AS tota_compra, c.cantida AS cant_venta,c.ptotal AS total_venta FROM existencias a
LEFT JOIN (SELECT cod_prod, SUM (cantida) AS cantida, SUM (ptotal) AS ptotal FROM compra_dt GROUP BY cod_prod) b ON
a.cod_prod = b.cod_prod
LEFT JOIN (SELECT cod_prod, SUM (cantida) AS cantida, SUM (ptotal) AS ptotal FROM venta_dt GROUP BY cod_prod) c ON
a.cod_prod = c.cod_prod
INNER JOIN compra_cb ON compra_cb.nfactura = compra_dt.nfactura
INNER JOIN venta_cb ON venta_cb.nfactura = venta_dt.nfactura
WHERE compra_cb.fecha BETWEEN 01/06/2013 AND 30/06/2013
GROUP BY a.cod_prod
--- Fin del código ---
me da este error "SQL Error: no such column: compra_dt.nfactura" en la siguiente linea INNER JOIN compra_cb ON compra_cb.nfactura = compra_dt.nfactura
DiabloRojo:
Qué tal fre_saga? Bienvenido al foro.
Debes tener en cuenta que cuando usas las líneas:
--- Código: ---SELECT cod_prod, SUM (cantida) AS cantida, SUM (ptotal) AS ptotal FROM compra_dt GROUP BY cod_prod
--- Fin del código ---
y
--- Código: ---(SELECT cod_prod, SUM (cantida) AS cantida, SUM (ptotal) AS ptotal FROM venta_dt GROUP BY cod_prod
--- Fin del código ---
por decirlo de alguna manera, estás creando tablas "virtuales" que sólo incluyen esos campos que mencionas luego de la instrucción select por eso estás obteniendo el error "no existe tal columna"...
SQL en un poco mañoso. Prueba en añadir la columna nfactura en los SELECT indicados más arriba y luego en hacer referencia a los alias de las tablas que estas creando (b y c) porque podrías tener el error de hacer referencia a una tabla que no pertenece a la consulta...
Saludos.
fre_saga:
gracias ya solucione ese problema pero hoy me tengo otro en una tabla tengo un campo numerico(13,4) y en el formulario tengo este calculo
Private Sub calcular()
If txtptotal.Text = "" Or txtcantida.Text = "" Then
txtcostopromedio.Text = ""
Else
txtcostopromedio.Text = FormatNumber(txtptotal.Text / txtcantida.Text, 4)
End If
el cual funciona bien pero el problema es a la hora de guardar ese resultado ejemplo 25268.85/10=2,526.8850 pero cuando guardo no lo hace con ese valor
fre_saga:
ya solucione el problema
DiabloRojo:
Excelente! fre_saga. Me alegro de que hayas podido resolver tus dudas por tí mismo.
Es el espíritu de los foros que comentes cual fue la solución que encontraste para el problema. Así, cualquiera que entre al foro con una duda igual o parecida puede hallar en tu ejemplo un sabio consejo, ayuda u orientación.
Saludos.
Navegación
Ir a la versión completa