Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   problemas con el el .Edit: qryCONSULTA.Edit (https://www.clubdelphi.com/foros/showthread.php?t=22124)

McRose 07-06-2005 15:07:13

problemas con el el .Edit: qryCONSULTA.Edit
 
buenas, estoy teniendo un problema que no estoy pudiendo ubicar
Código Delphi [-]
{al comenzar el formulario hago esto:}
  dsCONSULTA.close;
  qyCONSULTA.SQL.Clear;
  qyCONSULTA.SQL.Add( 'SELECT * FROM PRODUCCION' );
  qyCONSULTA.SQL.Add( 'WHERE EMPRESA=0 ' );
  qyCONSULTA.SQL.Add( '          AND ID_REG=0 ' );
  qyCONSULTA.SQL.Add( '          AND BORRADO=0 ' );
  qyCONSULTA.SQL.Add( 'ORDER BY ' );
  qyCONSULTA.SQL.Add( '          EMPRESA' );
  qyCONSULTA.DataSet.Open;
  
{luego, en un ciclo, lo cargo de esta manera:}
  dsCONSULTA.DataSet.Append;
  dsCONSULTA.DataSet.FieldByName('EMPRESA').Value := pEmpresa;
  dsCONSULTA.DataSet.FieldByName('ID_REG').Value := pID_REG;
  dsCONSULTA.DataSet.FieldByName('ORDEN').Value := pOrden;
  dsCONSULTA.DataSet.FieldByName('ITEM').Value :=  pItem;
  dsCONSULTA.DataSet.FieldByName('A_UTILIZAR').Value := pAUtilizar;
  dsCONSULTA.DataSet.FieldByName('CANTIDAD').Value := 0;
  dsCONSULTA.DataSet.Post;
  
  
{después de hacer un control de entrada de la cantidad quiero hacer esto:}
  qyCONSULTA.Edit;
  dsCONSULTA.DataSet.Edit;
  dsCONSULTA.DataSet.First;
  while ( not dsCONSULTA.DataSet.Eof ) do begin
     if (dsCONSULTA.DataSet.FieldByName('CANTIDAD').AsFloat <= 0) then begin
                 porcentaje := CalculoPorcentaje;
                dsCONSULTA.DataSet.FieldByName('CANTIDAD').Value := porcentaje * pUtilizado;
              end;
              dsCONSULTA..DataSet.Next;
  end;
  dsCONSULTA.DataSet.Post;
  end;
pero me dice que la query no está en modo insert o edit.

pero como??? si ya le di el edit mas arriba ???

gracias

tcp_ip_es 07-06-2005 15:27:14

Entiendo que una query no se puede editar ¿¿??? pero bueno tu error en el código puede ser porque cada vez que avanzas en el dataset no editas el registro.
Debería ser asi:
Código Delphi [-]
// qyCONSULTA.Edit;
dsCONSULTA.DataSet.Edit;
dsCONSULTA.DataSet.First;
while ( not dsCONSULTA.DataSet.Eof ) do begin
if (dsCONSULTA.DataSet.FieldByName('CANTIDAD').AsFloat <= 0) then begin
porcentaje := CalculoPorcentaje;
dsConsulta.Dataset.Edit;
dsCONSULTA.DataSet.FieldByName('CANTIDAD').Value := porcentaje * pUtilizado;
dsCONSULTA.DataSet.Post;
end;
dsCONSULTA.DataSet.Next;
end;

end;

aunque por lo que veo podrías hacer ese proceso con una consulta de actualización....

Saludos, Tony

marcoszorrilla 07-06-2005 15:29:34

Código Delphi [-]
if (dsCONSULTA.DataSet.FieldByName('CANTIDAD').AsFloat <= 0) then begin
  dsConsulta.Edit
  porcentaje := CalculoPorcentaje;
  dsCONSULTA.DataSet.FieldByName('CANTIDAD').Value := porcentaje * pUtilizado;
  end;

Solamente ponla en modo edición si vas a reemplaza algo, las tres líneas anteriores que tienes con edit sobran.

La consulta es editable cuando no involucra más de una tabla, en cualqier caso puedes consultar la propiedad CanModify de la consulta para saber si es editable o no. no te olvides de poner RequestLive activado.

Un Saludo.

McRose 07-06-2005 15:46:39

perfecto, funciona de manera excelente

gracias


La franja horaria es GMT +2. Ahora son las 21:20:53.

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