Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-04-2004
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
Creo que sigo sin entender. Independientemente de SQL, la frase

"todos los contratos de un cliente en un plazo de tiempo determinado, es decir, los contratos que tienen "fecbaja <> null" y el resto siempre y cuando sean del mismo cliente" pues indica todos los contratos del cliente.

// Saludos
Responder Con Cita
  #2  
Antiguo 23-04-2004
Avatar de tgsistemas
tgsistemas tgsistemas is offline
Miembro
 
Registrado: dic 2003
Ubicación: Barcelona
Posts: 149
Poder: 23
tgsistemas Va por buen camino
Estoy muy espeso, perdona roman.
Los clientes tienen contratos con características determinadas (horas contratadas, tarifa por hora, penalizaciones, etc...). Se trata de que el usuario seleccione el cliente y las fechas y el query le devuelva los contratos que no han finalizado aun y los que se han cerrado en ese periodo de tiempo (pero no deben aparecer los que finalizaron anteriormente) para así poder calcular las horas previstas y las realizadas contabilizando los días habiles en las fechas seleccionadas.
Es parecido a control de nóminas con los contratos de los trabajadores, puede haber una reduccion o ampliación de horas a partir de una determinada fecha.
No se si me he explicado bien, a estas horas ya estoy un poco dormido.
Gracias roman.
__________________
Toni | blog
Responder Con Cita
  #3  
Antiguo 23-04-2004
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
Cita:
Empezado por tgsistemas
Se trata de que el usuario seleccione el cliente y las fechas y el query le devuelva los contratos que no han finalizado aun y los que se han cerrado en ese periodo de tiempo (pero no deben aparecer los que finalizaron anteriormente)
Entonces creo que sería así:

Código:
select * from CNTRTOS 
where
  (CDGOCLNTE = :CDGOCLNTETEMP) and 
  (
    (FECBAJA is null) or
    (FECBAJA between :FECHAD and :FECHAH)
  )
// Saludos
Responder Con Cita
  #4  
Antiguo 23-04-2004
Avatar de tgsistemas
tgsistemas tgsistemas is offline
Miembro
 
Registrado: dic 2003
Ubicación: Barcelona
Posts: 149
Poder: 23
tgsistemas Va por buen camino
Cita:
Empezado por roman
Entonces creo que sería así:

Código:
select * from CNTRTOS 
where
  (CDGOCLNTE = :CDGOCLNTETEMP) and 
  (
    (FECBAJA is null) or
    (FECBAJA between :FECHAD and :FECHAH)
  )
// Saludos
Gracias roman por la ayuda, pero no funciona bien, lo he probado y solo muestra un contrato.
Sucede exactamente lo contrario que me pasaba a mi en el primer mensaje (cuando debería mostrar dos contratos solo encuentra uno).
Gracias por la ayuda.
__________________
Toni | blog
Responder Con Cita
  #5  
Antiguo 23-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Cita:
Empezado por tgsistemas
y el query le devuelva los contratos (jach: de un solo cliente) que no han finalizado aun y los que se han cerrado en ese periodo de tiempo
Pues lo propuesto por román, cumple con esta especificación...

quizas otra vez no te explicaste bien... o no has explicado el campo que hay que tomar en cuenta... pero si es fecbaja, ya esta bien.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 23-04-2004
Avatar de tgsistemas
tgsistemas tgsistemas is offline
Miembro
 
Registrado: dic 2003
Ubicación: Barcelona
Posts: 149
Poder: 23
tgsistemas Va por buen camino
Thumbs up

Gracias jachguate !!!

Despues de leer tu mensaje (y dormir un poco ) me he dado cuenta de una cosa muy importante... necesitaba utilizar tambien el campo FecAlta.

Cita:
Empezado por jachguate
Pues lo propuesto por román, cumple con esta especificación...

quizas otra vez no te explicaste bien... o no has explicado el campo que hay que tomar en cuenta... pero si es fecbaja, ya esta bien.

Hasta luego.

Ahora lo estoy probando con el siguiente query y parece que funciona correctamente

Código:
select * from CNTRTOS
where
  (CDGOCLNTE = :CDGOCLNTETEMP) and
  (
    (FECBAJA is null and FECALTA <= :FECHAH) or
    (FECBAJA between :FECHAD and :FECHAH or 
     FECBAJA >= :FECHAH)
  )
Como digo lo estoy probando y parece que funciona pero seguiré haciendo pruebas para estar completamente seguro.

Gracias tambien a Roman por su ayuda.

Saludos.
__________________
Toni | blog
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 05:41:50.


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