Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-12-2006
Runner Runner is offline
No confirmado
 
Registrado: jun 2006
Ubicación: Mar del Plata, Argentina
Posts: 3
Poder: 0
Runner Va por buen camino
Necesito mostrar lo que no existe

Hola. Es mi primer mensaje aqui, ya que hasta ahora habia solucinado todo leyendo de este foro.

Tengo una tabla con fichadas de personal y los siguientes campos:

nrolegajo
fecha
hora

necesito hacer una consulta que me arroje los dias que no hubo fichada para cada nro de legajo.
Por ejemplo si el empleado nro 23 ficho todo menos el dia 12 y 14 del mes, necesito que me lo muestre.

Estoy utilizando firebird 1.5

Gracias
Responder Con Cita
  #2  
Antiguo 28-12-2006
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 22
TJose Va por buen camino
Hola Runner

Yo buscaría la solución utilizando procedimientos almacenados
Responder Con Cita
  #3  
Antiguo 28-12-2006
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 22
TJose Va por buen camino
Hola Runner

Yo buscaría la solución utilizando procedimientos almacenados. No se bien como, pero probaría abriendo un cursor, recorriéndolo y viendo si existe el día. Me parece que va por ese lado.

Saludos
TJose
Responder Con Cita
  #4  
Antiguo 29-12-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
Puedes probar usando una subconsulta usando un Not In.

Saludos
Responder Con Cita
  #5  
Antiguo 29-12-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
nemesio, ¿cual es tu idea?

Será que estoy atontado, pero no se me ocurre de momento

Código SQL [-]
  select fecha 
from personal
 where fecha not in (select fecha from personal)

Si la fecha no existe, ¿como se mostraría? Quizás sea por medio de UDFs, pero lo dicho, no caigo... no caigo... (será que es el último viernes del año )

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 29-12-2006
Runner Runner is offline
No confirmado
 
Registrado: jun 2006
Ubicación: Mar del Plata, Argentina
Posts: 3
Poder: 0
Runner Va por buen camino
gracias

Ya lo resolvi con un store procedure.

Gracias por prestarme atencion.


Feliz anio nuevo a todo el mundo.
Responder Con Cita
  #7  
Antiguo 29-12-2006
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
¿Podrías poner el procedimiento que usaste? De esa forma ayudarías a otros que requieran algo similar.

// Saludos
Responder Con Cita
  #8  
Antiguo 30-12-2006
Runner Runner is offline
No confirmado
 
Registrado: jun 2006
Ubicación: Mar del Plata, Argentina
Posts: 3
Poder: 0
Runner Va por buen camino
Procedimiento

Hola. El codigo es el siguiente.

Código SQL [-]
CREATE PROCEDURE FALTAS(
  LEGAJO INTEGER,
  DESDE DATE,
  HASTA DATE)
RETURNS(
  DIAS VARCHAR(100) CHARACTER SET NONE,
  FALT VARCHAR(100) CHARACTER SET NONE)
AS
DECLARE VARIABLE LEG INTEGER;
DECLARE VARIABLE FEC SMALLINT;
DECLARE VARIABLE CON INTEGER;
BEGIN
  dias=''; falt='';
  CON=extract(day from desde);
  while (con<(extract(day from hasta)+1)) do
  begin
     for select distinct legajo,extract(day from fecha)
         from horario
         where (fecha between :desde and :hasta) and legajo=:legajo
         order by fecha
         into :leg, :fec
     do
     begin
        if (fec=con) then
        begin
           dias = dias || cast(fec as varchar(2)) || '-';
           break;
        end
     end
     if (fec!=con) then falt=falt || cast(con as varchar(2)) || '-';
     con=con+1;
  end
  SUSPEND;
END ^

SET TERM ; ^


Este me da dos cadenas, una con los dias fichados y otro con los dias no fichados.
Los parametros de fecha tienen que ser del mismo mes. Y el codigo esta sin depurar. Puede haber algun error. Ahora me funciona con los datos de prueba.
Escriba antes cualquier critica, por favor.
Gracias.
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
¿existe alguna propiedad en TRichedit que permita mostrar el número de cada línea? nuri Varios 1 06-04-2006 13:58:17
mostrar o no mostrar un control en un DBCTRLGRID segun la fila gesteban OOP 0 10-11-2005 17:21:11
Tabla existe ? Fita Conexión con bases de datos 2 09-10-2005 08:24:39
Existe ? Descendents Varios 1 20-10-2003 18:04:25
Componente ya existe????? Manuel Varios 2 22-09-2003 16:16:29


La franja horaria es GMT +2. Ahora son las 13:28:54.


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