Nueva pregunta sobre NO cargar información si no hay datos de días anteriores?

10/10/2003 - 21:22 por marcelo | Informe spam
Hola!
La otra vez hice la pregunta que pongo acá abajo y me
respondieron 2 personas (MUCHAS GRACIAS!!!!), pero no era
exactamente lo que yo necesito. Abajo pongo la pregunta,
las respuestas que me dieron y en que no me funcionan.
Les agradezco si me pueden ayudar porque NO hay manera
que me salgan estos querys...

Cómo hago para NO cargar información de las facturas de
un negocio si no hay datos de días anteriores?

Tengo una tabla de Facturas y otra de FacturasNuevas.
Tanto en Facturas como en FacturasNuevas tengo un campo
que es fechaFactura.

Las facturasNuevas tengo que insertarlas en la tabla
Facturas pero siempre y cuando se hayan cargados datos de
los días anteriores para cada negocio. Es decir, si tengo
que cargar las facturas del negocio 15 para los días
22/09/2003 y 23/09/2003, pero aún no se cargaron los
datos del 21/09/2003 QUE NO ME PERMITA CARGARLO PARA ESE
NEGOCIO!!!
Esto lo tengo que controlar pues por cada negocio tengo
que tener facturas TODOS los días!!!
Se puede hacer esto???

Además, cómo hago para controlar los datos que ya tengo?
Es decir que hayan datos para cada uno de los días?

No se si servirá para esto pero como dato les digo que
tengo una tabla FECHAS con todas las fechas haciendo
foreign key con la fechaFactura de Facturas y
FacturasNuevas


INSERT INTO [0Facturas] -- Pendiente poner los Nombres
de las Columnas
SELECT * -- Remplazar por los
Nombres de la Columnas
FROM [0FactNuevas] fnu
WHERE fnu.FechaÚTEADD(dd,1,(SELECT MAX(Fecha) FROM
[0Facturas]))

vienen datos del 6 y del 7, cosa que puede pasar,
tener en cuenta el día sino el cliente también, es decir
Fecha-Cliente)


INSERT [0Facturas]
SELECT ffnn.*
FROM [0FactNuevas] ffnn
INNER JOIN (
SELECT fn.cliente
FROM [0FactNuevas] fn
INNER JOIN [0Facturas] f
ON f.Cliente = fn.Cliente AND dateadd
(dd,1,f.fecha) = fn.fecha) a
ON ffnn.cliente = a.cliente


me vienen datos del 6 y del 8 para un cliente, me los
carga a pesar
del 7 en este caso en FacturasNuevas.
 

Leer las respuestas

#1 Manuel Daponte
10/10/2003 - 21:47 | Informe spam
Por que no codificas un "stored procedure" con un cursor que te traiga las facturas nuevas ordenadas por fecha. Dentro del ciclo del
cursor pon una "ruptura de control" por fecha (detecta cuando empiecen facturas de un nuevo dia) y, cuando sea una nueva fecha,
valida que se pueda insertar de acuerdo a tus validaciones.

Manuel A. Daponte Santiago
El cielo por el clima.
El infierno por la compañia.


"marcelo" wrote in message news:037f01c38f63$e91a8730$
Hola!
La otra vez hice la pregunta que pongo acá abajo y me
respondieron 2 personas (MUCHAS GRACIAS!!!!), pero no era
exactamente lo que yo necesito. Abajo pongo la pregunta,
las respuestas que me dieron y en que no me funcionan.
Les agradezco si me pueden ayudar porque NO hay manera
que me salgan estos querys...

Cómo hago para NO cargar información de las facturas de
un negocio si no hay datos de días anteriores?

Tengo una tabla de Facturas y otra de FacturasNuevas.
Tanto en Facturas como en FacturasNuevas tengo un campo
que es fechaFactura.

Las facturasNuevas tengo que insertarlas en la tabla
Facturas pero siempre y cuando se hayan cargados datos de
los días anteriores para cada negocio. Es decir, si tengo
que cargar las facturas del negocio 15 para los días
22/09/2003 y 23/09/2003, pero aún no se cargaron los
datos del 21/09/2003 QUE NO ME PERMITA CARGARLO PARA ESE
NEGOCIO!!!
Esto lo tengo que controlar pues por cada negocio tengo
que tener facturas TODOS los días!!!
Se puede hacer esto???

Además, cómo hago para controlar los datos que ya tengo?
Es decir que hayan datos para cada uno de los días?

No se si servirá para esto pero como dato les digo que
tengo una tabla FECHAS con todas las fechas haciendo
foreign key con la fechaFactura de Facturas y
FacturasNuevas


INSERT INTO [0Facturas] -- Pendiente poner los Nombres
de las Columnas
SELECT * -- Remplazar por los
Nombres de la Columnas
FROM [0FactNuevas] fnu
WHERE fnu.FechaÚTEADD(dd,1,(SELECT MAX(Fecha) FROM
[0Facturas]))

vienen datos del 6 y del 7, cosa que puede pasar,
tener en cuenta el día sino el cliente también, es decir
Fecha-Cliente)


INSERT [0Facturas]
SELECT ffnn.*
FROM [0FactNuevas] ffnn
INNER JOIN (
SELECT fn.cliente
FROM [0FactNuevas] fn
INNER JOIN [0Facturas] f
ON f.Cliente = fn.Cliente AND dateadd
(dd,1,f.fecha) = fn.fecha) a
ON ffnn.cliente = a.cliente


me vienen datos del 6 y del 8 para un cliente, me los
carga a pesar
del 7 en este caso en FacturasNuevas.

Preguntas similares