Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como actualizar registros!!! (https://www.clubdelphi.com/foros/showthread.php?t=75528)

negrokau 31-08-2011 00:06:44

Como actualizar registros!!!
 
hola a todos, y gracias por su tiempo, tengoun inconveniente en un formulario de facturacion, en donde voy cargando mercaderias de la tabla stock, funciona perfectamente, lo que necesito es que me descuente del stock la cantidad de las mercaderias que fui cargando en la tabla de facturacion,tengo una ejemplo pero solo me descuenta el ultimo registro cargado
Este es mi boton GUARDAR:
Código Delphi [-]
procedure TF_FACTURACION.GUARDARClick(Sender: TObject);
VAR
CANT: INTEGER;
begin
DM.Q_FACTURACION.Post;
DM.Transaction.CommitRetaining;
//////actualiza cantidad////////////////
DM.CONSULTA.CLOSE;
DM.CONSULTA.SQL.Clear;
DM.CONSULTA.SQL.Add('SELECT * FROM DETALLE_FACTURAS WHERE COD_FACT='+#39+COD_FACT.Text+#39' AND CODIGO='+#39+CODIGO2.Text+#39);
DM.CONSULTA.Open;

CANT:=DM.CONSULTA.FieldValues['CANTIDAD'];
DM.CONSULTA.CLOSE;
DM.CONSULTA.SQL.Clear;
DM.CONSULTA.SQL.Add('UPDATE STOCK SET CANTIDAD=CANTIDAD-'+inttostr(CANT)+' WHERE COD_STOCK='+#39+CODIGO2.text+#39);
DM.CONSULTA.ExecSQL;

end;
Como puedo hacer para que descuente todos los registros que cargue?
si no me explique bien, diganmepor favor, estoy aprendiendo todavia,y me cuesta mucho expresarme... gracias por su tiempo....

Casimiro Noteví 31-08-2011 00:15:21

Por favor, negrokau, tengo que recomendarte en cada mensaje que escribes que leas nuestra guía de estilo, en este caso, como casi siempre, no has puesto un título descriptivo a la pregunta. Está bien que se te pase alguna vez, pero es que lo haces siempre, ya pienso que lo haces a propósito.

negrokau 31-08-2011 00:20:05

Disculpa,aque te referis con título descriptivo?

negrokau 31-08-2011 01:06:06

disculpen, la verdad no lo hago a proposito, lo volvere a hacer de nuevo en un nuevo hilo, disculpen las molestias...

negrokau 31-08-2011 01:37:27

Como actualizar registros que tengan la misma clave!!
 
hola a todos, y gracias por su tiempo, tengo un inconveniente en un formulario de facturacion, en donde voy cargando registros de la tabla stock y va agregando en un dbgrid, lo que necesito es que me actualize en la tabla stock los registro que fui cargando en la tabla de facturacion, tengo varios Registros con la misma Clave, como actualizo todos los que tengan La misma Clave, tengo una ejemplo pero solo me descuenta el ultimo registro cargado
Este es mi boton GUARDAR:
Código Delphi [-]
procedure TF_FACTURACION.GUARDARClick(Sender: TObject); VAR CANT: INTEGER; begin DM.Q_FACTURACION.Post; DM.Transaction.CommitRetaining; //////actualiza cantidad//////////////// DM.CONSULTA.CLOSE; DM.CONSULTA.SQL.Clear; DM.CONSULTA.SQL.Add('SELECT * FROM DETALLE_FACTURAS WHERE COD_FACT='+#39+COD_FACT.Text+#39' AND CODIGO='+#39+CODIGO2.Text+#39); DM.CONSULTA.Open;  CANT:=DM.CONSULTA.FieldValues['CANTIDAD']; DM.CONSULTA.CLOSE; DM.CONSULTA.SQL.Clear; DM.CONSULTA.SQL.Add('UPDATE STOCK SET CANTIDAD=CANTIDAD-'+inttostr(CANT)+' WHERE COD_STOCK='+#39+CODIGO2.text+#39); DM.CONSULTA.ExecSQL;  end;

Este tema ya lo agregue pero como me dijeron que no tenia un titulo descriptivo lo volvi a alzar, espero que ahora si este bien, y le pido que el hilo anterior lo eliminen, muchas gracias

negrokau 31-08-2011 01:41:07

hola a todos, y gracias por su tiempo, tengo un inconveniente en un formulario de facturacion, en donde voy cargando registros de la tabla stock y va agregando en un dbgrid, lo que necesito es que me actualize en la tabla stock los registro que fui cargando en la tabla de facturacion, tengo varios Registros con la misma Clave, como actualizo todos los que tengan La misma Clave, tengo una ejemplo pero solo me descuenta el ultimo registro cargado
Este es mi boton GUARDAR:

Código Delphi [-]
procedure TF_FACTURACION.GUARDARClick(Sender: TObject);
VAR
CANT: INTEGER;
begin
DM.Q_FACTURACION.Post;
DM.Transaction.CommitRetaining;
//////actualiza cantidad////////////////
DM.CONSULTA.CLOSE;
DM.CONSULTA.SQL.Clear;
DM.CONSULTA.SQL.Add('SELECT * FROM DETALLE_FACTURAS WHERE COD_FACT='+#39+COD_FACT.Text+#39' AND CODIGO='+#39+CODIGO2.Text+#39);
DM.CONSULTA.Open;

CANT:=DM.CONSULTA.FieldValues['CANTIDAD'];
DM.CONSULTA.CLOSE;
DM.CONSULTA.SQL.Clear;
DM.CONSULTA.SQL.Add('UPDATE STOCK SET CANTIDAD=CANTIDAD-'+inttostr(CANT)+' WHERE COD_STOCK='+#39+CODIGO2.text+#39);
DM.CONSULTA.ExecSQL;

end;
Este tema ya lo agregue pero como me dijeron que no tenia un titulo descriptivo lo volvi a alzar, espero que ahora si este bien, y le pido que el hilo anterior lo eliminen, muchas gracias

oscarac 31-08-2011 04:27:35

que significa.... registros con la misma clave

amigo... no es el primer post que colocas... y creo que tampoco es la primera vez que te dicen esto:
te agradecería que fueras mas especifico, que para hacernos entender si es posible coloques gráficos o un dibujo de ejemplo, por mas que trato de interpretar lo que dices, no lo comprendo

duilioisola 31-08-2011 08:19:08

Código SQL [-]
UPDATE STOCK SET CANTIDAD=CANTIDAD- ?CANT WHERE COD_STOCK=?CODIGO
Esto te modifica todos los registros cuyo COD_STOCK=?CODIGO.
En este caso resta ?CANT a la CANTIDAD.

¿Qué es lo que quieres? El segundo SQL que publicas hace lo que pides...

Casimiro Noteví 31-08-2011 09:42:31

Cita:

Empezado por negrokau (Mensaje 410480)
disculpen, la verdad no lo hago a proposito, lo volvere a hacer de nuevo en un nuevo hilo, disculpen las molestias...

No, no, por favor, otro hilo no es necesario.

Cita:

Empezado por negrokau (Mensaje 410478)
Disculpa,aque te referis con título descriptivo?

Pero amigo, ¿has leído la guía de estilo alguna vez de las veces que te he recomendado que lo hagas?

Casimiro Noteví 31-08-2011 09:48:34

Un título descriptivo es el que resumen lo que se pregunta en el mensaje.

Si en el mensaje dices: ¿Cómo puedo cambiar de color las líneas de un dbgrid?.
Entonces en el título debes poner algo así como: Cómo cambiar color en líneas dbgrid.
Pero tu título (inadecuado) sería, por ejemplo: dbgrid

En este caso, si lo que preguntas es: lo que necesito es que me descuente del stock la cantidad de las mercaderias.
Pues un título descriptivo puede ser: Descontar cantidad de stock en tabla de mercaderías.
Pero un título inadecuado que no dice de qué trata el mensaje/pregunta es: Como actualizar registros!!!

Además que con '!!!' no estás preguntando nada, para preguntar es el signo de interrogación '¿?'.

Son sólo ejemplos, espero que lo entiendas, aunque está mucho mejor explicado en nuestra guía de estilo y no te llevará ni 3 minutos leerla.


p.d.: He unido los dos hilos porque es lo mismo.

defcon1_es 31-08-2011 10:17:31

¿No deberías hacer un bucle?
 
Te actualiza sólo 1 registro porque no recorres la query que trae los datos.
Yo usaría 2 querys, 1 para recorrer la tabla y otra para actualizar los datos.
La primera tendría como código SQL "fijo" lo siguiente:
Código SQL [-]
SELECT CANTIDAD FROM DETALLE_FACTURAS WHERE (COD_FACT=:ParCOD_FACT) AND (CODIGO = :ParCODIGO)
NOTA: Si solamente te hace falta el campo CANTIDAD, no hagas un SELECT *
y la segunda tendría este código
Código SQL [-]
UPDATE STOCK SET CANTIDAD=CANTIDAD-:ParCANTIDAD WHERE (COD_STOCK= :ParCODIGO)

Y en delphi
Código Delphi [-]
procedure TF_FACTURACION.GUARDARClick(Sender: TObject);
begin
  DM.Q_FACTURACION.Post;
  DM.Transaction.CommitRetaining;
//////actualiza cantidad////////////////
  DM.CONSULTA.CLOSE;
  DM.CONSULTA.ParamByName('ParCOD_FACT').AsString := COD_FACT.Text;
  DM.CONSULTA.ParamByName('ParCODIGO').AsString := CODIGO2.Text;
  DM.CONSULTA.Open;
  while not(DM.CONSULTA.Eof)do
  begin
    DM.CONSULTA2.CLOSE; 
    DM.CONSULTA2.ParamByName('ParCODIGO').AsString := CODIGO2.Text;
    DM.CONSULTA2.ParamByName('ParCANTIDAD').AsFloat := DM.CONSULTA.FieldByName('CANTIDAD').AsFloat;
    DM.CONSULTA2.ExecSQL;
    DM.CONSULTA.Next;
  end;
end;

negrokau 07-09-2011 22:22:26

gracias capo, me funciono de maravilla defcon1_es, gracias gracias....

oscarac 07-09-2011 22:33:04

Casimiro creo que Defcon1_es tiene una bola de cristal :D:D:D

negrokau 07-09-2011 22:35:00

:d:d:d:d:d:d:d:d

Casimiro Noteví 07-09-2011 22:56:43

Cita:

Empezado por oscarac (Mensaje 411180)
Casimiro creo que Defcon1_es tiene una bola de cristal :D:D:D

¡¡¡Qué callado se lo tenía!!! :eek::)

oscarac 07-09-2011 23:00:32

Cita:

Empezado por Casimiro Notevi (Mensaje 411184)
¡¡¡Qué callado se lo tenía!!! :eek::)

y asi como jugando ya llegue a 1k
vaya... el tiempo si que pasa;)

Casimiro Noteví 07-09-2011 23:04:20

Cita:

Empezado por oscarac (Mensaje 411188)
y asi como jugando ya llegue a 1k
vaya... el tiempo si que pasa;)


Jejeje... mira aquí. :)

negrokau 07-09-2011 23:12:03

yo de vuelta, me anduvo una vez pero ahora me salta este error:
CANNOT PERFORM THIS OPERATION ON A CLOSED DATASET
ya le di muchas vueltas y no encuentro el problema

oscarac 07-09-2011 23:13:21

eso pasa cuando la base de datos o la tabla esta cerrada

negrokau 07-09-2011 23:24:15

1 Archivos Adjunto(s)
aca mi salta el error


La franja horaria es GMT +2. Ahora son las 04:14:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi