Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Modificando total de acuerdo a existencia (https://www.clubdelphi.com/foros/showthread.php?t=43114)

karlaoax 02-05-2007 19:38:00

Modificando total de acuerdo a existencia
 
La semana pasada abri un hilo para ver como actualizar existencias en una Base:
AUTOS con los siguientes campos: Codigo,Cantidad,color,agregar,costo_uno,total son tipo FLOAT

Le agregue los ultimos 2 campo en rojo.

Ahora de acuerdo a esto, cuando yo actualizo mi cantidad necesito actualizar tambien el total (Es el $ total almacenado).

Componentes:
1 Myquery
4 DBedit's (costo_uno, total)
DBedit3 (es mi CANTIDAD)
txtagregar (es la cantidad a agregar)
DBcosto_uno (Es el $ de un solo auto)
DBtotal (es lo que debe ser el $ de multiplicar DBcosto_uno*CANTIDAD)
1 edit (txtagregar)

Mi codigo en MyQuery es:
UPDATE autos
SET
cantidad = :cantidad,
total=:total // Cantidad en a modificar $
AS agregar
WHERE
codigo = :codigo

Mi boton:
MyTable1.Edit;
QueryUpdate.Close;
QueryUpdate.SQL.Clear;
QueryUpdate.SQL.Text:='UPDATE autos SET stock= '+QuotedStr(inttostr(strtoint(DBedit3.Text)+strtoint(txtagregar.Text)))+' WHERE codigo='+txtcodigo2.Text;
QueryUpdate.Execute;
MyTable1.Post;


Como puedo lograr mi cometido, ya modifique mi codigo, pero no me queda bien.

Estoy implementando lo siguiente, ya hago mis operaciones de DBcosto_uno*CANTIDAD y trato de hacer lo siguiente:
MyTable1.FieldByName('total').asfloat:=currtostr(DBtotal.text); // Lo "guardo" de esta forma

Mi forma de implementarlo es correcto, si muestra el total, yo imagino que debe de guardar el nuevo TOTAL, pero no funciona.

Gracias.
Karla

karlaoax 02-05-2007 20:35:36

Problema solucionado
 
ya solucione el problema :cool:

:p
Karla

roman 02-05-2007 21:15:05

Ajá, y ¿por qué no nos comentas cómo lo hiciste? Así le ahorras trabajo a quien en el futuro tenga una duda similar.

// Saludos

karlaoax 02-05-2007 21:31:53

Forma muy simple
 
Puse otro query con lo siguiente:

UPDATE autos
SET
cantidad = :cantidad
total = :total
WHERE
codigo = :codigo

y en mi boton:
QueryUpdate.SQL.Text:='UPDATE autos SET total= '+QuotedStr(currtostr(strtoint(DBedit3.Text)*strtocurr(DBcosto_uno.Text)))+' WHERE codigo='+txtcodigo2.Text;

Ahora lo estoy tratando de implementar para que lo ejecute en una sola Query, pero sigo haciendo pruebas, he aqui los avances, malos pero los muestro esperando sugerencias, cuando me quede lo posteo nuevamente

QueryUpdate.SQL.Text:='UPDATE autos SET cantidad,total= '+QuotedStr(inttostr(strtoint(DBedit3.Text)+strtoint(txtagregar.Text)))+'*'+QuotedStr(currtostr(strt oint(DBedit3.Text)*strtocurr(DBcosto_uno.Text)))+' WHERE codigo='+txtcodigo2.Text;

Sigue en modo de pruebas, si alguien me ayuda se lo agradecere

Karla

roman 02-05-2007 22:47:31

Hola,

Si nos quedamos con esto:

Cita:

Empezado por karlaoax
cuando yo actualizo mi cantidad necesito actualizar tambien el total (Es el $ total almacenado).

y suponiendo que

Código:

total = costo_uno * cantidad
yo preguntaria, para empezar, ¿por qué guardar el campo total en la tabla? Es un campo calculado y su valor siempre puedes deducirlo de los otros, así que, a primera vista, no veo necesidad de mantenerlo en la base.

// Saludos

karlaoax 02-05-2007 23:06:46

Buen punto
 
Es lo que estaba pensando, y solo cuando mande a impresar mi tabla, usare la clausula SUM para sumar los valores que correspondan al WHERE.

Gracias Roman :D


La franja horaria es GMT +2. Ahora son las 17:33:58.

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