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 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
  #2  
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
  #3  
Antiguo 07-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 23
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
  #4  
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
  #5  
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.714
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
  #6  
Antiguo 08-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 23
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
  #7  
Antiguo 08-09-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.714
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
  #8  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 16
negrokau Va por buen camino
Talking

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
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: 23
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

q_guardar1 solo guardar la cantidad, pero solo del 1º registro, lo comprobe con un dbgrid, y siempre cuando le doy guardar solo la cantidad del 1º registro guardar
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?
Responder Con Cita
  #14  
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 23:00:05.
Responder Con Cita
  #15  
Antiguo 08-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 23
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 23:10:11.
Responder Con Cita
  #16  
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
  #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: 23
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
  #18  
Antiguo 08-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 23
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
  #19  
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
  #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: 23
oscarac Va por buen camino
quitale el parametro de Codigo
has que la consulta solo jale la factura buscada con todos sus registros
__________________
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 11:10:24
actualizar registros pabloloustau Conexión con bases de datos 3 19-06-2010 21:40:39
actualizar 100 registros al tiempo Camilo Varios 2 22-06-2007 20:08:29
Actualizar Registros drkvergil Firebird e Interbase 3 12-09-2006 19:33:54
Como actualizar toda una tabla con bastantes registros? IcebergDelphi Firebird e Interbase 4 16-12-2003 15:08:00


La franja horaria es GMT +2. Ahora son las 13:31:27.


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