Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-01-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Numeros faltantes

Hola a todos y gracias de antemano.
Mi consulta es la siguiente:
Ejemplo:
Tengo una tabla con un campo numerico (Numero), en este hay logicamente numeros.
2500
3998
4000
4001
4003
4004
4008
etc.
Como puedo saber de esta lista cuales faltan, teniendo en cuenta que son consecutivos del 1 en adelante y que el campo puede contener mas de 10000 numeros diferentes.
Si fuera posible que me indicaran un procedimiento o funcion se los agradeceria.
Me gustaria poder colocar dos edit y definir entre ellos cuales numeros faltan.
y que se mostrara en un grid.
Nota:
No manejo muy bien las funciones, si me explican lo agradecere mucho.
Ya se que pido mucho, pero la verdad no se me ocurre como hacerlo.
Saludos
Responder Con Cita
  #2  
Antiguo 24-01-2007
Robert01 Robert01 is offline
Miembro
 
Registrado: feb 2006
Ubicación: Córdoba, Argentina
Posts: 895
Poder: 19
Robert01 Va por buen camino
Podrías usar un contador que vaya desde el más pequeño al ultimo, en cada paso del bucle pruebas si está el número o si falta.

O sino podrías poner todos los números en un arreglo e ir comprobando cuales no están en tu lista.

saludos
Responder Con Cita
  #3  
Antiguo 25-01-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Quizá un poco descabellado pero se me ocurre esto:

Creas una tabla numeros con un sólo campo numero e insertas todos los números hasta el mayor posible. Esto lo puedes hacer con un simple ciclo:

Código Delphi [-]
Query.SQL.Text := "insert into numeros values(:numero)";

for I := 1 to MaximoNumero do
begin
  Query.ParamByName('numero').AsInteger := I;
  Query.ExecSQL;
end;

Luego, para averiguar cuáles número faltan entre un primer y último número usas la consulta:

Código SQL [-]

select * from numeros
where
  numero not in (select numero from tu_tabla) and
  numero between :primero and :ultimo

Sustituyes los parámetros y lanzas la consulta:

Código Delphi [-]
Query.ParamByName('primero').AsInteger := EditPrimerNumero.Text;
Query.ParamByName('ultimo').AsInteger := EditUltimoNumero.Text;

Query.Open;

// Saludos
Responder Con Cita
  #4  
Antiguo 25-01-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
Hola,

prueba esto que he contestado en otro hilo:

Código SQL [-]
SELECT A.ID+1
FROM TABLA A
LEFT JOIN TABLA B ON (A.ID = B.ID-1)
WHERE B.ID IS NULL

lo único que deberías desechar el valor más grande, porque será el siguiente al mayor.

Un saludo
__________________
Sotoca Web
Responder Con Cita
  #5  
Antiguo 25-01-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Gracias a todos por sus respuestas
Voy a probar todas
Gracias
Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Formato numeros jzginez PHP 2 26-12-2005 16:18:56
Numeros complejos trabuc Varios 2 19-01-2005 14:31:16
Datos faltantes en Maestro/Detalle nax Conexión con bases de datos 4 28-11-2004 03:49:34
Insert de datos faltantes con sql StartKill Firebird e Interbase 4 19-10-2004 02:59:05
Escribir numeros mosorio OOP 1 23-06-2003 15:48:14


La franja horaria es GMT +2. Ahora son las 01:11:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi