Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-08-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.670
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
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.

Última edición por Casimiro Noteví fecha: 31-08-2011 a las 09:56:28.
Responder Con Cita
  #2  
Antiguo 31-08-2011
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 23
defcon1_es Va por buen camino
¿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;
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #3  
Antiguo 07-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 16
negrokau Va por buen camino
Talking

gracias capo, me funciono de maravilla defcon1_es, gracias gracias....
Responder Con Cita
  #4  
Antiguo 07-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 22
oscarac Va por buen camino
Casimiro creo que Defcon1_es tiene una bola de cristal
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 07-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 16
negrokau Va por buen camino
Talking

:d:d:d:d:d:d:d:d
Responder Con Cita
  #6  
Antiguo 07-09-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.670
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por oscarac Ver Mensaje
Casimiro creo que Defcon1_es tiene una bola de cristal
¡¡¡Qué callado se lo tenía!!!
Responder Con Cita
  #7  
Antiguo 07-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 22
oscarac Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¡¡¡Qué callado se lo tenía!!!
y asi como jugando ya llegue a 1k
vaya... el tiempo si que pasa
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #8  
Antiguo 07-09-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.670
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por oscarac Ver Mensaje
y asi como jugando ya llegue a 1k
vaya... el tiempo si que pasa

Jejeje... mira aquí.
Responder Con Cita
  #9  
Antiguo 08-09-2011
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 23
defcon1_es Va por buen camino
Cita:
Empezado por oscarac Ver Mensaje
Casimiro creo que Defcon1_es tiene una bola de cristal
Si, pero cada día funciona menos...

Volviendo al tema:
No puedes hacer un NEXT de la query que usas para guardar los cambios, porque (sorprendentemente) no tiene registros que recorrer!!

Código Delphi [-]
while not(Q_GUARDAR1.Eof)do begin   
Q_GUARDAR_RESTO.CLOSE;   
Q_GUARDAR_RESTO.ParamByName('ParCODIGO').AsString:=DM.Q_DET_REMISION.FieldValues['CODIGO'];  
Q_GUARDAR_RESTO.ParamByName('ParCANTIDAD').AsFloat:=Q_GUARDAR1.FieldValues['CANTIDAD'];   
Q_GUARDAR_RESTO.ExecSQL;   
Q_GUARDAR1.Next;  //  Q_GUARDAR_RESTO.Next;  Tienes que recorrer la query Q_GUARDAR1, no la query Q_GUARDAR_RESTO
//  Q_GUARDAR_RESTO.open; 
end;
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #10  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 16
negrokau Va por buen camino
Talking

si, mirando otros hilos, me di cuenta de eso, lo cambie como esta y me actualiza solo el 1º registro, el 2º registro ya no actualiza.
Lo hice asi:
Código Delphi [-]
//////actualiza cantidad////////////////
Q_GUARDAR1.CLOSE;
Q_GUARDAR1.ParamByName('ParCOD_REMI').AsString:=DM.Q_DET_REMISION.FieldValues['COD_REMI'];
Q_GUARDAR1.ParamByName('ParCODIGO').AsString:=DM.Q_DET_REMISION.FieldValues['CODIGO'];
Q_GUARDAR1.Open;
Q_GUARDAR1.First; {este le agregue}
while not (Q_GUARDAR1.Eof) do
begin
Q_GUARDAR_RESTO.CLOSE;
Q_GUARDAR_RESTO.ParamByName('ParCODIGO').AsString:=Q_GUARDAR1.ParamByName('ParCODIGO').AsString;
Q_GUARDAR_RESTO.ParamByName('ParCANTIDAD').AsFloat:=Q_GUARDAR1.FieldValues['CANTIDAD'];
Q_GUARDAR_RESTO.ExecSQL;
Q_GUARDAR1.Next;  {este tambien lo agregue, como me sugeriste}
end;
Responder Con Cita
  #11  
Antiguo 08-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 22
oscarac Va por buen camino
aparentemente esta todo bien...
has depurado el programa (f7 u f8)?
has verificado la cantidad de registros de q_guardar1?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #12  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 16
negrokau Va por buen camino
Talking

Cita:
Empezado por defcon1_es Ver Mensaje
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;
yo segui este ejemplo, y como les vengo diciendo solo me actualiza el 1º registro, y como dice oscarac:

cuando cod_remi = 1 entonce tiene 4 registros...
entonces si deberia funcionar el bucle while not eof

me parece raro...
si tiene 4 registros entonces debe pasar 4 veces
estan bien a
sociados los datasource?
no sera que por ahi... tienes nu datasource en el grid que no es el correcto?



cod_remi =1 tiene 4 registro, quiero que me actualize esos 4 registros, ya se que muestra solo 1 registro como esta mas arriba, como puedo hacer que me actualize los 4 registro si es que esta mal lo que estoy haciendo?
Responder Con Cita
  #13  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 16
negrokau Va por buen camino
Talking

Cita:
Empezado por defcon1_es Ver Mensaje
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;
yo segui este ejemplo, y como les vengo diciendo solo me actualiza el 1º registro, y como dice oscarac:

cuando cod_remi = 1 entonce tiene 4 registros...
entonces si deberia funcionar el bucle while not eof

me parece raro...
si tiene 4 registros entonces debe pasar 4 veces
estan bien a
sociados los datasource?
no sera que por ahi... tienes nu datasource en el grid que no es el correcto?



cod_remi =1 tiene 4 registro, quiero que me actualize esos 4 registros,
ya se que muestra solo 1 registro como esta mas arriba, como puedo hacer
que me actualize los 4 registro si es que esta mal lo que estoy haciendo?

Última edición por negrokau fecha: 08-09-2011 a las 22:00:05.
Responder Con Cita
  #14  
Antiguo 08-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 22
oscarac Va por buen camino
lo que estas haciendo mal radica en tu primera consulta
Código Delphi [-]
SELECT CANTIDAD FROM DETALLE_FACTURAS WHERE (COD_FACT=:ParCOD_FACT) AND (CODIGO = :ParCODIGO)
aqui estas "capturando" la factura 1 con codigo 1
si nos fijamos en la tabla de datos que colocaste solo 1 registro cumple con la condicion el primero
los demas la cumplen solo cuando cod_fact = '1' y quitale el parametro CODIGO
__________________
Dulce Regalo que Satanas manda para mi.....

Última edición por oscarac fecha: 08-09-2011 a las 22:10:11.
Responder Con Cita
  #15  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 16
negrokau Va por buen camino
Talking

Cita:
Empezado por oscarac Ver Mensaje
lo que estas haciendo mal radica en tu primera consulta
Código Delphi [-]
SELECT CANTIDAD FROM DETALLE_FACTURAS WHERE (COD_FACT=:ParCOD_FACT) AND (CODIGO = :ParCODIGO)

aqui estas "capturando" la factura 1 con codigo 1
si nos fijamos en la tabla de datos que colocaste solo 1 registro cumple con la condicion el primero
los demas la cumplen solo cuando cod_fact = '1'
entiendo,y como soluciono para que "capture" la factura 1 con los demas codigos 2,3,4?
xq laidea es que recorra los 4 registros que tiene la factura 1
Responder Con Cita
  #16  
Antiguo 08-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 22
oscarac Va por buen camino
Cita:
Empezado por negrokau Ver Mensaje
entiendo,y como soluciono para que "capture" la factura 1 con los demas codigos 2,3,4?
xq laidea es que recorra los 4 registros que tiene la factura 1
negrokau
me parece que te estas volviendo automata.....
piensa un poquito...
en tu consulta estas jalando la FACTURA 1 y el CODIGO 1....
si queremos que solo jale la FACTURA 1... debemos........
piensa... piensa...
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #17  
Antiguo 08-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 22
oscarac Va por buen camino
vamos... vamos...
tu puedes......
una pista debemos modificar la consulta inicial
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #18  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 16
negrokau Va por buen camino
Talking

mmmmmm jajajajaja
Responder Con Cita
  #19  
Antiguo 08-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 22
oscarac Va por buen camino
Código Delphi [-]
procedure TF_FACTURACION.GUARDARClick(Sender: TObject);
begin
  DM.Q_FACTURACION.Post;
  DM.Transaction.CommitRetaining;
  DM.CONSULTA.CLOSE;
  DM.CONSULTA.ParamByName('ParCOD_FACT').AsString := COD_FACT.Text;
  DM.CONSULTA.Open;
  while not(DM.CONSULTA.Eof)do
  begin
    DM.CONSULTA2.CLOSE; 
    DM.CONSULTA2.ParamByName('ParCODIGO').AsString := DM.CONSULTA.FieldByName('CODIGO').AsFloat;
    DM.CONSULTA2.ParamByName('ParCANTIDAD').AsFloat := DM.CONSULTA.FieldByName('CANTIDAD').AsFloat;
    DM.CONSULTA2.ExecSQL;
    DM.CONSULTA.Next;
  end;
end;
quedaria mas o menos asi
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #20  
Antiguo 08-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 22
oscarac Va por buen camino
y te funciono o no?
nos comentas
__________________
Dulce Regalo que Satanas manda para mi.....
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
actualizar registros stand Conexión con bases de datos 2 29-07-2010 10:10:24
actualizar registros pabloloustau Conexión con bases de datos 3 19-06-2010 20:40:39
actualizar 100 registros al tiempo Camilo Varios 2 22-06-2007 19:08:29
Actualizar Registros drkvergil Firebird e Interbase 3 12-09-2006 18:33:54
Como actualizar toda una tabla con bastantes registros? IcebergDelphi Firebird e Interbase 4 16-12-2003 14:08:00


La franja horaria es GMT +2. Ahora son las 18:38:30.


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
Copyright 1996-2007 Club Delphi