Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-02-2011
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
¿Que enfoque de programación utilizarias?

Aquí en el changarro tenemos nos hemos dado cuenta que de repente al tener 2 o 3 proyectos en marcha a la vez, asignados a diferentes programadores, salen a relucir diferentes prácticas y costumbres. Si bien hay una guía de estilo más o menos definida al final invariablemente cada quien le pone su toque.

Hace unos días nos reunimos para unificar criterios respecto a algunas funciones y tareas que a fuerza de ser repetitivas o utilizarse mucho en casi todos los proyectos requieren ponernos de acuerdo. Una de estas tareas es la siguiente:

Sea una tabla "facturas" que contiene n registros. Sea otra tabla "recibos" que contiene también n registros y a su vez una tabla "det_recibos" que contiene los números de factura incluidos en el recibo. Desde el punto de vista de diseño, un recibo es un conjunto de facturas que se llevan o traen en algún momento dado y que posteriormente regresan a su lugar. Un recibo permanece "activo" o "abierto" mientras no se le indique lo contrario. Una factura solo puede ser incluida en un recibo que esté abierto siempre y cuando dicha factura no esté ya incluída en otro recibo abierto. Es decir, solo puede aparecer en un recibo abierto a la vez.

Basado en las reglas anteriores vemos que hay dos enfoques ya hablando de la programación de las tablas.

1.- Incluir un campo "num_recibo" en la tabla "facturas" para colocar ahí el número del recibo(abierto) en el que dicha factura está incluida, al cerrar el recibo se borra el mismo de las facturas. De esta forma basta la tabla de facturas para consultar cuales se encuentran incluidas en determinado recibo

2.- No incluir el campo y hacer las consultas utilizando las 3 tablas mediante joins para determinar si una factura ya se encuentra en x recibo.


Personalmente me gusta más el enfoque 2 ya que no hay que hacer modificaciones a la tabla "facturas" pero el enfoque 1 también funciona aunque implica más operaciones al momento de crear un recibo.

¿Ustedes que opinan?, ¿Hay alguna otra alternativa?, ¿Ustedes como lo hacen?
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #2  
Antiguo 09-02-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Desde hace muchos años intento evitar a toda costa cualquier posible incongruencia entre diferentes tablas.

Podría darse el hipotético caso de que existiese un registro en la tabla de 'enlace' que no se corresponda bien a una factura o bien a un recibo. .... por la causa que sea ...

Por lo tanto, para mí queda claro que utilizaría la opción 1, grabando dentro de la propia tabla de facturas el número de recibo correspondiente.

__________________
Piensa siempre en positivo !
Responder Con Cita
  #3  
Antiguo 09-02-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por AzidRain Ver Mensaje
2.- No incluir el campo y hacer las consultas utilizando las 3 tablas mediante joins para determinar si una factura ya se encuentra en x recibo.
Sino agregases un campo RECIBO a la tabla FACTURAS, cómo harías para saber a cuál recibo está relacionada una factura?
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #4  
Antiguo 09-02-2011
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
opción 1, cabe anotar que si ya está en un recibo dicha factura, supongo que no se elimina del detalle, pero en el detalle si dice si la factura está activa o el recibo está activo, como sea, lo importante es si la información está correcta el join entre las tablas es suficiente para la tarea.
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #5  
Antiguo 09-02-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Poner el código de la factura en los recibos.
Responder Con Cita
  #6  
Antiguo 09-02-2011
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Chris, para saber si una factura esta en un recibo activo hago esto:

Código SQL [-]
SELECT FACTURAS.NUM_FACTURA, RECIBOS.NUM_RECIBO FROM
FACTURAS
JOIN DET_RECIBOS ON (DET_RECIBOS.NUM_FACTURA=FACTURAS.NUM_FACTURA)
JOIN RECIBOS ON (RECIBOS.NUM_RECIBO=DET_RECIBOS.NUM_RECIBO)
WHERE FACTURA.NUM_FACTURA=:NUM_FACTURA AND RECIBOS.ACTIVO=1

Obviamente pasándole el parámetro del número de factura que quiero verificar si ya está en algún recibo abierto. Esta misma consulta la puedo utilizar para saber en que otros recibos aparece la factura en cuestión con solo quitarle la condición de buscar solo en activos.

Al final los dos enfoques funcionan pero lo que me hace roncha es que en el caso de la opción 1, tengo que además de hacer las modificaciones a la tabla de recibos, tengo que hacerlo también en la de facturas. En el otro caso, la tabla de facturas nunca sufre cambios.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #7  
Antiguo 09-02-2011
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Hola

creo que tambien utilizaría el de agregar el campo a la tabla factura,

aunque tambien le daria vueltas a una tercera opción y es (aunque esto se parece a la solucion nº 2....)

3.- crear otra tabla en donde se vincule recibo y factura... aunque esta sea solo para saber si la factura pertece a un recibo... y a su vez cuantas facturas estan en un determinado recibo..

Salu2
__________________
BlueSteel
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
Programación en PDA tal0 .NET 1 01-08-2007 16:45:58
Porque se perderá el Enfoque al Limpiar Edit???? AGAG4 Varios 4 22-11-2004 18:54:39
Pasar enfoque de Celdas en dbGrid AGAG4 Varios 9 15-09-2004 02:00:30
Encontrar el enfoque del componente AGAG4 Varios 5 14-08-2004 20:17:26
Ventana iniciada sin enfoque soul6301 Varios 1 02-08-2004 07:22:10


La franja horaria es GMT +2. Ahora son las 22:17:45.


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