Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

como proceder con esta aplicación...

Estas en el tema de como proceder con esta aplicación... en el foro de Visual Basic clásico en Foros del Web. Estimados Comapñeros!! estoy intentando realizarle a un compañero una pequeña aplicación para presupuestar materiales.Todos estos estan codificados con su ref, descripcion,precio. El problema me viene ...
  #1 (permalink)  
Antiguo 14/06/2005, 04:51
 
Fecha de Ingreso: enero-2002
Mensajes: 86
Antigüedad: 22 años, 3 meses
Puntos: 0
como proceder con esta aplicación...

Estimados Comapñeros!!

estoy intentando realizarle a un compañero una pequeña aplicación para presupuestar materiales.Todos estos estan codificados con su ref, descripcion,precio.
El problema me viene cuando quiere crear un nuevo material(ejem. Un tubo), el cual se compone a la vez de otros materiales(ejem. 1 mt.de manguera,2 conexiones,2 manguitos).
Les pediría si me pueden guiar un poco de como proceder,

Muchas Gracias,
Saludos,
JuanPa.
  #2 (permalink)  
Antiguo 14/06/2005, 05:58
 
Fecha de Ingreso: agosto-2002
Mensajes: 230
Antigüedad: 21 años, 8 meses
Puntos: 1
Lo que yo haría sería tener en la tabla de materiales un campo booleano del tipo compuesto (si/no), y crearía una tabla COMPOSICION_MATERIAL, que tendría como mínimo estos campos id_material_padre,id_material_hijo,cantidad y en ella insertaría los datos referentes a los materiales que componen el material padre

Espero que te sirva de ayuda
  #3 (permalink)  
Antiguo 14/06/2005, 06:20
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Lo puedes hacer fácilmente. Por un lado tienes un array (o lo que sea) de los materiales. Entonces en un objeto nuevo aparte de otra información tienes que agregar el ID de los materiales que contiene y su cantidad. Si lo quieres hacer simple, hasta un string te vale:

"10ID_PLASTICO;2ID_CAUCHO;500ID_GOMA;"

o si tus ID son números o alfanumérico(como es evidente):
"10 01223341AB 11 012HJ6128 500 ASDFFA"

O un array de estructuras (ID + Cantidad).

Te dejo aquí como podrías estructurar tu programa



Código:
Type Composicion_Elemento
Dim ID_Material As Integer
Dim Cantidad As Integer
End Type

Type Objeto
Dim ID As Integer
Dim Nombre As String
(........)
Dim Composicion[] As Composicion_Elemento
(........)
End Type
Por tanto cada vez que crees un objeto debes añadir tantos materiales y su respectiva cantidad como quieras.
  #4 (permalink)  
Antiguo 14/06/2005, 07:23
 
Fecha de Ingreso: abril-2005
Mensajes: 137
Antigüedad: 19 años
Puntos: 0
Cita:
Iniciado por xaquin
Lo que yo haría sería tener en la tabla de materiales un campo booleano del tipo compuesto (si/no), y crearía una tabla COMPOSICION_MATERIAL, que tendría como mínimo estos campos id_material_padre,id_material_hijo,cantidad y en ella insertaría los datos referentes a los materiales que componen el material padre

Espero que te sirva de ayuda

la solución es buena, pero creo que no sería necesario agregar el campo booleano, ya uqe al momento de realizar consultas a la tabla COMPOSICION_MATERIAL se podría verificar la composición de cada material, eso mostrarlo en un reporte sería muy simple
  #5 (permalink)  
Antiguo 14/06/2005, 08:00
 
Fecha de Ingreso: agosto-2002
Mensajes: 230
Antigüedad: 21 años, 8 meses
Puntos: 1
el campo booleano es optativo, pero si en algún momento te hiciera falta sacar un listado de materiales digamos "primos" simplemente chequeando que ese campo estuviera a falso ya lo tendríamos. No es imprescindible pero creo que podría tener su utilidad
  #6 (permalink)  
Antiguo 14/06/2005, 08:19
 
Fecha de Ingreso: abril-2005
Mensajes: 137
Antigüedad: 19 años
Puntos: 0
Cita:
Iniciado por xaquin
el campo booleano es optativo, pero si en algún momento te hiciera falta sacar un listado de materiales digamos "primos" simplemente chequeando que ese campo estuviera a falso ya lo tendríamos. No es imprescindible pero creo que podría tener su utilidad
claro, es cierto, todo depende del nivel de profundidad que se requiera, pero sería util
  #7 (permalink)  
Antiguo 14/06/2005, 13:30
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por marcocho2005
claro, es cierto, todo depende del nivel de profundidad que se requiera, pero sería util
¿?

El rendimiento será mayor sin usar booleano _siempre_.
  #8 (permalink)  
Antiguo 15/06/2005, 01:42
 
Fecha de Ingreso: agosto-2002
Mensajes: 230
Antigüedad: 21 años, 8 meses
Puntos: 1
quien habló de rendimiento?además te aseguro que por poner una columna a mayores si tienes un buen servidor, la diferencia apenas se notará
  #9 (permalink)  
Antiguo 15/06/2005, 08:35
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 3 meses
Puntos: 1
Cita:
Iniciado por MaxExtreme
¿?

El rendimiento será mayor sin usar booleano _siempre_.
Todo depende verdad?, poque si lo que necesitas es listar los materiales primos como dice xaquin es mejor un boleano, porque si los haces con dos array o tablas (que al fin y al cabo tienen la misma lógica) tienes que hacer un match antes dos objetos (más memoria) mientras que con un boleano simplicaría la busqueda de los materiales primos.

Saludes
__________________
Leer es Saber, REEL.
Mi Blog
  #10 (permalink)  
Antiguo 15/06/2005, 09:35
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por reel
Todo depende verdad?, poque si lo que necesitas es listar los materiales primos como dice xaquin es mejor un boleano, porque si los haces con dos array o tablas (que al fin y al cabo tienen la misma lógica) tienes que hacer un match antes dos objetos (más memoria) mientras que con un boleano simplicaría la busqueda de los materiales primos.

Saludes
Precisamente me refería a eso:

Cita:
Iniciado por xaquin
si en algún momento te hiciera falta sacar un listado de materiales digamos "primos" simplemente chequeando que ese campo estuviera a falso ya lo tendríamos
Pero sigo diciendo que si tienes una lista de los materiales, pasas directamente a la lista. Si tienes uno, sacarás uno, si tienes cincuenta, pues cincuenta. Con usar el booleano no ganas nada, porque harías una comparación y fuese verdadero o falso irías a la lista.
  #11 (permalink)  
Antiguo 15/06/2005, 09:47
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 3 meses
Puntos: 1
Una pregunta, como le harias para sacar los materiales primos (es decir que no es compuesto por otros materiales)?

Saludes
__________________
Leer es Saber, REEL.
Mi Blog
  #12 (permalink)  
Antiguo 15/06/2005, 10:09
 
Fecha de Ingreso: mayo-2005
Mensajes: 93
Antigüedad: 19 años
Puntos: 1
Me estoy quedando acojonado con lo facilmente que os enganchais en discusiones...

Pues como todo, depende de para qué se quiera...

Tanta discusión tiene una relación 1 a N entre dos tablas ELEMENTO - PIEZA???

Todas las soluciones que habeis dado son correctas, pero creo que no habrá gran diferencia en el tratamiento de la infromación por poner un campo booleano o no ponerlo, verdad???
Que pasa?? Que al no ponerlo se nos va a caer el servidor porque lo saturamos de procesos para poder obtener dicha información????

Y reel, cómo saco los elementos que no tengan piezas???, muy sencillo, con una sentencia SQL.

select codelemento from elemento where codelemento not in (select codelemento from pieza)

Por favor, seamos un poco más abiertos a las soluciones que propone cada uno, que aqui estamos para esto, para intentar aportar soluciones y puntos de vista, y no creo que el sistema de jpablogus sea tan crítico como para que tengamos que hilar tan fino como para llegar a estas discusiones que no llevan a ningún lugar, y que encima, me joden, porque tengo que entrar a mirar a ver si hay algo interesante, por si acaso.

ABAJO LA TERCERA FORMA NORMAL!!!!!!
Y si alguien de los que está empezando con vb lee esto, tened en cuenta que la redundancia de ciertos campos es una gran solución!!!!!


Espero que nos calmemos un poco, aunque igual esto es una equivocación para que os tireis a mi yugular, pero bueno, intentaré no responder.

Un saludo a tod@s
__________________
No te hubieran dado la capacidad de soñar sin darte también la posibilidad de convertir tus sueños en realidad
  #13 (permalink)  
Antiguo 15/06/2005, 10:47
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 3 meses
Puntos: 1
Bueno, yo no veo la discusión, ahora todo depende.

Yo dí mi opinión, MaxExtreme la suya, ahora el problema es que, como no puedo estar en los zapatos de MaxExtreme, no etendí la opinión de Max, porque yo me refería al problema A pero el parecía estar en problema Z, por tal motivo decidí hacer la pregunta, porque la unica forma de comprender lo que otra persona dice es ponerse en el punto de vista del otro.

Cita:
select codelemento from elemento where codelemento not in (select codelemento from pieza)
Ahora es cierto que con esa sentencia SQL resuelve el problema, ¿será acaso lo que he escrito hace parece ser un ingnorante de primera?

¿Tu crees que mi solución este totalmente errada?

Otra cosa, hay miles de soluciones para tal problema. Tu lo haces con una clausula IN, yo podría sugirirte usar un RIGHT o LEFT JOIN (depende verdad?) con la otra tabla.

Pero a mi me interesa saber cual es la mejor solución, por eso pregunto y aclaros ideas.

Así que le recomiendo a todos los de foro que simplemente cada quien ponga su opinión o solución del problema (sin criticar a nadie) y dejen que el dueño del problema decida cual el la mejor solución para él.

Saludes
__________________
Leer es Saber, REEL.
Mi Blog
  #14 (permalink)  
Antiguo 15/06/2005, 12:59
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por reel
Una pregunta, como le harias para sacar los materiales primos (es decir que no es compuesto por otros materiales)?

Saludes
Creo que no has entendido mi sistema. Un objeto tiene "materiales", 1 o varios, sean primos o no. Luego tendrás que hacer una estructura llamada "material" que tenga las propiedades que necesites, y otro array en éste que especifique los materiales de los que está compuesto. Si no hay ninguno, ¡pues primo! Si necesitas saberlo, pues haces una función que compruebe si hay más de uno, la velocidad será igual. Pero si quieres añadir tu booleano, añádelo ;) Todo depende de cómo sea el uso que le des...
  #15 (permalink)  
Antiguo 15/06/2005, 14:25
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Cita:
Iniciado por zabait

ABAJO LA TERCERA FORMA NORMAL!!!!!!
Y si alguien de los que está empezando con vb lee esto, tened en cuenta que la redundancia de ciertos campos es una gran solución!!!!!


Espero que nos calmemos un poco, aunque igual esto es una equivocación para que os tireis a mi yugular, pero bueno, intentaré no responder.

Un saludo a tod@s
La redundancia de ciertos campos es una gran solución???

Está claro y todos sabemos que mientras mayor es el grado de la forma normal de la base... tenemos mas tablas... y por lo tanto mas foreign keys. Lo que te obliga a convertirte un experto en sql para manejar todas las tablas relacionadas... Para los que no lo somos, es un problema... pero el problema mayor sería pensar quedarme en una segunda forma normal tan solo para no tener que hacer consultas sql muy complejas... hay que tener animos de aprender. Y por último, la normalización ayuda a que el modelo entidad/relación sea mas flexible y no tan pegado al modelo del negocio, por lo que hace que su mantenimiento no sea tan complicado, si me quedo en una segunda forma normal y luego tengo que hacer cambios... habrá mucho que cambiar (no solo en la base sino también en las aplicaciónes que la accesan) en relación a si la bases hubiese llegado a una cuarta forma normal

  #16 (permalink)  
Antiguo 16/06/2005, 06:58
 
Fecha de Ingreso: abril-2005
Mensajes: 137
Antigüedad: 19 años
Puntos: 0
Cita:
Iniciado por MaxExtreme
Creo que no has entendido mi sistema. Un objeto tiene "materiales", 1 o varios, sean primos o no. Luego tendrás que hacer una estructura llamada "material" que tenga las propiedades que necesites, y otro array en éste que especifique los materiales de los que está compuesto. Si no hay ninguno, ¡pues primo! Si necesitas saberlo, pues haces una función que compruebe si hay más de uno, la velocidad será igual. Pero si quieres añadir tu booleano, añádelo ;) Todo depende de cómo sea el uso que le des...

Con todo respeto MaxExtreme y sin ganas de entrar en una disusión, la solución de crear objetos es muy interesante, en especial por el manejo de memoria, pero todo depende del tipo de aplicación, pienso que si el caso fuese de una aplicación cliente-servidor, pues tu solución no sería del todo óptima, pues lo que "generalmente" se busca en ese tipo de soluciones es que el trabajo pesado se haga en el servidor y no en el cliente, para evitar dependencia de hardware.
Ahora bien, si el caso es de una aplicación local, pues óptimo, porque mediante la aplicació manejas la memoria necesaria en lugar de la BD.

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:07.