Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 14
negrokau Va por buen camino
Talking

que puedo hacer? cuando llega a:
Código Delphi [-]
procedure TF_REMISION.GUARDARClick(Sender: TObject);
begin
DM.Q_REMISION.Post;
DM.Transaction.CommitRetaining;
////////////////////////////////////////
//////actualiza cantidad////////////////
Q_GUARDAR1.CLOSE;
Q_GUARDAR1.ParamByName('ParCOD_REMI').AsString:=COD_REMI.Text;
Q_GUARDAR1.ParamByName('ParCODIGO').AsString:=DM.Q_DET_REMISION.FieldValues['CODIGO'];
Q_GUARDAR1.Open;
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_GUARDAR_RESTO.Next;
end;
me salta el mensaje
Q_GUARDAR_RESTO:CANNOT PERFORM THIS OPERATION ON A CLOSED DATASET
alguna sugerencia?
Responder Con Cita
  #22  
Antiguo 08-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Post

Es por lo que te ha dicho oscarac, está cerrado, así que tendrás que abrirlo.
Código Delphi [-]
procedure TF_REMISION.GUARDARClick(Sender: TObject); begin
  DM.Q_REMISION.Open;
  ...
  etc...
Responder Con Cita
  #23  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 14
negrokau Va por buen camino
Talking

lo probe, como me sugeriste, pero lo mismo pasa, inclusive hice asi:
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_GUARDAR_RESTO.Next;
Q_GUARDAR_RESTO.open;
end;
lo marque con F5 paraver paso a paso el proceso y ahi ya no para mas
Responder Con Cita
  #24  
Antiguo 08-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tendría que ver todo el código para visualizar como lo haces, pero por lo poco que veo, el problema estará en otro lado.
¿Cuando llega a ese procedure está abierto el query?, pon un punto de ruptura y lo compruebas.
Responder Con Cita
  #25  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 14
negrokau Va por buen camino
Talking

el query esta abierto desde el formactivate, lo con un punto de ruptura y cuando llega a:
Código Delphi [-]
Q_GUARDAR_RESTO.Next;
me salta el error, lo probe asi:
Código Delphi [-]
Q_GUARDAR_RESTO.open;
Q_GUARDAR_RESTO.Next;
y hace un bucle infinito

Última edición por negrokau fecha: 08-09-2011 a las 01:16:20.
Responder Con Cita
  #26  
Antiguo 08-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Acaso usas ese query en otro sitio o para otra cosa que no sea guardar?
Pon el código fuente!!!
Responder Con Cita
  #27  
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: 21
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
  #28  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 14
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
  #29  
Antiguo 08-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
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
  #30  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 14
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
  #31  
Antiguo 08-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por negrokau Ver Mensaje
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
disculpame,... pero aun no tmom mi cafe cargado para despertar,,,,
no entendi....

cuantos registros tiene q_Guardar1 ??? tiene 1? 2> 100? 1000?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #32  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 14
negrokau Va por buen camino
Q_GUARDAR_RESTO solo actualiza, funciona, actualiza
solo que actualiza el 1º registro, si tengo mas de 1 registro solo actualiza el 1º, el resto ya no, es como si el bucle no funcionara, no pasa al siguiente registro
Código Delphi [-]
Q_GUARDAR1.next;
Responder Con Cita
  #33  
Antiguo 08-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Amigo mio, eso no funciona así... o no he entendido nada hasta ahora.
Ahora vuelvo...
Responder Con Cita
  #34  
Antiguo 08-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
ok vamos a trabajar como descartes

coloca como comentario las lineas donde Actualiza y fijate si el q_Guardar1 recorre todos los registros que tiene
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; 
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;
end;

prueba y comentas
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #35  
Antiguo 08-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que casi es mejor un control remoto al ordenador de negrokau
Responder Con Cita
  #36  
Antiguo 08-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Teamviewer o Logmein...

oye casimiro....
eso no seria una mala idea....
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #37  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 14
negrokau Va por buen camino
Talking

Cita:
Empezado por oscarac Ver Mensaje
ok vamos a trabajar como descartes

coloca como comentario las lineas donde Actualiza y fijate si el q_Guardar1 recorre todos los registros que tiene
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;  
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; 
end;
prueba y comentas
si tiene 3 registros, debe recorrer 3 veces verdad?, Lo probe con f7 y solo lo recorre una vez...
Responder Con Cita
  #38  
Antiguo 08-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por negrokau Ver Mensaje
si tiene 3 registros, debe recorrer 3 veces verdad?, Lo probe con f7 y solo lo recorre una vez...
¿Podemos ver el select que estás ejecutando?, porque lo único que queda son esas dos cosas, esa y que no tengas 3 registros, sólo 1.
Responder Con Cita
  #39  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 14
negrokau Va por buen camino
Talking

Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Podemos ver el select que estás ejecutando?, porque lo único que queda son esas dos cosas, esa y que no tengas 3 registros, sólo 1.
este es el select del query:
Código SQL [-]
select CANTIDAD from DETALLE_REMISION WHERE (COD_REMI=:ParCOD_REMI) AND (CODIGO = :ParCODIGO)
es el select de Q_GUARDAR1
Responder Con Cita
  #40  
Antiguo 08-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Vale, ¿y qué parámetros le pasas para probarlo?

:ParCOD_REMI = ??????
:ParCODIGO = ??????

¿Y qué registros tienes en la tabla?
Responder Con Cita
Respuesta



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 22:58:33.


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