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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-06-2017
GINMARMENOR GINMARMENOR is offline
Miembro
 
Registrado: feb 2016
Posts: 58
Poder: 9
GINMARMENOR Va por buen camino
Totalizar campos.

Hola, tengo que llevar al día el stock actual de cada artículo en un almacen, hay compras y ventas lógicamente, o entradas y salidas con lo que el saldo actual va variando, pongamos por ejemplo que el artículo lo llamamos "Mesas", para sabe el número de mesas que tengo en cada momento, cómo sería el procedimiento más sencillo, crear un campo en la tabla donde llamado "Stock Actual", donde vaya sumando las compras y restando las ventas" en ese campo, o no sería necesario crear ese campo, podría hacerlo de otro modo más directo y sencillo.

Gracias.
Responder Con Cita
  #2  
Antiguo 18-06-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Claro, un campo "stock" que aumente o disminuye, según compres o vendas.
Responder Con Cita
  #3  
Antiguo 18-06-2017
GINMARMENOR GINMARMENOR is offline
Miembro
 
Registrado: feb 2016
Posts: 58
Poder: 9
GINMARMENOR Va por buen camino
Pensaba que era más seguro, que se totalizaran todas las compras de ese articulo, y por otro lado totalizar todas las ventas, y hacer la diferencia, ya que si por ejemplo hay que modificar o anular una compra por algún motivo, hay que tener en cuenta de modificar el campo stock nuevamente por la diferencia.
Responder Con Cita
  #4  
Antiguo 19-06-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tu pregunta ha sido muy genérica, así que la respuesta ha debido de ser muy genérica

Lo normal no es que lo hagas tú "directamente", sino tener un trigger en la base de datos que se encargue de ello cuando compres o vendas.
Responder Con Cita
  #5  
Antiguo 19-06-2017
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.009
Poder: 20
oscarac Va por buen camino
pienso que hay muchas maneras de hacerlo, lo que yo hago es similar a lo que mencionas, tener ingresos y salidas separados luego hacer la operacion matematica teniendo en consideración los saldos del mes anterior (podrias tener un proceso de cierre de mes donde se acumulen los saldos), aunque hacerlo en linea se ve mas profesional, seria cuestion de que evalues de acuerdo a tus necesidades.
saludos
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 20-06-2017
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por GINMARMENOR Ver Mensaje
Pensaba que era más seguro, que se totalizaran todas las compras de ese articulo, y por otro lado totalizar todas las ventas, y hacer la diferencia, ya que si por ejemplo hay que modificar o anular una compra por algún motivo, hay que tener en cuenta de modificar el campo stock nuevamente por la diferencia.
No es una mala idea inicial y a priori parece lo mejor.
El problema es que en la práctica luego esa operación (dependiendo del volumen) se vuelve tremendamente ineficiente, porque en muchos sitios hay que tener el stock de cada artículo y no puedes permitirte calcularlo en el momento.

Luego las cosas se complicas cuando haces inventarios, parciales, totales,...

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Lo normal no es que lo hagas tú "directamente", sino tener un trigger en la base de datos que se encargue de ello cuando compres o vendas.
En la práctica la solcuión que siempre he visto es la que comenta Casimniro. Un campo que se mantiene y se actualiza con todas las operaciones que haces sobre artículos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 20-06-2017
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Se puede manejar en un campo de la tabla donde vayas llevando los movimientos, una vista que se encargue de este calculo o puede ser un valor calculado por una función. Todo depende de la estructura de tu sistema y el manejo que le quieras dar.

Creería que hacer el calculo de stock antes de una venta en caja es consumir recursos innecesariamente. Si el articulo lo tenemos en caja, la venta hay que hacerla aunque (Aveces por fallas en el sistema o de digitación) el calculo de stock diga que no hay existencias.

Si no es una venta en caja, Algo mas como una cotización, este calculo puede servirte para verificar si se debe hacer pedidos a proveedor.

A la final: No hay nada escrito que sea una verdad absoluta de como manejar esto. Todo depende de la estructura de tu sistema y como quieres manejarlo-
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #8  
Antiguo 21-06-2017
GINMARMENOR GINMARMENOR is offline
Miembro
 
Registrado: feb 2016
Posts: 58
Poder: 9
GINMARMENOR Va por buen camino
Gracias por las respuestas, lo cierto es que grandes movimientos por artículo no tengo unos 100 movimientos por año, necesito saber los stock de ese artículo en el momento de consumirlo o de venderlo y cuando supere un mínimo avisarme con un mensaje de que nos queda poco stock de ese artículo que esto último no tiene mayor complicación, pero nada de inventarios parciales.

Lo del Trigger no lo había escuchado nunca, si tenéis un ejemplo os lo agradecería, o buscaré por internet.

Gracias.
Responder Con Cita
  #9  
Antiguo 21-06-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por GINMARMENOR Ver Mensaje
Lo del Trigger no lo había escuchado nunca, si tenéis un ejemplo os lo agradecería, o buscaré por internet.
Utilizar bases de datos sql sin conocer trigger, dominio, stored procedure, etc. es como comprarse un Ferrari para ir a comprar el pan.
Lee este libro, es de lo mejor para usar delphi con bases de datos relacionales.
Responder Con Cita
  #10  
Antiguo 21-06-2017
GINMARMENOR GINMARMENOR is offline
Miembro
 
Registrado: feb 2016
Posts: 58
Poder: 9
GINMARMENOR Va por buen camino
Mira que he leído libros de delphi, mira que he hecho bases relacionales, mira que he hecho listado complejos con Qckip Report con Rave Report, mira que he hecho procedimientos, mira que he hecho funciones, mira que he hecho funciones con parámetros valor y de referencia, mira que trabajo con SQL hago cualquier informe por muy complejo que sea, todo me ha funcionado bien, pero qué casualidad TRIGGER no lo he visto en ningún libro.

Pero también mira que casualidad te vas a una tienda de pacotilla de la coruña y sabe el stockaje de un artículo que hay en la tienda de la pedanía más pequeña de Almeria de ese mismo artículo, creo que mi duda para un Ferrari como es Delphi debería estar resuelto como sumar 2 + 2 para un Universitario, posiblemente no usa delphi.
Responder Con Cita
  #11  
Antiguo 21-06-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por GINMARMENOR Ver Mensaje
Mira que he leído libros de delphi, mira que he hecho bases relacionales, mira que he hecho listado complejos con Qckip Report con Rave Report, mira que he hecho procedimientos, mira que he hecho funciones, mira que he hecho funciones con parámetros valor y de referencia, mira que trabajo con SQL hago cualquier informe por muy complejo que sea, todo me ha funcionado bien, pero qué casualidad TRIGGER no lo he visto en ningún libro.
Será porque no has leido ningún libro sobre el tema

Cita:
Empezado por GINMARMENOR Ver Mensaje
Pero también mira que casualidad te vas a una tienda de pacotilla de la coruña y sabe el stockaje de un artículo que hay en la tienda de la pedanía más pequeña de Almeria de ese mismo artículo, creo que mi duda para un Ferrari como es Delphi debería estar resuelto como sumar 2 + 2 para un Universitario, posiblemente no usa delphi.
Tú mismo , pero esto no tiene nada que ver con delphi, sino con bases de datos (RDBMS).

PD: Y por cierto, el consejo del libro es con toda la buena intención del mundo, y más en este caso, en que Ian Marteens (el autor) trata de forma muy divertida y amena, con ejemplos sencillos, la técnica de trabajar con bases de datos relacionales: interbase, firebird, mysql, postgresql, mssql, oracle, etc.
Responder Con Cita
  #12  
Antiguo 21-06-2017
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Digamos que los triggers no es una cosa básica de SQL, no es lo primero que se lee o se estudia, pero si que es algio fundamental en cuanto haces cosas serias con una Base de Datos (SGBD) algo seria, por eso es extraño que si has trabajado con ellas no hayas oido hablar.

Es algo como las transacciones. No es lo que se lee/estudia el primer día, pero es algo obligatorio para cualquier Base de Datos.

Digamos que justo el caso que planteas (el del stock o inventarios) es uno que se ajusta mucho a usar triggers.

Si asumimos, tal y como se dijo antes, vas a crear un campo en la tabla de artículo que te mantenga actualizado el stock de ese artículo hay 2 posibilidades:

1) Enfocar el prigrama desde Delphi (o desde el programa). Debes asegurarte de que cualquier operación que hagas sobre el artículo actualiza el stock. Significa tener eso en cuenta en varias partes del programa y usar transacciones (si o si). Para evitar por ejemplo, que se guarde una venta y por algún error no se actualice el stock.

2) La segunda opción es enfocarlo desde la Base de Datos. La Base de Datos te da la posibilidad de programar una acción cada vez que haces un INSERT, un DELETE o un UPDATE sobre una tabla. La idea es programar esas operaciones en la tabla de VENTAS y COMPRAS para que actualizen el stock. De esta forma desde cualquier lugar donde se modifiquen las ventas (sea desde el programa, desde un Stored procedure, desde una importacion,...) se actualizarán los artículos.

La idea de los triggers es así de sencilla, tal vez sea un poco más complicado programarlos, pero si has trabajado con Stored Procedures te resultará parecido.

Si miras en la wiki, verás que la explicación es sencilla, es más acabo de ver que el ejemplo que viene en la WIKI es justo de actualizar el stock. ;-)
https://es.wikipedia.org/wiki/Trigger_(base_de_datos)

__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 21-06-2017 a las 10:03:46.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Totalizar valores rruffino Impresión 2 06-10-2013 18:04:01
Problemas al totalizar en excel JoAnCa Servers 2 22-08-2008 21:12:05
Totalizar sobre una base en actualizacion skaiser Firebird e Interbase 2 04-11-2007 15:39:54
Report Manager - Totalizar campos hperez Impresión 0 23-07-2007 20:00:46
Totalizar sin anidar consultas? Miguel Galarza Firebird e Interbase 0 10-11-2006 23:37:46


La franja horaria es GMT +2. Ahora son las 21:20:02.


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