Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Descontar pedazos de un todo (https://www.clubdelphi.com/foros/showthread.php?t=55044)

Caral 06-04-2008 06:29:24

Descontar pedazos de un todo
 
Hola a todos.
Tengo un problema que no he podido solucionar, os lo explico:
Tengo una pieza.
Esta pieza tiene una medida determinada.
A esta pieza se le cortan (pedazos de diferentes medidas), los cuales se convierten en piezas mas pequeñas.
Una vez cortados los pedazos, en ciertas ocasiones pueden sobrar otros pedazos mas pequeños que son desechados.
El problema:
Hacer desgloses de la pieza no es un grave problema, seria un asunto de sacarle el área e ir descontando los pedazos, asi se sabría lo que queda de esta.
El asunto es que no es una pieza, son muchas, ejemplo:
Piezas: 5
Area de las piezas: 27.5 m2
Pieza a descontar #1: area: 2.25 m2
Pieza a descontar #2: area: 0.90 m2
Area restante de las piezas: 24.35 m2

Bueno, se ve facil hasta ahi.
Empece con 5 piezas y un area de 27.5.
Ahora tengo 4.427 piezas.

La pregunta es cuanto me queda de una pieza en particular?.
Como saber que me queda de la pieza 1- 1.25 m2 etc.

Espero explicarme bien.
Se os ocurre como puedo identificar la cantidad restante por pieza?
Cualquier opción sera bienvenida.
Gracias
Saludos

Delphius 06-04-2008 06:54:56

Hola amigo Carlos, no se si he comprendido bien el problema, pero creo que puede servirte esto:

1. Estructuración de la base de datos:

Necesitamos al menos dos tablas, por simplicidad las denominaré Piezas y Cortes.
La idea es que Una pieza tenga varios cortes y un corte pertenece a una única pieza.
En la tabla Piezas tendríamos algo como:
ID-Pieza Area Nombre
1 50 A
2 20 B
3 10 C

En la tabla Cortes algo como esto:
ID-Corte ID-Pieza Tamaño
1 1 20
2 1 10
3 2 15
4 3 10

2. Como aplicar la consulta:
Por lo visto necesitas saber cuanto de las piezas han quedado disponible, esto se podría conseguir con algo como esto:
Código SQL [-]
select Pieza.Nombre, Area, Disponible
from Piezas, Cortes
where (Area - (select sum(Tamaño) from Piezas where Piezas.ID-Pieza = Cortes.ID-Pieza) > 0) as Disponible
order by Piezas.Nombre

Es muy posiblemente que el SQL necesite un poco de pulida, lo hice muy de memoria... en estos momentos estoy que me caigo de sueño y mi cerebro está un poco OFF.

Al menos creo que se entiende la idea.

Saludos,

Caral 06-04-2008 07:00:27

Hola
Gracias amigo.
He pensado en algo similar, el asunto es que tendría que generar una tabla adicional con una numeración de cada pieza, eso es lo que me ha detenido un poco ya que en la practica es un poco complicado hacerlo.
De todos modos tu idea es extraordinaria, me parece muy interesante, la voy a analizar.
Cuando descanses si se te ocurre algo mas, te lo agradeceré.
Saludos

Delphius 07-04-2008 17:16:04

Buen amigo, me he quedado pensando en lo que haz dicho:

Cita:

Empezado por Caral (Mensaje 277917)
(...)el asunto es que tendría que generar una tabla adicional con una numeración de cada pieza(...)

Y me he sentido un tanto intranquilo. Me confunde que digas "con una numeración de cada pieza" y "tabla adicional". ¿Entonces todavía no tienes una tabla en donde llevas el registro de las piezas?:confused: Porque si la tienes creería que bastaría con agregarle los campos necesarios para cumplir con este propósito.

He pensado en otro enfoque, tal vez, un tanto más complicado... para evitar esa consulta anidada.

La idea es que a medida que se ingresan los cortes ir actualizando la suma total en la tabla piezas. Por tanto la tabla Piezas ahora tendría otro campo más, digamos que lo llamamos AreaCorte. Es decir:
ID-Pieza Nombre ... Area AreaCorte
1 Pieza A 20 12
2 Pieza B 30 15
...

De modo que "relajamos" la consulta:
Código SQL [-]
select ID-Pieza, Nombre, ... Area, (Area - AreaCorte) as Disponible
from Piezas
where ....

Si estás con Access y tienes una buena cantidad de piezas y cortes... creería que tener consultas anidadas de dicha manera puede bajar un poco la perfomance.

Bueno es otro modo de ver el problema.

Saludos,

Caral 07-04-2008 18:04:06

Hola
Gracias amigo por tus recomendaciones, estoy analizando todo.
Gracias.
Saludos

egostar 07-04-2008 18:41:48

No se si estoy entendiendo bien el asunto que te hace escribir este hilo amigo, pero pienso que esto mas bien es asunto de algoritmos en lugar de bases de datos.

Aquí te dejo un documento que espero te ayude.

Salud OS

Caral 07-04-2008 19:16:11

Hola
Es interesante el articulo, pero el concepto es aunque algo similar difiere en algunas cosas.
En el caso del articulo se parte de una medida X y una serie de cortes que van a ser catalogados en difirentes tipos, osea para:
pieza X1- 30 cortes, X sobrante
pieza X2- 27 cortes, X sobrante, etc
El costeo de la pieza es relativamente simple de esa manera.

El asunto con mi problema es un poco mas sencillo y complejo a la vez.
Este si tiene que ver con tabla.
Es un poco complicado explicarlo (no me envies a leer la guia):D:D
Estoy trabajando en como planear este asunto.
Cualquier cosa, te lo comento.
Gracias por el aporte.
Saludos

egostar 07-04-2008 19:19:01

Cita:

Empezado por Caral (Mensaje 278048)
......El asunto con mi problema es un poco mas sencillo y complejo a la vez.
Es un poco complicado explicarlo (no me envies a leer la guia)......

:rolleyes::rolleyes: Está bien, que sea la última vez, para la próxima te mando a......... leer no solo la guía de estilo.... :D:D:D

Salud OS

Delphius 07-04-2008 19:34:49

Carlos,

Después de haber visto muy de pasada rápida al documento que señala Eliceo, pues me he quedado pensando "¿qué tiene que ver esto con lo que está haciendo Carlos?" y luego recordé sobre tu negocio. Y luego dije "¡Pues claro!... que tonto he sido! Es posible que Carlos esté buscando el modo de determinar el modo de maximizar el uso de material!"

Y bueno, esto me ha dejado más "picando".
Me gustaría, que en cuanto tengas tiempo, que trates de exponer aqui el tema y tus análisis del asunto. Me gustaría saber cuales son los límites de los requisitos: donde termina lo fácil y donde comienza lo dificil.

El problema es uno, y aqui somos muchos. Le podemos hacer frente.;):)

Saludos,

Caral 07-04-2008 19:42:04

Hola
Bueno ya que quieres pensar un rato, ahi va.
Lo que tengo actualmente:

La Lamina entra en bodega.
Esta entra en cantidades, osea:
lamina tipo1, cantidad 100.
lamina tipo2, cantidad 500.
esto entra como materia prima a la tabla materiales.

programa 1:
Envia a produccion (el corte) de diferentes piezas. (tabla ordenAcrilico)

Programa 2:
Recibe la orden: (ve la tabla OrdenAcrilico)
piezas a cortar:
15 piezas Ibiza
40 piezas mallorca, etc.
El operario va cortando y una por una indica.
(Descuenta de la tabla (ordenAcrilico) e inserta el corte en la tabla (ordenAcrilicoItem)

1 pieza Ibiza, lamina tipo1
1 pieza Ibiza, lamina tipo1
1 pieza Ibiza, lamina tipo2
1 pieza Mallorca, lamina tipo1
1 pieza Mallorca, lamina tipo1

Inmediatamente despues escoge el tipo de lamina: (tabla materiales)
Y descuenta la parte de la lamina que uso, ejemplo:

lamina tipo1, cantidad 100
1 pieza tipo Ibiza, material usado 0.66.
Saldo lamina tipo1, cantidad 99.34

Bueno, el asunto esta bien hasta ahi, se que empece con 100 y ahora tengo 99.34

El problema viene en que no se sabe de que lamina corto ya que como sabes hay sobrantes, estos no me importan, pero si por ejemplo hago otro corte, los numeros no daran.

Mi interes es saber de que lamina corto y cuanto queda de esa lamina en especifico, si se puee sacar otra pieza o solo sera desperdicio.

Lo unico que me quedaria es enumerar las laminas a la hora de pasarla a corte y definirles su area.

No se si me captas.
Saludos

egostar 07-04-2008 19:52:13

Cita:

Empezado por Caral
El problema viene en que no se sabe de que lamina corto ya que como sabes hay sobrantes, estos no me importan, pero si por ejemplo hago otro corte, los numeros no daran.

Bueno, aquí hay algo que seguro se me escapa, pero pienso que una lámina se debe considerar "sobrante" hasta que no se pueda obtener mas cortes de las medida que tú mismo indiques, de tal forma que no debería de haber sobrantes >= a la medida más pequeña que trabajes.

No se si me explico.

Salud OS

Caral 07-04-2008 20:05:13

Hola
Efectivamente No hay sobrantes menores de la medida menor que necesite, pero de que lamina sobro??.

Asumamos que mi corte minimo es de: 0.33

Ejemplo:
lamina tipo 1, cantidad 100.

corte 1, 0.66, lamina tipo 1 cantidad 99.34
corte 2, 0.66, lamina tipo 1 cantidad 98.68
corte 3, 0.37, lamina tipo 1 cantidad 98.31

Los numeros me dirian que si mi corte minimo es de 0.33 y mi sobrante actual es de 98.31, se empezaría una lamina nueva, pero si sigues con ese descuento los numeros no dan.

Tanto es asi que el problema que tengo actualmente es que la lamina en la tabla materiales en ocasiones esta en negativo y si hay corte.

No se si me explico, el problema es la definicion de la lamina, una por una.
Saludos

egostar 07-04-2008 20:12:23

Veamos, no entiendo tus cuentas

Cita:

Empezado por Caral
Lamina tipo 1, cantidad 100.

100 que

Cita:

Empezado por Caral
La menor medida es de 0.33 y te sobran 98.31

Porque dices que se empezaría una lamina nueva.....


Ahora, seria bueno saber cual es el proceso, quiero decir, como ingresan a tu programa esas cantidades, no hablo del código, sino de la capa 8 del Modelo OSI (human interface :D:D:D)

Salud OS

Caral 07-04-2008 20:15:06

Hola
Cita:

Empezado por egostar (Mensaje 278069)
100 que

100 laminas tipo X
Cita:

Empezado por egostar (Mensaje 278069)
sino de la capa 8 del Modelo OSI (human interface :D:D:D)

Ahora si me jodiste.:D:D
Saludos

Delphius 07-04-2008 20:21:35

Bueno... por empezar estoy carburando la idea.

Y quiero decir amigo Carlos, que en tu último ejemplo, me parece que estás mezclando cantidad con área. O yo estoy entendiendo mal.

¿Tu dices que entra 100 láminas, o que el área de la lámina es de 100?:confused:

Ahora me tengo que desaparecer, pero ni bien vuelva estaré posteando de nuevo.

Recuerdo haber leído algo de este tema, de como manejar esto... dejame hacer memoria...

Saludos,

Caral 07-04-2008 20:27:05

Hola
Debo especificar mejor.
100 unidades
0.66 es el porcentaje de una lamina

ejemplo:

1 lamina 100%

1 corte 0.66 %
1 corte 0.34 %
Total sobra 0%

Saludos

egostar 07-04-2008 20:28:31

Cita:

Empezado por Caral (Mensaje 278070)
Hola
100 laminas tipo X

Entonces, menos me cuadran tus cifras, porque 100 piezas solo sería posible si todas fueran de la misma medida, yo haria esa operación a partir de la medida de la lámina y no del número de piezas.

Salud OS

Medida de Lamina 27.5 m2

Código:

27.50        0.66        26.84
26.84        0.66        26.18
26.18        0.37        25.81
25.81        0.66        25.15
25.15        0.37        24.78
24.78        0.37        24.41
24.41        0.66        23.75
23.75        0.66        23.09
23.09        0.37        22.72
22.72        0.66        22.06
22.06        0.66        21.40
21.40        0.37        21.03
21.03        0.66        20.37
......

Salud OS

Caral 07-04-2008 20:29:26

Hola
Otra a la tabla materiales entra como cantidad, no puede entrar ni como area ni como porcentaje.
Saludos

egostar 07-04-2008 20:29:32

Cita:

Empezado por Caral (Mensaje 278075)
Hola
Debo especificar mejor.
100 unidades
0.66 es el porcentaje de una lamina

ejemplo:

1 lamina 100%

1 corte 0.66 %
1 corte 0.34 %
Total sobra 0%

Saludos

Vaya

Pues no es lo mismo que pensé

Ya corrijo lo que he dicho

Salud OS

egostar 07-04-2008 20:42:58

Cita:

Empezado por Caral (Mensaje 278079)
Hola
Otra a la tabla materiales entra como cantidad, no puede entrar ni como area ni como porcentaje.
Saludos

Pues estoy muy liado con tus cuentas amigo Caral, de entrada no puedes decir que una lamina puedes hacer 100 unidades si una de ellas ocupa el 66% de la lámina

Lo correcto sería que vayas "restando" el porcentaje de cada una de las láminas cortadas en relación al tamaño de la lámina.

Por ejemplo

Código:

Residuo        % Corte        Corte
27.50        33%        9.08
18.43        20%        5.50
12.93        33%        9.08
3.85        33%        9.08 <--- No es posible hacer esto

Salud OS


La franja horaria es GMT +2. Ahora son las 13:07:19.

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