Ver Mensaje Individual
  #1  
Antiguo 28-07-2021
Avatar de Dexter182
Dexter182 Dexter182 is offline
Miembro
 
Registrado: jul 2005
Ubicación: Argentina
Posts: 95
Reputación: 19
Dexter182 Va por buen camino
Ayuda con refactorización

Hola a todos!


Gracias a los sabios consejos que me dieron en este post: https://www.clubdelphi.com/foros/showthread.php?t=94720 comencé con mucho éxito la migración y refactorización de mi humilde sistema.
He avanzado mucho y el código está quedando mucho más legible y ordenado que antes.
Sin embargo, en algunas ocasiones me está costando bastante separar las consultas SQL de los forms.
Por ejemplo, un código como este:



Código Delphi [-]
Modulo.ADOCommand.CommandText := 'DELETE FROM Productos WHERE Cod_Producto = :pCodigo';
Modulo.ADOCommand.Parameters.ParamByName('pCodigo').Value := Edit_Codigo.Text;
Modulo.ADOCommand.Execute


Fue sencillo de separar con un simple procedimiento:

Código Delphi [-]
Modulo.EliminarArticulo(Edit_Codigo.Text);


Ahora bien, cuando necesito volcar los datos recibidos de la consulta en el form no se muy bien como hacerlo.
Por ejemplo, un código como este ¿cómo lo refactorizarían?
Código Delphi [-]
Modulo.Consulta.Active := FALSE;
Modulo.Consulta.SQL.Clear;
Modulo.Consulta.SQL.Add('SELECT Productos.*, Proveedores.Denominacion, Secciones.Desc_Seccion, '+
                               'Categorias.Desc_Categoria, IVA.Valor AS Valor_IVA '+
                        'FROM Productos, Proveedores, Categorias, Secciones, IVA '+
                        'WHERE (Cod_Producto = :pCodigo) AND '+
                              '(Productos.Cod_Proveedor = Proveedores.Cod_Proveedor) AND '+
                              '(Productos.Cod_Categoria = Categorias.Cod_Categoria) AND '+
                              '(Categorias.Cod_Seccion = Secciones.Cod_Seccion) AND '+
                              '(Productos.Porcentaje_IVA = IVA.Codigo)');
Modulo.Consulta.Parameters.ParamByName('pCodigo').Value := Edit_Codigo.Text;
Modulo.Consulta.Active := TRUE;

//Carga los campos con los datos de la tabla
With Modulo.Consulta do
  begin
    Edit_Descripcion.Text      := FieldByName('Desc_Producto').AsString;
    Edit_PreUnitario.Text      := FieldByName('Precio').AsString;
    ComboBox_IVA.Text          := FieldByName('Valor_IVA').AsString;
    Edit_Ganancia.Text         := FieldByName('Porcentaje_Ganancia').AsString;
    SpinEdit_Stock.Text        := FieldByName('Cant_Existente').AsString;
    SpinEdit_StockMinimo.Text  := FieldByName('Cant_Minima').AsString;
    SpinEdit_CantRep.Text      := FieldByName('Cant_Reposicion').AsString;
    ComboBox_Seccion.Text      := FieldByName('Desc_Seccion').AsString;
    ComboBox_Categoria.Text    := FieldByName('Desc_Categoria').AsString;
    ComboBox_Proveedor.Text    := FieldByName('Denominacion').AsString;
    Edit_CodProveedor.Text     := FieldByName('Cod_Producto_Proveedor').AsString;
    SpinEdit_UniProveedor.Text := FieldByName('Unidad_Proveedor').AsString;
    Edit_CodBarras.Text        := FieldByName('Cod_Barras').AsString;
  end;


Saludos!

Última edición por ecfisa fecha: 28-07-2021 a las 05:50:09. Razón: Quitar emoticones del código
Responder Con Cita