Ok, ahora entiendo lo que necesitas.... (los posibles problemas con Hacienda que te genere esto los solucionas por otro lado).
Se trata de encontrar lo que
NO esta en la tabla, yo lo solucionaria con programación externa a partir de la información que te dará la query que te adjunto
Nos da la factura mínima y máxima de cada serie el numero de facturas que hay en la tabla y por diferencia el numero de saltos...
En pseudo codigo
Código pre:
Ver original//Consigo la lista de series
Serie="Select Serie FROM facturas GROUP BY serie"
Para cada Serie {
//Consigo el resumende facturas de la serie
NumSaltos=SELECT Facturas.Serie,
Min(Facturas.No) AS MinNumero,
Max(Facturas.No) AS MaxNumero,
Count(*) AS NumFacturas,
(Max(Facturas.No)-Min(Facturas.No)+1)-Count(*) AS Saltos
FROM Facturas
WHERE Facturas.Serie=Y
GROUP BY Facturas.Serie;
Encontrado=Falso
//Si hay saltos en la serie
Si Saltos>0 {
//Consigo todas las facturas de la serie
Factura="SELECT No FROM facturas WHERE serie='Y'"
//Para cada numero entre 1 y Max comparo con las Facturas de la serie
Para X=1; X<=MaxNumero; X++{
Para cada Factura {
Si Factura.No==X {
Encontrado=Verdadero
}
}
//Si no esta lo reporto
Si Encontrado==Falso{
"Falta la " + X //Aqui se podria hacer el INSERT
}
}
}
}
Seguro que se puede optimizar, el numero de consultas, de bucles.... o como
no repasar siempre todas las facturas usando como minimo el numero maximo del ultimo dia que se ha pasado el proceso...
Posible INSERT a ejecutar
INSERT INTO facturas (serie,no,comentario) VALUES (Y,X,"Perdida");
con lo que se completarian las series.....