Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-03-2008
Hell_Raiser Hell_Raiser is offline
Miembro
 
Registrado: jun 2004
Posts: 13
Poder: 0
Hell_Raiser Va por buen camino
Cita:
Empezado por schaka Ver Mensaje
Perdon pero a que te refires con componente, a mi query Zcompras?
Exacto tu query Zcompras lo estas usando para hacer una consulta y a partir de los datos que este te regresa lo recorres y modificas cada uno de sus registros, pero al usar el mismo query para realizar el update pierdes los datos de la consulta, para evitarlo debes usar otro query para el update. Creo que seria mas facil hacerlo con un solo update pasandole un string al query en donde formes los calculos qe deseas pero por el momento no tengo delphi en mi maquina para decirte exactamente como...
Responder Con Cita
  #2  
Antiguo 19-03-2008
schaka schaka is offline
Miembro
 
Registrado: feb 2008
Posts: 30
Poder: 0
schaka Va por buen camino
Muchisimas gracias a todos por su ayuda, ya he logrado solucionar mi problema, Saludos a todos , gracias nuevamante
Responder Con Cita
  #3  
Antiguo 19-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Aqui Hell_Raiser tiene razon, en parte.
Si haces una consulta y luego cierras el query los datos se perderan, salvo que los guardes en algun sitio, por eso te recomendo Hell_Raiser el uso de otro query.
Bien, si te empeñas en usar solo uno, entonces tienes que guardar los datos en algun sitio.
clave y costoac son datos sacados de la consulta, si la cierras los pierdes, entonces como recogerlos, pues con una variable.

Código Delphi [-]
Var
 Clave : String;
 costoac: Real;
begin
 //Zcompras.sql.Clear;  // mucho trabajo
 // Zcompras.Close;    // Mucho trabajo
  Zcompras.SQL.Text:= 'SELECT Cantidad, CostoF, Subtotal, CostoAc,Clave FROM compras ';
  Zcompras.open;

 //  if Zcompras.RecordCount<>0 then begin // para que, no se necesita
 //  Zcompras.First; // para que

  if( Edit3.Text<> '') then
  begin
 //While Not(Zcompras.Eof) do // nada
 // begin

  cantidad:=  Zcompras.Fields[0].AsInteger;
  precio:= Zcompras.Fields[1].AsFloat;
  sub:= Zcompras.Fields[2].AsFloat;
  anterior:= Zcompras.Fields[3].AsFloat;
  clave:=Zcompras.Fields[4].asString;
  distribuir:=strtofloat(Edit3.Text);
 porcentaje:=(Precio/Updatesub)*100;
 miparte:=(distribuir*porcentaje)/100;
 CostoNuevo:=miparte/cantidad;
 costoac:=trunc(anterior+CostoNuevo);

 //Zcompras.sql.Clear; // otra vez, mucho trabajo
 // Zcompras.Close;  // para nada
 Zcompras.SQL.Text:= ' update compras set CostoAc = :costoac WHERE Clave = :clave';
 Zcompras.ParamByName('costoac').AsFloat:= costoac;
 Zcompras.ParamByName('clave').AsFloat:= clave;
 Zcompras.ExecSQL;

 // Zcompras.Next;  // sobra
 // end;
end;
   end;
Revisalo, veras que hay mucho menos codigo y esta mas legible.
Ademas solo usas un query.
Saludos
Responder Con Cita
  #4  
Antiguo 19-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Esto me pasa por escribir rapido, hace falta un close:
Código Delphi [-]
Var
 Clave : String;
 costoac: Real;
begin
   Zcompras.SQL.Text:= 'SELECT Cantidad, CostoF, Subtotal, CostoAc,Clave FROM compras ';
  Zcompras.open;

  if( Edit3.Text<> '') then
  begin
  cantidad:=  Zcompras.Fields[0].AsInteger;
  precio:= Zcompras.Fields[1].AsFloat;
  sub:= Zcompras.Fields[2].AsFloat;
  anterior:= Zcompras.Fields[3].AsFloat;
  clave:=Zcompras.Fields[4].asString;
  distribuir:=strtofloat(Edit3.Text);
 porcentaje:=(Precio/Updatesub)*100;
 miparte:=(distribuir*porcentaje)/100;
 CostoNuevo:=miparte/cantidad;
 costoac:=trunc(anterior+CostoNuevo);

 Zcompras.Close;  
 Zcompras.SQL.Text:= ' update compras set CostoAc = :costoac WHERE Clave = :clave';
 Zcompras.ParamByName('costoac').AsFloat:= costoac;
 Zcompras.ParamByName('clave').AsFloat:= clave;
 Zcompras.ExecSQL;

end;
   end;
Saludos
Responder Con Cita
  #5  
Antiguo 20-03-2008
schaka schaka is offline
Miembro
 
Registrado: feb 2008
Posts: 30
Poder: 0
schaka Va por buen camino
Mushisimas gracias, cuidense , nos vemos, saludos
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
Seleccionar una fila de un DBGrid zvf Conexión con bases de datos 6 29-09-2006 02:28:54
Seleccionar una fila en un DBGRID erickperez6 Conexión con bases de datos 1 02-05-2004 16:49:34
seleccionar fila de un DBGrid empty Varios 1 31-03-2004 12:00:47
Seleccionar una fila de un dbgrid NuncaMas Conexión con bases de datos 3 22-01-2004 09:55:48
Seleccionar fila en rejilla... superhopi OOP 2 08-07-2003 19:02:46


La franja horaria es GMT +2. Ahora son las 11:56:49.


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