Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   pedidos (https://www.clubdelphi.com/foros/showthread.php?t=71921)

sergioperez 18-01-2011 21:17:20

pedidos
 
hola buenas tardes tengo un problema a la hora de hacer un pedido que esta dentro de una tabla como sumo los totales de los productos iguales que me realizan los empleados la tabla esta conformado por los siguientes campos
CLASIFICACION
NOMBRE
CANTIDADSOLICITADA
CAUTORISADA
FECHA

de antemano gracias por su ayuda

Aleca 18-01-2011 21:24:58

esto lo hacia para sumar los items de remitos.
usando un TQuery

Código SQL [-]
Select SUM(ItemRemito.VALOR_ITEM) as ValorTotal From ItemRemito
Where ItemRemito.ID_REMITO = :ID_REMITO

Saludos :)

sergioperez 20-01-2011 20:41:08

hice lo del codigo SQL.(con otra tabla). pero me marca este error:

Invaled use of keyword.Token:
Line number:1

este es el codigo SQL:

Código SQL [-]
QUERY3.SQL.Clear;
QUERY3.SQL.Add('SELECT ingredientesdiarios.ingredientes, SUM(ingredientesdiarios.Cantidad)as total FROM ingredientsdiarios.db WHERE ingredientesdiarios:='+QuotedStr('1017012011'));
QUERY3.SQL.Add(' AND ingredientesdiarios.Nombre:=Nombre');
QUERY3.Active:=True;
Query3.Open;

y no se que significa ni como corregirlo

Aleca 20-01-2011 21:03:40

probá sacando ingredientesdiarios.ingredientes deja soló Select SUM()

Caral 20-01-2011 21:08:14

Hola
Código Delphi [-]
QUERY3.SQL.Clear;
QUERY3.SQL.Text:= ' SELECT ingredientes, SUM(Cantidad)as total '+
                  ' FROM ingredientesdiarios WHERE CAUTORISADA:= :Num'+
                  ' AND Nombre:= :nom ';
                  ' Goup By ingredientes, Sum(Cantidad)';
QUERY3.Params[0].Value := QuotedStr('1017012011');
QUERY3.Params[1].Value := QuotedStr('Nombre');
QUERY3.Active:=True;
Revisa la clausula where.
Tal vez el group by sea innecesario, no lo se.
Usa parametros.
No es necesaria activar la tabla y luego abrirla, es lo mismo, dos veces.
Saludos

sergioperez 21-01-2011 01:08:49

aver le voy a volver a reformular la pregunta es que ya me revolvi mire el problema es que tengo una tabla en donde almaceno todos los pedidos que me realizan los empleado de una empresa los productos estan clasificacos ahora el problema es a la hora de sumar los productos iguales por que los que no lo son ya se como les pongo la tabla

clasificacion nombre cantidadsolicitada usuario
material de aseo fab 15 sergio
material de aseo fab 17 grisel
material de cosina sal 3 sergio

me debe salir
material de ase fab 32
material de cosina 3
este codigo utilio pero no me sale

Código Delphi [-]
//QUERY1.SQL.Add('SELECT NOMBRE,CANTIDADSOLICITADA , SUM(Cantidad) astotal FROM AUXILIARINV.db WHERE NOMBRE:=NOMBRE AND CLASIFICACION ='+QuotedStr(COMBOBOX1.Text) );

Caral 21-01-2011 01:20:30

Hola
No se que bd usas pero casi todas aceptan DISTINCT.
Si no colocas esto sumara todos los datos del campo cantidad.
Por otro lado no entiendo el uso de:
Código SQL [-]
FROM AUXILIARINV.db
No deberia ser ?:
Código SQL [-]
FROM AUXILIARINV
Ya que el query esta conectado a la bd y tabla no creo que sea necesario esto.
Entonces:
Si quieres DISTINGUIR entre un tipo de dato se usa lo que dije, asi se tendra que definir si es por nombre y otro dato.
Saludos

sergioperez 21-01-2011 01:35:30

uso tabla paradox el otro es le nombre de la base de datos distinc se supone que es para buscar nombres diferentes eso utlisiso para sacar los nombres que no se parecen pero yo quiero sumar las cantidades de los productos que se llamen iguales en una tabla ya que cada empleado puede pedirlo para su uso.

Caral 21-01-2011 01:40:34

Hola
Intenta esto y dime que error da:
Código Delphi [-]
QUERY1.SQL.Text:= 'SELECT NOMBRE,CANTIDADSOLICITADA , SUM(Cantidad) as total '+
                  'FROM AUXILIARINV WHERE NOMBRE = NOMBRE AND CLASIFICACION = '+QuotedStr(COMBOBOX1.Text);
QUERY1.Open;
Tambien seria bueno que nos digeras que es NOMBRE ?, de donde lo sacas?.
Especificamente aqui:
Código SQL [-]
WHERE NOMBRE:= NOMBRE
Se que NOMBRE (el primero es el nombre del campo), pero el segundo que es?
Saludos

sergioperez 21-01-2011 02:00:50

nombre es el campo de mi tabla y quiero que los datos que son iguales que esos campo me sume sus cantidades.

por ejmeplo

clafificacion nombre de producto cantidadsolicitada
material de aseo fab 10
material de cosina sal 1
material de aseo fab 4
material de cosina piemienta 4
material de curacion venda 5
material de aseo fabuloso 1
material de aseo jabon 1

etc

en el combobox selecciono los diferentes tipos de clasificacion que cada uno de ellos tienen productos
si selecciono material de aseo me debe sumar los parecidos y lon que no melos envia en mi tabla pedidos mensuales
debe quedar asi

clasificacion nombre cantidad
material de aseo fab 14
material de aseo fabuloso 1
material de aseo jabon 1

espero me entiendan

Caral 21-01-2011 02:06:19

Hola
NO puedes decirle a un sql (segun se) que te de el dato de un campo sin ni siquiera abrir la tabla.
Osea, no se puede decir:
Código SQL [-]
WHERE NOMBRE = NOMBRE
Ya que NOMBRE (el segundo) no existirá hasta que se abra la tabla, osea, de donde saca el dato?.
Saludos

sergioperez 21-01-2011 02:07:13

hice lo que me dijo usted y me salio el siguiente error
gruop by is requered when both agrregate nad no agrregate fields are used in resultado set

Caral 21-01-2011 02:08:20

Hola
Entonces no estoy equivocado.
Saludos

sergioperez 21-01-2011 02:11:14

y como lo soluciono para que me aga la suma de las cantidades de los nombres iguales para realisar mi pedido mensual

Caral 21-01-2011 02:15:41

Hola
Como dije:
1- El dato NOMBRE tiene que estar activo de lo contrario no lo reconocera.
2- Hace falta colocar el group By en el sql (como hice en el ejemplo), ya que antepones dos campos antes del campo a sumar y el sql no sabe cual campo quieres calcular.
Saludos

sergioperez 21-01-2011 02:46:07

primero como activo el nombre segundo ya puse el group by y me dice que no reconoce el by

quiero que me busque los nosmbres iguales y cuando los busque me los sume y me lo envie a otra tabla que se llama pedido mensual y si no esta igual que tambien me lo envie a la tabla
elcual consta de los siguientes campos y que quedaria llenado de la siguiente manera

clasificacion nombre cantidadtototal
material de aseo fab 14
material de aseo fabuloso 1
material de aseo jabon 1
material de cocina sal 1
material de cocina pimienta 4

me explico ayudenme es mi trabajo final

Caral 21-01-2011 02:50:59

Hola
Como comprenderas es muy dificil saber como ayudar sin tener todo a mano, lo que tratamos de hacer es suponer y dar ideas, dificilmente soluciones completas.
Empecemos por un dato: NOMBRE.
Este dato lo necesitamos y que cumpla ciertas condiciones, entonces, colocamos un query adicional y hacemos una consulta que nos traiga ese dato.
Una vez que tengamos ese datos, entonces en la consulata de suma lo indicamos.
Por otro lado:
Group By es caracteristico de sql, no se en donde esta el error?.
Espero que por lo menos te des una idea.
Saludos

sergioperez 21-01-2011 02:58:30

Que Necesitas Para Que Me Ayudes Es Que No Se Me Occurren Ideas Para Solucionar El Problema Que Tengo Porfa

Caral 21-01-2011 03:11:06

Hola
Si quieres enviame un mensaje privado y te doy mi correo para que me envies el programa completo con la BD y poder ver si lo entiendo.
Ten en cuenta que mañana es viernes y tengo algo de trabajo, pero si puedo te ayudo con gusto.
Tendre que ver que hago ya que nunca he trabajado con paradox, empezare por aprender.
Saludos

sergioperez 21-01-2011 03:54:53

como te envio un mensaje prinado o te mando mi correo mejor


La franja horaria es GMT +2. Ahora son las 15:10:11.

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