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

sumar cantidad actual base de datos

Estas en el tema de sumar cantidad actual base de datos en el foro de Visual Basic clásico en Foros del Web. hola, necesito de nuevo su ayuda, me podrian dar una idea de como hacerle para sumar campos numericos pero solo de la fecha actual, en ...
  #1 (permalink)  
Antiguo 27/05/2008, 15:30
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
sumar cantidad actual base de datos

hola, necesito de nuevo su ayuda, me podrian dar una idea de como hacerle para sumar campos numericos pero solo de la fecha actual, en la misma tabla se guardan muchos datos cada uno con su fecha, pero quiero sumar datos especificos, por ejemplo, sumar la cantidad total solo de los refrescos del pedido de hoy sabiendo que se manejan varios refrescos, pero todos los refrescos manejas la misma clave o id y el resultado guardarlo en otra tabla, algun tip?
  #2 (permalink)  
Antiguo 28/05/2008, 01:05
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 6 meses
Puntos: 13
Respuesta: sumar cantidad actual base de datos

Hola

Puede ser algo así (para una BD Access):

Código:
SELECT SUM(cantidad) INTO TablaNueva FROM Tabla1 WHERE fecha=date() AND clave LIKE '12*'
.
Es solo una idea, con SUM puedes realizar la suma de un campo que quieras y con INTO pasar el resultado de la Select a otra Tabla. En el Where pones las condiciones de fecha y de la clave (en mi ejemplo que la clave comience por 12)

--Saludos--
  #3 (permalink)  
Antiguo 28/05/2008, 09:38
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: sumar cantidad actual base de datos

gracias por tu respuesta, solo algo mas, por ejemplo la suma de todos los productos la quiero en otra tabla donde el campo se llame por ejemplo: REFRESCOS de 600 ml, y que ahi guarde el total de todos los refrescos de 600 ml de la otra tabla del dia, por ejemplo.

tabla subproductos

producto .......vuelta1.....vuelta 2....... vuelta 3 ...... total
refresco1 ..........12.............21................12..... ...........45
refresco2 ...........1.............. 2 ............... 2......... ..... 5


tabla pedido

producto .......vuelta1.....vuelta 2....... vuelta 3 ...... total
refresco 600ml ....13.............23................14........... ...50


asi mas o menos.

gracias

Última edición por william_085; 28/05/2008 a las 10:37
  #4 (permalink)  
Antiguo 29/05/2008, 01:05
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 6 meses
Puntos: 13
Respuesta: sumar cantidad actual base de datos

Hola

No se me ocurre como puede hacerse en una sola select, pero se podría hacer en tres pasos. Primero creas una nueva Tabla von la instrucción CREATE TABLE, luego realizas una insert con los datos de las sumas y finalmente realizas un UPDATE para añadirle el producto. Luego si lo deseas puedes realizar un DROP TABLE para eliminar la tabla (si es una tabla temporal).

Si trabajas en access puedes crear las consultas de una en una y luego unirlas con una Macro.

El código sería algo así como:

Código:
'Para crear Tabla
CREATE TABLE Pedido(Producto text, vuelta1 integer, vuelta2 integer, vuelta3 integer, total integer)

'Para insertar las sumas
INSERT INTO Pedido ( vuelta1, vuelta2, vuelta3, total )
SELECT Sum(vuelta1), Sum(vuelta2), Sum(vuelta3), Sum(Total)
FROM subproductos
WHERE (((subproductos.Producto) Like 'refresco*'));

'Para meter el producto
UPDATE pedido SET producto = 'refresco 600ml';

'Si quieres borrar la Tabla
drop table pedido
Puede ser que algún otro usuario pueda realizar los tres pasos en uno solo, pero a mi no se me ocurre.

--Saludos--
  #5 (permalink)  
Antiguo 29/05/2008, 09:36
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: sumar cantidad actual base de datos

y para ejecutar eso desde un clic lo hago con un recordset o con un objeto connection


db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\PEDIDOS\pedidos\Imprimir\pedidos\sucursal2.mdb " & ";Persist Security Info=False"
actual = Date

rs.Open "select pedido,vuelta1,vuelta2,vuelta3 from pedidos where fecha = #" & Format(actual, "mm/dd/yyyy") & "# ", db, adOpenStatic, adLockOptimistic



??

gracias
  #6 (permalink)  
Antiguo 30/05/2008, 03:48
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 6 meses
Puntos: 13
Respuesta: sumar cantidad actual base de datos

Hola

Las clausulas select las haces desde un RecordSet xq devuelve un resultado, en el caso de CREATE TABLE, INSERT o UPDATE no devuelve ningún resultado que puedes guardar en el RecordSet, sino que modifica directamente la BD. Por ello para ejecutarlos tendrías que poner db.Execute "..............". P.e.:

Código:
bd.Execute "INSERT INTO Pedido ( vuelta1, vuelta2, vuelta3, total ) SELECT Sum(vuelta1), Sum(vuelta2), Sum(vuelta3), Sum(Total) FROM subproductos WHERE (((subproductos.Producto) Like 'refresco*'))"
.
--Saludos--

P.D. Para indicar la ruta de la bd te recomiendo que mires la opción app.path en lugar de utilizar la ruta completa, ya que si quieres instalar el programa en otro equipo pueda ser que no tenga las mismas rutas.
  #7 (permalink)  
Antiguo 30/05/2008, 09:58
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: sumar cantidad actual base de datos

como ejecuto el UPDATE pedidos SET pedido = 'REFRESCO DE 600 ml'
  #8 (permalink)  
Antiguo 30/05/2008, 12:20
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: sumar cantidad actual base de datos

Cita:
Iniciado por william_085 Ver Mensaje
como ejecuto el UPDATE pedidos SET pedido = 'REFRESCO DE 600 ml'
Según lo que te comentó el compañero Insomnia debería ser:
Código:
 
db.Execute "UPDATE pedidos SET pedido = 'REFRESCO DE 600 ml'"
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 30/05/2008, 15:05
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: sumar cantidad actual base de datos

lo hise asi pero no me guarda nada y no me marca error
  #10 (permalink)  
Antiguo 30/05/2008, 15:42
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: sumar cantidad actual base de datos

Según lo que yo entendí de lo que publicó el compañero Insomnia deberías colocar:
Código:
 
SELECT Sum(vuelta1), Sum(vuelta2), Sum(vuelta3), Sum(Total) INTO Pedido ( vuelta1, vuelta2, vuelta3, total ) FROM subproductos  
WHERE (subproductos.ID=1) AND (subproductos.Fecha=Date());
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 02/06/2008, 04:42
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 6 meses
Puntos: 13
Respuesta: sumar cantidad actual base de datos

Hola

En teoría debería quedar de la siguiente forma:

Código:
'Para crear Tabla
bd.execute "CREATE TABLE Pedido(Producto text, vuelta1 integer, vuelta2 integer, vuelta3 integer, total integer)"

'Para insertar las sumas
bd.execute "INSERT INTO Pedido ( vuelta1, vuelta2, vuelta3, total )
SELECT Sum(vuelta1), Sum(vuelta2), Sum(vuelta3), Sum(Total)
FROM subproductos
WHERE (((subproductos.Producto) Like 'refresco*'))"

'Para meter el producto
bd.execute "UPDATE pedido SET producto = 'refresco 600ml'"
De esta forma creo que tendría que funcionar, al realizar las tres instrucciones a la vez puede que sea un problema de tiempo, es decir, que intente realizar el update antes de terminar con el insert, en este caso prueba a poner unos DoEvents después de cada línea.

--Saludos--
  #12 (permalink)  
Antiguo 02/06/2008, 10:13
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: sumar cantidad actual base de datos

lo tengo de esta forma:

db.Execute "INSERT INTO Pedidos ( vuelta1, vuelta2, vuelta3, total)SELECT Sum(vuelta1), Sum(vuelta2), Sum(vuelta3), Sum(Total) From subproductos WHERE (((subproductos.id_subproducto) Like 'R600*'))"


'Para meter el producto
db.Execute "UPDATE pedidos SET pedido = 'REFRESCO DE 600ml'"

pero solo me guarda lo de 'REFRESCO DE 600ml'"

los demas campos aparecen vacios.

no se que este pasando, por ejemplo cada refresco tiene como ID R600 y quiero que de la ID se base para hacer la suma, pero que solo se haga la suma de la fecha actual, no se que cosa este haciendo mal.

tabla subproductos

id_subproducto.....producto .......vuelta1.....vuelta 2....... vuelta 3 ...... total
R600.....................refresco1 ..........12.............21................12..... ...........45
R600.....................refresco2 ...........1.............. 2 ............... 2......... ..... 5


tabla pedido

clave.....producto .......vuelta1.....vuelta 2....... vuelta 3 ...... total
R600.....refresco 600ml ....13.............23................14........... ...50
  #13 (permalink)  
Antiguo 03/06/2008, 15:11
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: sumar cantidad actual base de datos

hola, lo hise de esta forma:

db.Execute "INSERT INTO PEDIDOS (clave,sucursal,pedido,vuelta1,vuelta2,vuelta3,fec ha,total) SELECT id_subproducto,sucursal, producto,Sum(vuelta1) as sumita1, Sum(vuelta2) as sumita2, Sum(vuelta3) as sumita3, fecha, Sum(total) as totalito FROM subproductos WHERE (subproductos.id_subproducto Like 'R600') and (subproductos.fecha Between datevalue('" & hoy & "') and datevalue('" & hoy & "')) Group by fecha,id_subproducto,sucursal, producto"

me suma bien y todo, el detalle es que solamente me suma bien cuando el producto se llama igual y quiero que se guie del la clave o id y que me la guarde en la otra tabla como refresco de 600 ml

asi como este ejemplo:

tabla subproductos

id_subproducto.....producto .......vuelta1.....vuelta 2....... vuelta 3 ...... total
R600.....................refresco1 ..........12.............21................12..... ...........45
R600.....................refresco2 ...........1.............. 2 ............... 2......... ..... 5


tabla pedido

clave.....producto .......vuelta1.....vuelta 2....... vuelta 3 ...... total
R600.....refresco 600ml ....13.............23................14........... ...50

me podrian hechar una mano por favor?
  #14 (permalink)  
Antiguo 04/06/2008, 08:51
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: sumar cantidad actual base de datos

quedo asi al ultimo

db.Execute "INSERT INTO PEDIDOS (clave,sucursal,vuelta1,vuelta2,vuelta3,fecha,tota l) SELECT id_subproducto,sucursal,Sum(vuelta1) as sumita1, Sum(vuelta2) as sumita2, Sum(vuelta3) as sumita3, fecha, Sum(total) as totalito FROM subproductos WHERE (subproductos.id_subproducto Like 'R600') and (subproductos.fecha Between datevalue('" & hoy & "') and datevalue('" & hoy & "')) Group by fecha,id_subproducto,sucursal"

db.Execute "UPDATE pedidos SET pedido = 'REFRESCO DE 600ml' WHERE clave Like 'R600'"

pero ahora como le hago para saber si ya existe, y si ya existe que solo me lo modifique, pero solo los de la fecha actual.

me urge gracias
  #15 (permalink)  
Antiguo 04/06/2008, 09:07
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 6 meses
Puntos: 13
Respuesta: sumar cantidad actual base de datos

Hola

Todo depende de si quieres guardar mas de un registro en la tabla pedido, si solo quieres guardar un registro cada vez y utilizar esa tabla como tabla temporal, lo que puedes hacer es antes de nada eliminar la tabla pedidos existente (DROP) y luego volver a crear, insertar y modificar.

De esta forma primero eliminaría la tabla existente y luego crearía otra nueva tabla con un único registro.

--Saludos--
  #16 (permalink)  
Antiguo 04/06/2008, 09:42
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: sumar cantidad actual base de datos

la tabla se crea antes, en esa tabla se van aguardar todos los pedidos en general, pero de algunas cosas solo se van a simplificar, como en el ejemplo anterior de los refrescos, si piden 1000 refrescos, en la tabla pedidos va a aparecer r600 refrescos de 600 y la cantidad total de los 1000 refrescos.

es que si agrego refrescos nuevos del dia actual y ya tengo un registro de este dia, me crea otro registro igual, me hace la suma y todo pero no quiero tener 2 registos de r600 refrescos de 600, solo 1.

comprobar si ya existe y si ya existe que solo modifique y si no, que cree el registro.


por favor a ver si me pueden hechar la mano
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 01:50.