Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 23-08-2021
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 947
Poder: 25
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Estimado Dexter182, le propongo esta opción.

La idea es crear una clase que se encarga de recuperar la información requerida del producto a través del código.

La clase se encarga de realizar la consulta y asignar los datos a sus propiedades. Como no indica que componentes de acceso a datos utiliza, asumo que son FireDac (TFDConnection, TFDQuery).

Por supuesto los puede cambiar por los que usa.

Código Delphi [-]
TProducto=Class
private
   FConexion:TFDConnection;
   fQry     :TFDQuery;
   fCod_Producto :string;
   fDesc_Producto:String;
   fPrecio       :Single;
public
   constructor Create(AConexion:TFDConnection);
   destructor Destroy;
   
   property Cod_Producto : integer read fCod_Producto write fCod_Producto;
   property Desc_Producto: String read fDesc_Producto write fDesc_Producto;
   property Precio       : single read fPrecio write fPrecio;
  
   function GetData(pCod_Producto):Boolean;
end;

implementation

constructor TProducto.Create(AConexion:TFDConnection);
begin
     fConexion:=AConexion;
     fqry := TFDQuery.Create(nil);
     fqry.Connection := fConexion;
end;

destructor TProducto.Destroy;
begin
     fqry.close;
     fqry.free;
     fConexion:=nil;
end;

function TProducto.GetData(pCod_Producto:String):Boolean;
begin
       try
          result:=false;
  
         fqry.Sql.Add('SELECT Cod_Producto, Desc_Producto, Precio ');
         fqry.Sql.Add('FROM Productos');
         fqry.Sql.Add('WHERE Cod_Producto = : pCod_Producto');
         fqry.Parameters.ParamByName('pCod_Producto').Value := pCod_Producto;
         fqry.Active:=true;
    
         result:=not fQry.IsEmty;
    
         if result then
         begin
         fCod_Producto :=fqry.FieldByName('Cod_Producto').AsString;
         fDesc_Producto:=fqry.FieldByName('Desc_Producto').AsString;
         fPrecio       :=fqry.FieldByName('Precio').AsSingle;
         end;
    
    finally
         fqry.close;
    end;
end;

....
Var
   Producto:TProducto; 
begin   
    Grid.Perform(WM_SETREDRAW, 0, 0);

  Try
           {Crea la clase y asigna la conexion a utilizar}
     Producto:=TProducto.Create(Conexion_A_DB);
     
    Repeat
      ParseRecord(Datos[i],Delimitador, Codigo_Articulo, Precio_Articulo);
    
                  {Llama al método GetData pasando el código, GetData retorna un Boolean, True: hay datos, false: No hay datos }
      If Producto.GetData(Codigo_Articulo) then //Si el artículo existe en la base de datos
    
      //Y si el precio anterior y el nuevo son diferentes
      If Producto.Precio <> StrToFloat(Precio_Articulo) then
      begin
      //Rellena el StringGrid con los datos de los artículos a modificar
      Grid.Cells[0, Grid.RowCount -1] := Producto.Cod_Producto;
      Grid.Cells[1, Grid.RowCount -1] := Producto.Desc_Producto;
      Grid.Cells[2, Grid.RowCount -1] := Producto.Precio;
      Grid.Cells[3, Grid.RowCount -1] := Precio_Articulo;
      
      //Si el precio nuevo es un número válido
      If (TryStrToFloat(Grid.Cells[3, Grid.RowCount -1], temp) = TRUE) then
         Grid.Cells[4, Grid.RowCount -1] := Format('%.2n',[((StrToFloat(Precio_Articulo) / Producto.Precio).AsFloat) - 1) * 100]);
      Grid.RowCount := Grid.RowCount + 1;
     end
    Else
      Omitidos := Omitidos + 1;

    i := i + 1;

    Until i > Datos.Count -1;

  Finally
    Producto.free;
    
    Grid.Perform(WM_SETREDRAW, 1, 0);
    Grid.Invalidate;
  end; {try}
end;

End.

Espero que esta sugerencia le sirva.

Saludos cordiales
Responder Con Cita
 


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
Ayuda con refactorización Dexter182 OOP 6 29-07-2021 14:27:27
Ayuda BD Access? Ayuda al modificar!! DarkArias Conexión con bases de datos 4 24-08-2013 23:47:41
Instalar Ayuda (.HLP) en la Ayuda de Delphi? MasterXP Varios 6 12-04-2006 06:57:49
Ayuda para crear ayuda... Gabriel2 Varios 2 10-06-2005 00:15:18
ayuda con strtofloat, ayuda punto flotante TURING Varios 5 30-04-2004 08:03:59


La franja horaria es GMT +2. Ahora son las 16:19:15.


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