SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => VB .NET => Mensaje iniciado por: fre_saga en Domingo 2 de Junio de 2013, 19:31
-
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
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
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
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));
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
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
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
-
Qué tal fre_saga? Bienvenido al foro.
Debes tener en cuenta que cuando usas las líneas:
SELECT cod_prod, SUM (cantida) AS cantida, SUM (ptotal) AS ptotal FROM compra_dt GROUP BY cod_prod
y
(SELECT cod_prod, SUM (cantida) AS cantida, SUM (ptotal) AS ptotal FROM venta_dt GROUP BY cod_prod
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.
-
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
-
ya solucione el problema
-
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.